{ "id": "4904bce280be9ee373c2755e7359b1c3", "_format": "hh-sol-build-info-1", "solcVersion": "0.8.13", "solcLongVersion": "0.8.13+commit.abaa5c0e", "input": { "language": "Solidity", "sources": { "contracts/Inheritance.sol": { "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.13;\n\n/* \n\n- Function that is going to be overridden by a child contract must be declared as virtual\n- Function that is going to override a parent function must use the keyword override\n- Order of inheritance is important\n- You have to list the parent contracts in the order from “most base-like” to “most derived”\n\nGraph of inheritance\n A\n / \\\n B C\n / \\ /\nF D,E\n\n*/\n\ncontract A {\n function foo() public pure virtual returns (string memory) {\n return \"A\";\n }\n}\n\n// Contracts inherit other contracts by using the keyword 'is'.\ncontract B is A {\n // Override A.foo()\n function foo() public pure virtual override returns (string memory) {\n return \"B\";\n }\n}\n\ncontract C is A {\n // Override A.foo()\n function foo() public pure virtual override returns (string memory) {\n return \"C\";\n }\n}\n\n// Contracts can inherit from multiple parent contracts.\n// When a function is called that is defined multiple times in\n// different contracts, parent contracts are searched from\n// right to left, and in depth-first manner.\n\ncontract D is B, C {\n // D.foo() returns \"C\"\n function foo() public pure override(B, C) returns (string memory) {\n return super.foo();\n }\n}\n\ncontract E is C, B {\n // E.foo() returns \"B\"\n function foo() public pure override(C, B) returns (string memory) {\n return super.foo();\n }\n}\n\n// Inheritance must be ordered from “most base-like” to “most derived”.\n// Swapping the order of A and B will throw a compilation error.\ncontract F is A, B {\n function foo() public pure override(A, B) returns (string memory) {\n return super.foo();\n }\n}" } }, "settings": { "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "": [ "ast" ], "*": [ "abi", "metadata", "devdoc", "userdoc", "storageLayout", "evm.legacyAssembly", "evm.bytecode", "evm.deployedBytecode", "evm.methodIdentifiers", "evm.gasEstimates", "evm.assembly" ] } } } }, "output": { "contracts": { "contracts/Inheritance.sol": { "A": { "abi": [ { "inputs": [], "name": "foo", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "pure", "type": "function" } ], "devdoc": { "kind": "dev", "methods": {}, "version": 1 }, "evm": { "assembly": " /* \"contracts/Inheritance.sol\":437:542 contract A {... */\n mstore(0x40, 0x80)\n callvalue\n dup1\n iszero\n tag_1\n jumpi\n 0x00\n dup1\n revert\ntag_1:\n pop\n dataSize(sub_0)\n dup1\n dataOffset(sub_0)\n 0x00\n codecopy\n 0x00\n return\nstop\n\nsub_0: assembly {\n /* \"contracts/Inheritance.sol\":437:542 contract A {... */\n mstore(0x40, 0x80)\n callvalue\n dup1\n iszero\n tag_1\n jumpi\n 0x00\n dup1\n revert\n tag_1:\n pop\n jumpi(tag_2, lt(calldatasize, 0x04))\n shr(0xe0, calldataload(0x00))\n dup1\n 0xc2985578\n eq\n tag_3\n jumpi\n tag_2:\n 0x00\n dup1\n revert\n /* \"contracts/Inheritance.sol\":454:540 function foo() public pure virtual returns (string memory) {... */\n tag_3:\n /* \"contracts/Inheritance.sol\":523:533 return \"A\" */\n 0x40\n dup1\n mload\n dup1\n dup3\n add\n dup3\n mstore\n 0x01\n dup2\n mstore\n shl(0xf8, 0x41)\n 0x20\n dup3\n add\n mstore\n /* \"contracts/Inheritance.sol\":454:540 function foo() public pure virtual returns (string memory) {... */\n swap1\n mload\n tag_6\n swap2\n /* \"contracts/Inheritance.sol\":523:533 return \"A\" */\n swap1\n /* \"contracts/Inheritance.sol\":454:540 function foo() public pure virtual returns (string memory) {... */\n tag_7\n jump\t// in\n tag_6:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"#utility.yul\":14:611 */\n tag_7:\n /* \"#utility.yul\":126:130 */\n 0x00\n /* \"#utility.yul\":155:157 */\n 0x20\n /* \"#utility.yul\":184:186 */\n dup1\n /* \"#utility.yul\":173:182 */\n dup4\n /* \"#utility.yul\":166:187 */\n mstore\n /* \"#utility.yul\":216:222 */\n dup4\n /* \"#utility.yul\":210:223 */\n mload\n /* \"#utility.yul\":259:265 */\n dup1\n /* \"#utility.yul\":254:256 */\n dup3\n /* \"#utility.yul\":243:252 */\n dup6\n /* \"#utility.yul\":239:257 */\n add\n /* \"#utility.yul\":232:266 */\n mstore\n /* \"#utility.yul\":284:285 */\n 0x00\n /* \"#utility.yul\":294:434 */\n tag_11:\n /* \"#utility.yul\":308:314 */\n dup2\n /* \"#utility.yul\":305:306 */\n dup2\n /* \"#utility.yul\":302:315 */\n lt\n /* \"#utility.yul\":294:434 */\n iszero\n tag_13\n jumpi\n /* \"#utility.yul\":403:417 */\n dup6\n dup2\n add\n /* \"#utility.yul\":399:422 */\n dup4\n add\n /* \"#utility.yul\":393:423 */\n mload\n /* \"#utility.yul\":369:386 */\n dup6\n dup3\n add\n /* \"#utility.yul\":388:390 */\n 0x40\n /* \"#utility.yul\":365:391 */\n add\n /* \"#utility.yul\":358:424 */\n mstore\n /* \"#utility.yul\":323:333 */\n dup3\n add\n /* \"#utility.yul\":294:434 */\n jump(tag_11)\n tag_13:\n /* \"#utility.yul\":452:458 */\n dup2\n /* \"#utility.yul\":449:450 */\n dup2\n /* \"#utility.yul\":446:459 */\n gt\n /* \"#utility.yul\":443:534 */\n iszero\n tag_14\n jumpi\n /* \"#utility.yul\":522:523 */\n 0x00\n /* \"#utility.yul\":517:519 */\n 0x40\n /* \"#utility.yul\":508:514 */\n dup4\n /* \"#utility.yul\":497:506 */\n dup8\n /* \"#utility.yul\":493:515 */\n add\n /* \"#utility.yul\":489:520 */\n add\n /* \"#utility.yul\":482:524 */\n mstore\n /* \"#utility.yul\":443:534 */\n tag_14:\n pop\n /* \"#utility.yul\":595:597 */\n 0x1f\n /* \"#utility.yul\":574:589 */\n add\n not(0x1f)\n /* \"#utility.yul\":570:599 */\n and\n /* \"#utility.yul\":555:600 */\n swap3\n swap1\n swap3\n add\n /* \"#utility.yul\":602:604 */\n 0x40\n /* \"#utility.yul\":551:605 */\n add\n swap4\n /* \"#utility.yul\":14:611 */\n swap3\n pop\n pop\n pop\n jump\t// out\n\n auxdata: 0xa2646970667358221220b7b6b9a0b6c59b18bb3f91752876fc41bed7f8384ee298871baf1b4788a06c6364736f6c634300080d0033\n}\n", "bytecode": { "functionDebugData": {}, "generatedSources": [], "linkReferences": {}, "object": "608060405234801561001057600080fd5b5060df8061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b60408051808201825260018152604160f81b60208201529051604e91906057565b60405180910390f35b600060208083528351808285015260005b818110156082578581018301518582016040015282016068565b818111156093576000604083870101525b50601f01601f191692909201604001939250505056fea2646970667358221220b7b6b9a0b6c59b18bb3f91752876fc41bed7f8384ee298871baf1b4788a06c6364736f6c634300080d0033", "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xDF DUP1 PUSH2 0x1F 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 0xC2985578 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x41 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x4E SWAP2 SWAP1 PUSH1 0x57 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH1 0x82 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH1 0x68 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH1 0x93 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB7 0xB6 0xB9 LOG0 0xB6 0xC5 SWAP12 XOR 0xBB EXTCODEHASH SWAP2 PUSH22 0x2876FC41BED7F8384EE298871BAF1B4788A06C636473 PUSH16 0x6C634300080D00330000000000000000 ", "sourceMap": "437:105:0:-:0;;;;;;;;;;;;;;;;;;;" }, "deployedBytecode": { "functionDebugData": { "@foo_9": { "entryPoint": null, "id": 9, "parameterSlots": 0, "returnSlots": 1 }, "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": { "entryPoint": 87, "id": null, "parameterSlots": 2, "returnSlots": 1 } }, "generatedSources": [ { "ast": { "nodeType": "YulBlock", "src": "0:613:1", "statements": [ { "nodeType": "YulBlock", "src": "6:3:1", "statements": [] }, { "body": { "nodeType": "YulBlock", "src": "135:476:1", "statements": [ { "nodeType": "YulVariableDeclaration", "src": "145:12:1", "value": { "kind": "number", "nodeType": "YulLiteral", "src": "155:2:1", "type": "", "value": "32" }, "variables": [ { "name": "_1", "nodeType": "YulTypedName", "src": "149:2:1", "type": "" } ] }, { "expression": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "173:9:1" }, { "name": "_1", "nodeType": "YulIdentifier", "src": "184:2:1" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "166:6:1" }, "nodeType": "YulFunctionCall", "src": "166:21:1" }, "nodeType": "YulExpressionStatement", "src": "166:21:1" }, { "nodeType": "YulVariableDeclaration", "src": "196:27:1", "value": { "arguments": [ { "name": "value0", "nodeType": "YulIdentifier", "src": "216:6:1" } ], "functionName": { "name": "mload", "nodeType": "YulIdentifier", "src": "210:5:1" }, "nodeType": "YulFunctionCall", "src": "210:13:1" }, "variables": [ { "name": "length", "nodeType": "YulTypedName", "src": "200:6:1", "type": "" } ] }, { "expression": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "243:9:1" }, { "name": "_1", "nodeType": "YulIdentifier", "src": "254:2:1" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "239:3:1" }, "nodeType": "YulFunctionCall", "src": "239:18:1" }, { "name": "length", "nodeType": "YulIdentifier", "src": "259:6:1" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "232:6:1" }, "nodeType": "YulFunctionCall", "src": "232:34:1" }, "nodeType": "YulExpressionStatement", "src": "232:34:1" }, { "nodeType": "YulVariableDeclaration", "src": "275:10:1", "value": { "kind": "number", "nodeType": "YulLiteral", "src": "284:1:1", "type": "", "value": "0" }, "variables": [ { "name": "i", "nodeType": "YulTypedName", "src": "279:1:1", "type": "" } ] }, { "body": { "nodeType": "YulBlock", "src": "344:90:1", "statements": [ { "expression": { "arguments": [ { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "373:9:1" }, { "name": "i", "nodeType": "YulIdentifier", "src": "384:1:1" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "369:3:1" }, "nodeType": "YulFunctionCall", "src": "369:17:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "388:2:1", "type": "", "value": "64" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "365:3:1" }, "nodeType": "YulFunctionCall", "src": "365:26:1" }, { "arguments": [ { "arguments": [ { "arguments": [ { "name": "value0", "nodeType": "YulIdentifier", "src": "407:6:1" }, { "name": "i", "nodeType": "YulIdentifier", "src": "415:1:1" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "403:3:1" }, "nodeType": "YulFunctionCall", "src": "403:14:1" }, { "name": "_1", "nodeType": "YulIdentifier", "src": "419:2:1" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "399:3:1" }, "nodeType": "YulFunctionCall", "src": "399:23:1" } ], "functionName": { "name": "mload", "nodeType": "YulIdentifier", "src": "393:5:1" }, "nodeType": "YulFunctionCall", "src": "393:30:1" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "358:6:1" }, "nodeType": "YulFunctionCall", "src": "358:66:1" }, "nodeType": "YulExpressionStatement", "src": "358:66:1" } ] }, "condition": { "arguments": [ { "name": "i", "nodeType": "YulIdentifier", "src": "305:1:1" }, { "name": "length", "nodeType": "YulIdentifier", "src": "308:6:1" } ], "functionName": { "name": "lt", "nodeType": "YulIdentifier", "src": "302:2:1" }, "nodeType": "YulFunctionCall", "src": "302:13:1" }, "nodeType": "YulForLoop", "post": { "nodeType": "YulBlock", "src": "316:19:1", "statements": [ { "nodeType": "YulAssignment", "src": "318:15:1", "value": { "arguments": [ { "name": "i", "nodeType": "YulIdentifier", "src": "327:1:1" }, { "name": "_1", "nodeType": "YulIdentifier", "src": "330:2:1" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "323:3:1" }, "nodeType": "YulFunctionCall", "src": "323:10:1" }, "variableNames": [ { "name": "i", "nodeType": "YulIdentifier", "src": "318:1:1" } ] } ] }, "pre": { "nodeType": "YulBlock", "src": "298:3:1", "statements": [] }, "src": "294:140:1" }, { "body": { "nodeType": "YulBlock", "src": "468:66:1", "statements": [ { "expression": { "arguments": [ { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "497:9:1" }, { "name": "length", "nodeType": "YulIdentifier", "src": "508:6:1" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "493:3:1" }, "nodeType": "YulFunctionCall", "src": "493:22:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "517:2:1", "type": "", "value": "64" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "489:3:1" }, "nodeType": "YulFunctionCall", "src": "489:31:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "522:1:1", "type": "", "value": "0" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "482:6:1" }, "nodeType": "YulFunctionCall", "src": "482:42:1" }, "nodeType": "YulExpressionStatement", "src": "482:42:1" } ] }, "condition": { "arguments": [ { "name": "i", "nodeType": "YulIdentifier", "src": "449:1:1" }, { "name": "length", "nodeType": "YulIdentifier", "src": "452:6:1" } ], "functionName": { "name": "gt", "nodeType": "YulIdentifier", "src": "446:2:1" }, "nodeType": "YulFunctionCall", "src": "446:13:1" }, "nodeType": "YulIf", "src": "443:91:1" }, { "nodeType": "YulAssignment", "src": "543:62:1", "value": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "559:9:1" }, { "arguments": [ { "arguments": [ { "name": "length", "nodeType": "YulIdentifier", "src": "578:6:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "586:2:1", "type": "", "value": "31" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "574:3:1" }, "nodeType": "YulFunctionCall", "src": "574:15:1" }, { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "595:2:1", "type": "", "value": "31" } ], "functionName": { "name": "not", "nodeType": "YulIdentifier", "src": "591:3:1" }, "nodeType": "YulFunctionCall", "src": "591:7:1" } ], "functionName": { "name": "and", "nodeType": "YulIdentifier", "src": "570:3:1" }, "nodeType": "YulFunctionCall", "src": "570:29:1" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "555:3:1" }, "nodeType": "YulFunctionCall", "src": "555:45:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "602:2:1", "type": "", "value": "64" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "551:3:1" }, "nodeType": "YulFunctionCall", "src": "551:54:1" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", "src": "543:4:1" } ] } ] }, "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:1", "type": "" }, { "name": "value0", "nodeType": "YulTypedName", "src": "115:6:1", "type": "" } ], "returnVariables": [ { "name": "tail", "nodeType": "YulTypedName", "src": "126:4:1", "type": "" } ], "src": "14:597:1" } ] }, "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), not(31))), 64)\n }\n}", "id": 1, "language": "Yul", "name": "#utility.yul" } ], "immutableReferences": {}, "linkReferences": {}, "object": "6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b60408051808201825260018152604160f81b60208201529051604e91906057565b60405180910390f35b600060208083528351808285015260005b818110156082578581018301518582016040015282016068565b818111156093576000604083870101525b50601f01601f191692909201604001939250505056fea2646970667358221220b7b6b9a0b6c59b18bb3f91752876fc41bed7f8384ee298871baf1b4788a06c6364736f6c634300080d0033", "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 0xC2985578 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x41 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x4E SWAP2 SWAP1 PUSH1 0x57 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH1 0x82 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH1 0x68 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH1 0x93 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB7 0xB6 0xB9 LOG0 0xB6 0xC5 SWAP12 XOR 0xBB EXTCODEHASH SWAP2 PUSH22 0x2876FC41BED7F8384EE298871BAF1B4788A06C636473 PUSH16 0x6C634300080D00330000000000000000 ", "sourceMap": "437:105:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;454:86;523:10;;;;;;;;;;;-1:-1:-1;;;523:10:0;;;;454:86;;;;523:10;454:86;:::i;:::-;;;;;;;;14:597:1;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;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o" }, "gasEstimates": { "creation": { "codeDepositCost": "44600", "executionCost": "93", "totalCost": "44693" }, "external": { "foo()": "infinite" } }, "legacyAssembly": { ".code": [ { "begin": 437, "end": 542, "name": "PUSH", "source": 0, "value": "80" }, { "begin": 437, "end": 542, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 437, "end": 542, "name": "MSTORE", "source": 0 }, { "begin": 437, "end": 542, "name": "CALLVALUE", "source": 0 }, { "begin": 437, "end": 542, "name": "DUP1", "source": 0 }, { "begin": 437, "end": 542, "name": "ISZERO", "source": 0 }, { "begin": 437, "end": 542, "name": "PUSH [tag]", "source": 0, "value": "1" }, { "begin": 437, "end": 542, "name": "JUMPI", "source": 0 }, { "begin": 437, "end": 542, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 437, "end": 542, "name": "DUP1", "source": 0 }, { "begin": 437, "end": 542, "name": "REVERT", "source": 0 }, { "begin": 437, "end": 542, "name": "tag", "source": 0, "value": "1" }, { "begin": 437, "end": 542, "name": "JUMPDEST", "source": 0 }, { "begin": 437, "end": 542, "name": "POP", "source": 0 }, { "begin": 437, "end": 542, "name": "PUSH #[$]", "source": 0, "value": "0000000000000000000000000000000000000000000000000000000000000000" }, { "begin": 437, "end": 542, "name": "DUP1", "source": 0 }, { "begin": 437, "end": 542, "name": "PUSH [$]", "source": 0, "value": "0000000000000000000000000000000000000000000000000000000000000000" }, { "begin": 437, "end": 542, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 437, "end": 542, "name": "CODECOPY", "source": 0 }, { "begin": 437, "end": 542, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 437, "end": 542, "name": "RETURN", "source": 0 } ], ".data": { "0": { ".auxdata": "a2646970667358221220b7b6b9a0b6c59b18bb3f91752876fc41bed7f8384ee298871baf1b4788a06c6364736f6c634300080d0033", ".code": [ { "begin": 437, "end": 542, "name": "PUSH", "source": 0, "value": "80" }, { "begin": 437, "end": 542, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 437, "end": 542, "name": "MSTORE", "source": 0 }, { "begin": 437, "end": 542, "name": "CALLVALUE", "source": 0 }, { "begin": 437, "end": 542, "name": "DUP1", "source": 0 }, { "begin": 437, "end": 542, "name": "ISZERO", "source": 0 }, { "begin": 437, "end": 542, "name": "PUSH [tag]", "source": 0, "value": "1" }, { "begin": 437, "end": 542, "name": "JUMPI", "source": 0 }, { "begin": 437, "end": 542, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 437, "end": 542, "name": "DUP1", "source": 0 }, { "begin": 437, "end": 542, "name": "REVERT", "source": 0 }, { "begin": 437, "end": 542, "name": "tag", "source": 0, "value": "1" }, { "begin": 437, "end": 542, "name": "JUMPDEST", "source": 0 }, { "begin": 437, "end": 542, "name": "POP", "source": 0 }, { "begin": 437, "end": 542, "name": "PUSH", "source": 0, "value": "4" }, { "begin": 437, "end": 542, "name": "CALLDATASIZE", "source": 0 }, { "begin": 437, "end": 542, "name": "LT", "source": 0 }, { "begin": 437, "end": 542, "name": "PUSH [tag]", "source": 0, "value": "2" }, { "begin": 437, "end": 542, "name": "JUMPI", "source": 0 }, { "begin": 437, "end": 542, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 437, "end": 542, "name": "CALLDATALOAD", "source": 0 }, { "begin": 437, "end": 542, "name": "PUSH", "source": 0, "value": "E0" }, { "begin": 437, "end": 542, "name": "SHR", "source": 0 }, { "begin": 437, "end": 542, "name": "DUP1", "source": 0 }, { "begin": 437, "end": 542, "name": "PUSH", "source": 0, "value": "C2985578" }, { "begin": 437, "end": 542, "name": "EQ", "source": 0 }, { "begin": 437, "end": 542, "name": "PUSH [tag]", "source": 0, "value": "3" }, { "begin": 437, "end": 542, "name": "JUMPI", "source": 0 }, { "begin": 437, "end": 542, "name": "tag", "source": 0, "value": "2" }, { "begin": 437, "end": 542, "name": "JUMPDEST", "source": 0 }, { "begin": 437, "end": 542, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 437, "end": 542, "name": "DUP1", "source": 0 }, { "begin": 437, "end": 542, "name": "REVERT", "source": 0 }, { "begin": 454, "end": 540, "name": "tag", "source": 0, "value": "3" }, { "begin": 454, "end": 540, "name": "JUMPDEST", "source": 0 }, { "begin": 523, "end": 533, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 523, "end": 533, "name": "DUP1", "source": 0 }, { "begin": 523, "end": 533, "name": "MLOAD", "source": 0 }, { "begin": 523, "end": 533, "name": "DUP1", "source": 0 }, { "begin": 523, "end": 533, "name": "DUP3", "source": 0 }, { "begin": 523, "end": 533, "name": "ADD", "source": 0 }, { "begin": 523, "end": 533, "name": "DUP3", "source": 0 }, { "begin": 523, "end": 533, "name": "MSTORE", "source": 0 }, { "begin": 523, "end": 533, "name": "PUSH", "source": 0, "value": "1" }, { "begin": 523, "end": 533, "name": "DUP2", "source": 0 }, { "begin": 523, "end": 533, "name": "MSTORE", "source": 0 }, { "begin": -1, "end": -1, "name": "PUSH", "source": -1, "value": "41" }, { "begin": -1, "end": -1, "name": "PUSH", "source": -1, "value": "F8" }, { "begin": -1, "end": -1, "name": "SHL", "source": -1 }, { "begin": 523, "end": 533, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 523, "end": 533, "name": "DUP3", "source": 0 }, { "begin": 523, "end": 533, "name": "ADD", "source": 0 }, { "begin": 523, "end": 533, "name": "MSTORE", "source": 0 }, { "begin": 454, "end": 540, "name": "SWAP1", "source": 0 }, { "begin": 454, "end": 540, "name": "MLOAD", "source": 0 }, { "begin": 454, "end": 540, "name": "PUSH [tag]", "source": 0, "value": "6" }, { "begin": 454, "end": 540, "name": "SWAP2", "source": 0 }, { "begin": 523, "end": 533, "name": "SWAP1", "source": 0 }, { "begin": 454, "end": 540, "name": "PUSH [tag]", "source": 0, "value": "7" }, { "begin": 454, "end": 540, "name": "JUMP", "source": 0, "value": "[in]" }, { "begin": 454, "end": 540, "name": "tag", "source": 0, "value": "6" }, { "begin": 454, "end": 540, "name": "JUMPDEST", "source": 0 }, { "begin": 454, "end": 540, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 454, "end": 540, "name": "MLOAD", "source": 0 }, { "begin": 454, "end": 540, "name": "DUP1", "source": 0 }, { "begin": 454, "end": 540, "name": "SWAP2", "source": 0 }, { "begin": 454, "end": 540, "name": "SUB", "source": 0 }, { "begin": 454, "end": 540, "name": "SWAP1", "source": 0 }, { "begin": 454, "end": 540, "name": "RETURN", "source": 0 }, { "begin": 14, "end": 611, "name": "tag", "source": 1, "value": "7" }, { "begin": 14, "end": 611, "name": "JUMPDEST", "source": 1 }, { "begin": 126, "end": 130, "name": "PUSH", "source": 1, "value": "0" }, { "begin": 155, "end": 157, "name": "PUSH", "source": 1, "value": "20" }, { "begin": 184, "end": 186, "name": "DUP1", "source": 1 }, { "begin": 173, "end": 182, "name": "DUP4", "source": 1 }, { "begin": 166, "end": 187, "name": "MSTORE", "source": 1 }, { "begin": 216, "end": 222, "name": "DUP4", "source": 1 }, { "begin": 210, "end": 223, "name": "MLOAD", "source": 1 }, { "begin": 259, "end": 265, "name": "DUP1", "source": 1 }, { "begin": 254, "end": 256, "name": "DUP3", "source": 1 }, { "begin": 243, "end": 252, "name": "DUP6", "source": 1 }, { "begin": 239, "end": 257, "name": "ADD", "source": 1 }, { "begin": 232, "end": 266, "name": "MSTORE", "source": 1 }, { "begin": 284, "end": 285, "name": "PUSH", "source": 1, "value": "0" }, { "begin": 294, "end": 434, "name": "tag", "source": 1, "value": "11" }, { "begin": 294, "end": 434, "name": "JUMPDEST", "source": 1 }, { "begin": 308, "end": 314, "name": "DUP2", "source": 1 }, { "begin": 305, "end": 306, "name": "DUP2", "source": 1 }, { "begin": 302, "end": 315, "name": "LT", "source": 1 }, { "begin": 294, "end": 434, "name": "ISZERO", "source": 1 }, { "begin": 294, "end": 434, "name": "PUSH [tag]", "source": 1, "value": "13" }, { "begin": 294, "end": 434, "name": "JUMPI", "source": 1 }, { "begin": 403, "end": 417, "name": "DUP6", "source": 1 }, { "begin": 403, "end": 417, "name": "DUP2", "source": 1 }, { "begin": 403, "end": 417, "name": "ADD", "source": 1 }, { "begin": 399, "end": 422, "name": "DUP4", "source": 1 }, { "begin": 399, "end": 422, "name": "ADD", "source": 1 }, { "begin": 393, "end": 423, "name": "MLOAD", "source": 1 }, { "begin": 369, "end": 386, "name": "DUP6", "source": 1 }, { "begin": 369, "end": 386, "name": "DUP3", "source": 1 }, { "begin": 369, "end": 386, "name": "ADD", "source": 1 }, { "begin": 388, "end": 390, "name": "PUSH", "source": 1, "value": "40" }, { "begin": 365, "end": 391, "name": "ADD", "source": 1 }, { "begin": 358, "end": 424, "name": "MSTORE", "source": 1 }, { "begin": 323, "end": 333, "name": "DUP3", "source": 1 }, { "begin": 323, "end": 333, "name": "ADD", "source": 1 }, { "begin": 294, "end": 434, "name": "PUSH [tag]", "source": 1, "value": "11" }, { "begin": 294, "end": 434, "name": "JUMP", "source": 1 }, { "begin": 294, "end": 434, "name": "tag", "source": 1, "value": "13" }, { "begin": 294, "end": 434, "name": "JUMPDEST", "source": 1 }, { "begin": 452, "end": 458, "name": "DUP2", "source": 1 }, { "begin": 449, "end": 450, "name": "DUP2", "source": 1 }, { "begin": 446, "end": 459, "name": "GT", "source": 1 }, { "begin": 443, "end": 534, "name": "ISZERO", "source": 1 }, { "begin": 443, "end": 534, "name": "PUSH [tag]", "source": 1, "value": "14" }, { "begin": 443, "end": 534, "name": "JUMPI", "source": 1 }, { "begin": 522, "end": 523, "name": "PUSH", "source": 1, "value": "0" }, { "begin": 517, "end": 519, "name": "PUSH", "source": 1, "value": "40" }, { "begin": 508, "end": 514, "name": "DUP4", "source": 1 }, { "begin": 497, "end": 506, "name": "DUP8", "source": 1 }, { "begin": 493, "end": 515, "name": "ADD", "source": 1 }, { "begin": 489, "end": 520, "name": "ADD", "source": 1 }, { "begin": 482, "end": 524, "name": "MSTORE", "source": 1 }, { "begin": 443, "end": 534, "name": "tag", "source": 1, "value": "14" }, { "begin": 443, "end": 534, "name": "JUMPDEST", "source": 1 }, { "begin": -1, "end": -1, "name": "POP", "source": -1 }, { "begin": 595, "end": 597, "name": "PUSH", "source": 1, "value": "1F" }, { "begin": 574, "end": 589, "name": "ADD", "source": 1 }, { "begin": -1, "end": -1, "name": "PUSH", "source": -1, "value": "1F" }, { "begin": -1, "end": -1, "name": "NOT", "source": -1 }, { "begin": 570, "end": 599, "name": "AND", "source": 1 }, { "begin": 555, "end": 600, "name": "SWAP3", "source": 1 }, { "begin": 555, "end": 600, "name": "SWAP1", "source": 1 }, { "begin": 555, "end": 600, "name": "SWAP3", "source": 1 }, { "begin": 555, "end": 600, "name": "ADD", "source": 1 }, { "begin": 602, "end": 604, "name": "PUSH", "source": 1, "value": "40" }, { "begin": 551, "end": 605, "name": "ADD", "source": 1 }, { "begin": 551, "end": 605, "name": "SWAP4", "source": 1 }, { "begin": 14, "end": 611, "name": "SWAP3", "source": 1 }, { "begin": -1, "end": -1, "name": "POP", "source": -1 }, { "begin": -1, "end": -1, "name": "POP", "source": -1 }, { "begin": -1, "end": -1, "name": "POP", "source": -1 }, { "begin": 14, "end": 611, "name": "JUMP", "source": 1, "value": "[out]" } ] } } }, "methodIdentifiers": { "foo()": "c2985578" } }, "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"foo\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Inheritance.sol\":\"A\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Inheritance.sol\":{\"keccak256\":\"0x3ac07eb1f8f22b03dd0c7bf841e4bd44d01f1671337dbbefe1d73e08a79e4fdd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://782849c13e7b356887aa845822d41e5cfeeb518709a7333a5626ce618094b26e\",\"dweb:/ipfs/QmQTp3vawZnzXirtJajDnmtKVFMtbTCZXJWFSCnwbE7pKT\"]}},\"version\":1}", "storageLayout": { "storage": [], "types": null }, "userdoc": { "kind": "user", "methods": {}, "version": 1 } }, "B": { "abi": [ { "inputs": [], "name": "foo", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "pure", "type": "function" } ], "devdoc": { "kind": "dev", "methods": {}, "version": 1 }, "evm": { "assembly": " /* \"contracts/Inheritance.sol\":608:751 contract B is A {... */\n mstore(0x40, 0x80)\n callvalue\n dup1\n iszero\n tag_1\n jumpi\n 0x00\n dup1\n revert\ntag_1:\n pop\n dataSize(sub_0)\n dup1\n dataOffset(sub_0)\n 0x00\n codecopy\n 0x00\n return\nstop\n\nsub_0: assembly {\n /* \"contracts/Inheritance.sol\":608:751 contract B is A {... */\n mstore(0x40, 0x80)\n callvalue\n dup1\n iszero\n tag_1\n jumpi\n 0x00\n dup1\n revert\n tag_1:\n pop\n jumpi(tag_2, lt(calldatasize, 0x04))\n shr(0xe0, calldataload(0x00))\n dup1\n 0xc2985578\n eq\n tag_3\n jumpi\n tag_2:\n 0x00\n dup1\n revert\n /* \"contracts/Inheritance.sol\":654:749 function foo() public pure virtual override returns (string memory) {... */\n tag_3:\n /* \"contracts/Inheritance.sol\":732:742 return \"B\" */\n 0x40\n dup1\n mload\n dup1\n dup3\n add\n dup3\n mstore\n 0x01\n dup2\n mstore\n shl(0xf9, 0x21)\n 0x20\n dup3\n add\n mstore\n /* \"contracts/Inheritance.sol\":654:749 function foo() public pure virtual override returns (string memory) {... */\n swap1\n mload\n tag_6\n swap2\n /* \"contracts/Inheritance.sol\":732:742 return \"B\" */\n swap1\n /* \"contracts/Inheritance.sol\":654:749 function foo() public pure virtual override returns (string memory) {... */\n tag_7\n jump\t// in\n tag_6:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"#utility.yul\":14:611 */\n tag_7:\n /* \"#utility.yul\":126:130 */\n 0x00\n /* \"#utility.yul\":155:157 */\n 0x20\n /* \"#utility.yul\":184:186 */\n dup1\n /* \"#utility.yul\":173:182 */\n dup4\n /* \"#utility.yul\":166:187 */\n mstore\n /* \"#utility.yul\":216:222 */\n dup4\n /* \"#utility.yul\":210:223 */\n mload\n /* \"#utility.yul\":259:265 */\n dup1\n /* \"#utility.yul\":254:256 */\n dup3\n /* \"#utility.yul\":243:252 */\n dup6\n /* \"#utility.yul\":239:257 */\n add\n /* \"#utility.yul\":232:266 */\n mstore\n /* \"#utility.yul\":284:285 */\n 0x00\n /* \"#utility.yul\":294:434 */\n tag_11:\n /* \"#utility.yul\":308:314 */\n dup2\n /* \"#utility.yul\":305:306 */\n dup2\n /* \"#utility.yul\":302:315 */\n lt\n /* \"#utility.yul\":294:434 */\n iszero\n tag_13\n jumpi\n /* \"#utility.yul\":403:417 */\n dup6\n dup2\n add\n /* \"#utility.yul\":399:422 */\n dup4\n add\n /* \"#utility.yul\":393:423 */\n mload\n /* \"#utility.yul\":369:386 */\n dup6\n dup3\n add\n /* \"#utility.yul\":388:390 */\n 0x40\n /* \"#utility.yul\":365:391 */\n add\n /* \"#utility.yul\":358:424 */\n mstore\n /* \"#utility.yul\":323:333 */\n dup3\n add\n /* \"#utility.yul\":294:434 */\n jump(tag_11)\n tag_13:\n /* \"#utility.yul\":452:458 */\n dup2\n /* \"#utility.yul\":449:450 */\n dup2\n /* \"#utility.yul\":446:459 */\n gt\n /* \"#utility.yul\":443:534 */\n iszero\n tag_14\n jumpi\n /* \"#utility.yul\":522:523 */\n 0x00\n /* \"#utility.yul\":517:519 */\n 0x40\n /* \"#utility.yul\":508:514 */\n dup4\n /* \"#utility.yul\":497:506 */\n dup8\n /* \"#utility.yul\":493:515 */\n add\n /* \"#utility.yul\":489:520 */\n add\n /* \"#utility.yul\":482:524 */\n mstore\n /* \"#utility.yul\":443:534 */\n tag_14:\n pop\n /* \"#utility.yul\":595:597 */\n 0x1f\n /* \"#utility.yul\":574:589 */\n add\n not(0x1f)\n /* \"#utility.yul\":570:599 */\n and\n /* \"#utility.yul\":555:600 */\n swap3\n swap1\n swap3\n add\n /* \"#utility.yul\":602:604 */\n 0x40\n /* \"#utility.yul\":551:605 */\n add\n swap4\n /* \"#utility.yul\":14:611 */\n swap3\n pop\n pop\n pop\n jump\t// out\n\n auxdata: 0xa264697066735822122054c72abc99057dbf0b5f87e87f4db891c514b8bb919e69f1e14f1c0dd6e940d264736f6c634300080d0033\n}\n", "bytecode": { "functionDebugData": {}, "generatedSources": [], "linkReferences": {}, "object": "608060405234801561001057600080fd5b5060df8061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b60408051808201825260018152602160f91b60208201529051604e91906057565b60405180910390f35b600060208083528351808285015260005b818110156082578581018301518582016040015282016068565b818111156093576000604083870101525b50601f01601f191692909201604001939250505056fea264697066735822122054c72abc99057dbf0b5f87e87f4db891c514b8bb919e69f1e14f1c0dd6e940d264736f6c634300080d0033", "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xDF DUP1 PUSH2 0x1F 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 0xC2985578 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x21 PUSH1 0xF9 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x4E SWAP2 SWAP1 PUSH1 0x57 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH1 0x82 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH1 0x68 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH1 0x93 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SLOAD 0xC7 0x2A 0xBC SWAP10 SDIV PUSH30 0xBF0B5F87E87F4DB891C514B8BB919E69F1E14F1C0DD6E940D264736F6C63 NUMBER STOP ADDMOD 0xD STOP CALLER ", "sourceMap": "608:143:0:-:0;;;;;;;;;;;;;;;;;;;" }, "deployedBytecode": { "functionDebugData": { "@foo_21": { "entryPoint": null, "id": 21, "parameterSlots": 0, "returnSlots": 1 }, "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": { "entryPoint": 87, "id": null, "parameterSlots": 2, "returnSlots": 1 } }, "generatedSources": [ { "ast": { "nodeType": "YulBlock", "src": "0:613:1", "statements": [ { "nodeType": "YulBlock", "src": "6:3:1", "statements": [] }, { "body": { "nodeType": "YulBlock", "src": "135:476:1", "statements": [ { "nodeType": "YulVariableDeclaration", "src": "145:12:1", "value": { "kind": "number", "nodeType": "YulLiteral", "src": "155:2:1", "type": "", "value": "32" }, "variables": [ { "name": "_1", "nodeType": "YulTypedName", "src": "149:2:1", "type": "" } ] }, { "expression": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "173:9:1" }, { "name": "_1", "nodeType": "YulIdentifier", "src": "184:2:1" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "166:6:1" }, "nodeType": "YulFunctionCall", "src": "166:21:1" }, "nodeType": "YulExpressionStatement", "src": "166:21:1" }, { "nodeType": "YulVariableDeclaration", "src": "196:27:1", "value": { "arguments": [ { "name": "value0", "nodeType": "YulIdentifier", "src": "216:6:1" } ], "functionName": { "name": "mload", "nodeType": "YulIdentifier", "src": "210:5:1" }, "nodeType": "YulFunctionCall", "src": "210:13:1" }, "variables": [ { "name": "length", "nodeType": "YulTypedName", "src": "200:6:1", "type": "" } ] }, { "expression": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "243:9:1" }, { "name": "_1", "nodeType": "YulIdentifier", "src": "254:2:1" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "239:3:1" }, "nodeType": "YulFunctionCall", "src": "239:18:1" }, { "name": "length", "nodeType": "YulIdentifier", "src": "259:6:1" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "232:6:1" }, "nodeType": "YulFunctionCall", "src": "232:34:1" }, "nodeType": "YulExpressionStatement", "src": "232:34:1" }, { "nodeType": "YulVariableDeclaration", "src": "275:10:1", "value": { "kind": "number", "nodeType": "YulLiteral", "src": "284:1:1", "type": "", "value": "0" }, "variables": [ { "name": "i", "nodeType": "YulTypedName", "src": "279:1:1", "type": "" } ] }, { "body": { "nodeType": "YulBlock", "src": "344:90:1", "statements": [ { "expression": { "arguments": [ { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "373:9:1" }, { "name": "i", "nodeType": "YulIdentifier", "src": "384:1:1" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "369:3:1" }, "nodeType": "YulFunctionCall", "src": "369:17:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "388:2:1", "type": "", "value": "64" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "365:3:1" }, "nodeType": "YulFunctionCall", "src": "365:26:1" }, { "arguments": [ { "arguments": [ { "arguments": [ { "name": "value0", "nodeType": "YulIdentifier", "src": "407:6:1" }, { "name": "i", "nodeType": "YulIdentifier", "src": "415:1:1" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "403:3:1" }, "nodeType": "YulFunctionCall", "src": "403:14:1" }, { "name": "_1", "nodeType": "YulIdentifier", "src": "419:2:1" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "399:3:1" }, "nodeType": "YulFunctionCall", "src": "399:23:1" } ], "functionName": { "name": "mload", "nodeType": "YulIdentifier", "src": "393:5:1" }, "nodeType": "YulFunctionCall", "src": "393:30:1" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "358:6:1" }, "nodeType": "YulFunctionCall", "src": "358:66:1" }, "nodeType": "YulExpressionStatement", "src": "358:66:1" } ] }, "condition": { "arguments": [ { "name": "i", "nodeType": "YulIdentifier", "src": "305:1:1" }, { "name": "length", "nodeType": "YulIdentifier", "src": "308:6:1" } ], "functionName": { "name": "lt", "nodeType": "YulIdentifier", "src": "302:2:1" }, "nodeType": "YulFunctionCall", "src": "302:13:1" }, "nodeType": "YulForLoop", "post": { "nodeType": "YulBlock", "src": "316:19:1", "statements": [ { "nodeType": "YulAssignment", "src": "318:15:1", "value": { "arguments": [ { "name": "i", "nodeType": "YulIdentifier", "src": "327:1:1" }, { "name": "_1", "nodeType": "YulIdentifier", "src": "330:2:1" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "323:3:1" }, "nodeType": "YulFunctionCall", "src": "323:10:1" }, "variableNames": [ { "name": "i", "nodeType": "YulIdentifier", "src": "318:1:1" } ] } ] }, "pre": { "nodeType": "YulBlock", "src": "298:3:1", "statements": [] }, "src": "294:140:1" }, { "body": { "nodeType": "YulBlock", "src": "468:66:1", "statements": [ { "expression": { "arguments": [ { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "497:9:1" }, { "name": "length", "nodeType": "YulIdentifier", "src": "508:6:1" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "493:3:1" }, "nodeType": "YulFunctionCall", "src": "493:22:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "517:2:1", "type": "", "value": "64" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "489:3:1" }, "nodeType": "YulFunctionCall", "src": "489:31:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "522:1:1", "type": "", "value": "0" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "482:6:1" }, "nodeType": "YulFunctionCall", "src": "482:42:1" }, "nodeType": "YulExpressionStatement", "src": "482:42:1" } ] }, "condition": { "arguments": [ { "name": "i", "nodeType": "YulIdentifier", "src": "449:1:1" }, { "name": "length", "nodeType": "YulIdentifier", "src": "452:6:1" } ], "functionName": { "name": "gt", "nodeType": "YulIdentifier", "src": "446:2:1" }, "nodeType": "YulFunctionCall", "src": "446:13:1" }, "nodeType": "YulIf", "src": "443:91:1" }, { "nodeType": "YulAssignment", "src": "543:62:1", "value": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "559:9:1" }, { "arguments": [ { "arguments": [ { "name": "length", "nodeType": "YulIdentifier", "src": "578:6:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "586:2:1", "type": "", "value": "31" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "574:3:1" }, "nodeType": "YulFunctionCall", "src": "574:15:1" }, { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "595:2:1", "type": "", "value": "31" } ], "functionName": { "name": "not", "nodeType": "YulIdentifier", "src": "591:3:1" }, "nodeType": "YulFunctionCall", "src": "591:7:1" } ], "functionName": { "name": "and", "nodeType": "YulIdentifier", "src": "570:3:1" }, "nodeType": "YulFunctionCall", "src": "570:29:1" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "555:3:1" }, "nodeType": "YulFunctionCall", "src": "555:45:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "602:2:1", "type": "", "value": "64" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "551:3:1" }, "nodeType": "YulFunctionCall", "src": "551:54:1" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", "src": "543:4:1" } ] } ] }, "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:1", "type": "" }, { "name": "value0", "nodeType": "YulTypedName", "src": "115:6:1", "type": "" } ], "returnVariables": [ { "name": "tail", "nodeType": "YulTypedName", "src": "126:4:1", "type": "" } ], "src": "14:597:1" } ] }, "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), not(31))), 64)\n }\n}", "id": 1, "language": "Yul", "name": "#utility.yul" } ], "immutableReferences": {}, "linkReferences": {}, "object": "6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b60408051808201825260018152602160f91b60208201529051604e91906057565b60405180910390f35b600060208083528351808285015260005b818110156082578581018301518582016040015282016068565b818111156093576000604083870101525b50601f01601f191692909201604001939250505056fea264697066735822122054c72abc99057dbf0b5f87e87f4db891c514b8bb919e69f1e14f1c0dd6e940d264736f6c634300080d0033", "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 0xC2985578 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x21 PUSH1 0xF9 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x4E SWAP2 SWAP1 PUSH1 0x57 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH1 0x82 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH1 0x68 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH1 0x93 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SLOAD 0xC7 0x2A 0xBC SWAP10 SDIV PUSH30 0xBF0B5F87E87F4DB891C514B8BB919E69F1E14F1C0DD6E940D264736F6C63 NUMBER STOP ADDMOD 0xD STOP CALLER ", "sourceMap": "608:143:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;654:95;732:10;;;;;;;;;;;-1:-1:-1;;;732:10:0;;;;654:95;;;;732:10;654:95;:::i;:::-;;;;;;;;14:597:1;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;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o" }, "gasEstimates": { "creation": { "codeDepositCost": "44600", "executionCost": "93", "totalCost": "44693" }, "external": { "foo()": "infinite" } }, "legacyAssembly": { ".code": [ { "begin": 608, "end": 751, "name": "PUSH", "source": 0, "value": "80" }, { "begin": 608, "end": 751, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 608, "end": 751, "name": "MSTORE", "source": 0 }, { "begin": 608, "end": 751, "name": "CALLVALUE", "source": 0 }, { "begin": 608, "end": 751, "name": "DUP1", "source": 0 }, { "begin": 608, "end": 751, "name": "ISZERO", "source": 0 }, { "begin": 608, "end": 751, "name": "PUSH [tag]", "source": 0, "value": "1" }, { "begin": 608, "end": 751, "name": "JUMPI", "source": 0 }, { "begin": 608, "end": 751, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 608, "end": 751, "name": "DUP1", "source": 0 }, { "begin": 608, "end": 751, "name": "REVERT", "source": 0 }, { "begin": 608, "end": 751, "name": "tag", "source": 0, "value": "1" }, { "begin": 608, "end": 751, "name": "JUMPDEST", "source": 0 }, { "begin": 608, "end": 751, "name": "POP", "source": 0 }, { "begin": 608, "end": 751, "name": "PUSH #[$]", "source": 0, "value": "0000000000000000000000000000000000000000000000000000000000000000" }, { "begin": 608, "end": 751, "name": "DUP1", "source": 0 }, { "begin": 608, "end": 751, "name": "PUSH [$]", "source": 0, "value": "0000000000000000000000000000000000000000000000000000000000000000" }, { "begin": 608, "end": 751, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 608, "end": 751, "name": "CODECOPY", "source": 0 }, { "begin": 608, "end": 751, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 608, "end": 751, "name": "RETURN", "source": 0 } ], ".data": { "0": { ".auxdata": "a264697066735822122054c72abc99057dbf0b5f87e87f4db891c514b8bb919e69f1e14f1c0dd6e940d264736f6c634300080d0033", ".code": [ { "begin": 608, "end": 751, "name": "PUSH", "source": 0, "value": "80" }, { "begin": 608, "end": 751, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 608, "end": 751, "name": "MSTORE", "source": 0 }, { "begin": 608, "end": 751, "name": "CALLVALUE", "source": 0 }, { "begin": 608, "end": 751, "name": "DUP1", "source": 0 }, { "begin": 608, "end": 751, "name": "ISZERO", "source": 0 }, { "begin": 608, "end": 751, "name": "PUSH [tag]", "source": 0, "value": "1" }, { "begin": 608, "end": 751, "name": "JUMPI", "source": 0 }, { "begin": 608, "end": 751, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 608, "end": 751, "name": "DUP1", "source": 0 }, { "begin": 608, "end": 751, "name": "REVERT", "source": 0 }, { "begin": 608, "end": 751, "name": "tag", "source": 0, "value": "1" }, { "begin": 608, "end": 751, "name": "JUMPDEST", "source": 0 }, { "begin": 608, "end": 751, "name": "POP", "source": 0 }, { "begin": 608, "end": 751, "name": "PUSH", "source": 0, "value": "4" }, { "begin": 608, "end": 751, "name": "CALLDATASIZE", "source": 0 }, { "begin": 608, "end": 751, "name": "LT", "source": 0 }, { "begin": 608, "end": 751, "name": "PUSH [tag]", "source": 0, "value": "2" }, { "begin": 608, "end": 751, "name": "JUMPI", "source": 0 }, { "begin": 608, "end": 751, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 608, "end": 751, "name": "CALLDATALOAD", "source": 0 }, { "begin": 608, "end": 751, "name": "PUSH", "source": 0, "value": "E0" }, { "begin": 608, "end": 751, "name": "SHR", "source": 0 }, { "begin": 608, "end": 751, "name": "DUP1", "source": 0 }, { "begin": 608, "end": 751, "name": "PUSH", "source": 0, "value": "C2985578" }, { "begin": 608, "end": 751, "name": "EQ", "source": 0 }, { "begin": 608, "end": 751, "name": "PUSH [tag]", "source": 0, "value": "3" }, { "begin": 608, "end": 751, "name": "JUMPI", "source": 0 }, { "begin": 608, "end": 751, "name": "tag", "source": 0, "value": "2" }, { "begin": 608, "end": 751, "name": "JUMPDEST", "source": 0 }, { "begin": 608, "end": 751, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 608, "end": 751, "name": "DUP1", "source": 0 }, { "begin": 608, "end": 751, "name": "REVERT", "source": 0 }, { "begin": 654, "end": 749, "name": "tag", "source": 0, "value": "3" }, { "begin": 654, "end": 749, "name": "JUMPDEST", "source": 0 }, { "begin": 732, "end": 742, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 732, "end": 742, "name": "DUP1", "source": 0 }, { "begin": 732, "end": 742, "name": "MLOAD", "source": 0 }, { "begin": 732, "end": 742, "name": "DUP1", "source": 0 }, { "begin": 732, "end": 742, "name": "DUP3", "source": 0 }, { "begin": 732, "end": 742, "name": "ADD", "source": 0 }, { "begin": 732, "end": 742, "name": "DUP3", "source": 0 }, { "begin": 732, "end": 742, "name": "MSTORE", "source": 0 }, { "begin": 732, "end": 742, "name": "PUSH", "source": 0, "value": "1" }, { "begin": 732, "end": 742, "name": "DUP2", "source": 0 }, { "begin": 732, "end": 742, "name": "MSTORE", "source": 0 }, { "begin": -1, "end": -1, "name": "PUSH", "source": -1, "value": "21" }, { "begin": -1, "end": -1, "name": "PUSH", "source": -1, "value": "F9" }, { "begin": -1, "end": -1, "name": "SHL", "source": -1 }, { "begin": 732, "end": 742, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 732, "end": 742, "name": "DUP3", "source": 0 }, { "begin": 732, "end": 742, "name": "ADD", "source": 0 }, { "begin": 732, "end": 742, "name": "MSTORE", "source": 0 }, { "begin": 654, "end": 749, "name": "SWAP1", "source": 0 }, { "begin": 654, "end": 749, "name": "MLOAD", "source": 0 }, { "begin": 654, "end": 749, "name": "PUSH [tag]", "source": 0, "value": "6" }, { "begin": 654, "end": 749, "name": "SWAP2", "source": 0 }, { "begin": 732, "end": 742, "name": "SWAP1", "source": 0 }, { "begin": 654, "end": 749, "name": "PUSH [tag]", "source": 0, "value": "7" }, { "begin": 654, "end": 749, "name": "JUMP", "source": 0, "value": "[in]" }, { "begin": 654, "end": 749, "name": "tag", "source": 0, "value": "6" }, { "begin": 654, "end": 749, "name": "JUMPDEST", "source": 0 }, { "begin": 654, "end": 749, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 654, "end": 749, "name": "MLOAD", "source": 0 }, { "begin": 654, "end": 749, "name": "DUP1", "source": 0 }, { "begin": 654, "end": 749, "name": "SWAP2", "source": 0 }, { "begin": 654, "end": 749, "name": "SUB", "source": 0 }, { "begin": 654, "end": 749, "name": "SWAP1", "source": 0 }, { "begin": 654, "end": 749, "name": "RETURN", "source": 0 }, { "begin": 14, "end": 611, "name": "tag", "source": 1, "value": "7" }, { "begin": 14, "end": 611, "name": "JUMPDEST", "source": 1 }, { "begin": 126, "end": 130, "name": "PUSH", "source": 1, "value": "0" }, { "begin": 155, "end": 157, "name": "PUSH", "source": 1, "value": "20" }, { "begin": 184, "end": 186, "name": "DUP1", "source": 1 }, { "begin": 173, "end": 182, "name": "DUP4", "source": 1 }, { "begin": 166, "end": 187, "name": "MSTORE", "source": 1 }, { "begin": 216, "end": 222, "name": "DUP4", "source": 1 }, { "begin": 210, "end": 223, "name": "MLOAD", "source": 1 }, { "begin": 259, "end": 265, "name": "DUP1", "source": 1 }, { "begin": 254, "end": 256, "name": "DUP3", "source": 1 }, { "begin": 243, "end": 252, "name": "DUP6", "source": 1 }, { "begin": 239, "end": 257, "name": "ADD", "source": 1 }, { "begin": 232, "end": 266, "name": "MSTORE", "source": 1 }, { "begin": 284, "end": 285, "name": "PUSH", "source": 1, "value": "0" }, { "begin": 294, "end": 434, "name": "tag", "source": 1, "value": "11" }, { "begin": 294, "end": 434, "name": "JUMPDEST", "source": 1 }, { "begin": 308, "end": 314, "name": "DUP2", "source": 1 }, { "begin": 305, "end": 306, "name": "DUP2", "source": 1 }, { "begin": 302, "end": 315, "name": "LT", "source": 1 }, { "begin": 294, "end": 434, "name": "ISZERO", "source": 1 }, { "begin": 294, "end": 434, "name": "PUSH [tag]", "source": 1, "value": "13" }, { "begin": 294, "end": 434, "name": "JUMPI", "source": 1 }, { "begin": 403, "end": 417, "name": "DUP6", "source": 1 }, { "begin": 403, "end": 417, "name": "DUP2", "source": 1 }, { "begin": 403, "end": 417, "name": "ADD", "source": 1 }, { "begin": 399, "end": 422, "name": "DUP4", "source": 1 }, { "begin": 399, "end": 422, "name": "ADD", "source": 1 }, { "begin": 393, "end": 423, "name": "MLOAD", "source": 1 }, { "begin": 369, "end": 386, "name": "DUP6", "source": 1 }, { "begin": 369, "end": 386, "name": "DUP3", "source": 1 }, { "begin": 369, "end": 386, "name": "ADD", "source": 1 }, { "begin": 388, "end": 390, "name": "PUSH", "source": 1, "value": "40" }, { "begin": 365, "end": 391, "name": "ADD", "source": 1 }, { "begin": 358, "end": 424, "name": "MSTORE", "source": 1 }, { "begin": 323, "end": 333, "name": "DUP3", "source": 1 }, { "begin": 323, "end": 333, "name": "ADD", "source": 1 }, { "begin": 294, "end": 434, "name": "PUSH [tag]", "source": 1, "value": "11" }, { "begin": 294, "end": 434, "name": "JUMP", "source": 1 }, { "begin": 294, "end": 434, "name": "tag", "source": 1, "value": "13" }, { "begin": 294, "end": 434, "name": "JUMPDEST", "source": 1 }, { "begin": 452, "end": 458, "name": "DUP2", "source": 1 }, { "begin": 449, "end": 450, "name": "DUP2", "source": 1 }, { "begin": 446, "end": 459, "name": "GT", "source": 1 }, { "begin": 443, "end": 534, "name": "ISZERO", "source": 1 }, { "begin": 443, "end": 534, "name": "PUSH [tag]", "source": 1, "value": "14" }, { "begin": 443, "end": 534, "name": "JUMPI", "source": 1 }, { "begin": 522, "end": 523, "name": "PUSH", "source": 1, "value": "0" }, { "begin": 517, "end": 519, "name": "PUSH", "source": 1, "value": "40" }, { "begin": 508, "end": 514, "name": "DUP4", "source": 1 }, { "begin": 497, "end": 506, "name": "DUP8", "source": 1 }, { "begin": 493, "end": 515, "name": "ADD", "source": 1 }, { "begin": 489, "end": 520, "name": "ADD", "source": 1 }, { "begin": 482, "end": 524, "name": "MSTORE", "source": 1 }, { "begin": 443, "end": 534, "name": "tag", "source": 1, "value": "14" }, { "begin": 443, "end": 534, "name": "JUMPDEST", "source": 1 }, { "begin": -1, "end": -1, "name": "POP", "source": -1 }, { "begin": 595, "end": 597, "name": "PUSH", "source": 1, "value": "1F" }, { "begin": 574, "end": 589, "name": "ADD", "source": 1 }, { "begin": -1, "end": -1, "name": "PUSH", "source": -1, "value": "1F" }, { "begin": -1, "end": -1, "name": "NOT", "source": -1 }, { "begin": 570, "end": 599, "name": "AND", "source": 1 }, { "begin": 555, "end": 600, "name": "SWAP3", "source": 1 }, { "begin": 555, "end": 600, "name": "SWAP1", "source": 1 }, { "begin": 555, "end": 600, "name": "SWAP3", "source": 1 }, { "begin": 555, "end": 600, "name": "ADD", "source": 1 }, { "begin": 602, "end": 604, "name": "PUSH", "source": 1, "value": "40" }, { "begin": 551, "end": 605, "name": "ADD", "source": 1 }, { "begin": 551, "end": 605, "name": "SWAP4", "source": 1 }, { "begin": 14, "end": 611, "name": "SWAP3", "source": 1 }, { "begin": -1, "end": -1, "name": "POP", "source": -1 }, { "begin": -1, "end": -1, "name": "POP", "source": -1 }, { "begin": -1, "end": -1, "name": "POP", "source": -1 }, { "begin": 14, "end": 611, "name": "JUMP", "source": 1, "value": "[out]" } ] } } }, "methodIdentifiers": { "foo()": "c2985578" } }, "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"foo\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Inheritance.sol\":\"B\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Inheritance.sol\":{\"keccak256\":\"0x3ac07eb1f8f22b03dd0c7bf841e4bd44d01f1671337dbbefe1d73e08a79e4fdd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://782849c13e7b356887aa845822d41e5cfeeb518709a7333a5626ce618094b26e\",\"dweb:/ipfs/QmQTp3vawZnzXirtJajDnmtKVFMtbTCZXJWFSCnwbE7pKT\"]}},\"version\":1}", "storageLayout": { "storage": [], "types": null }, "userdoc": { "kind": "user", "methods": {}, "version": 1 } }, "C": { "abi": [ { "inputs": [], "name": "foo", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "pure", "type": "function" } ], "devdoc": { "kind": "dev", "methods": {}, "version": 1 }, "evm": { "assembly": " /* \"contracts/Inheritance.sol\":753:896 contract C is A {... */\n mstore(0x40, 0x80)\n callvalue\n dup1\n iszero\n tag_1\n jumpi\n 0x00\n dup1\n revert\ntag_1:\n pop\n dataSize(sub_0)\n dup1\n dataOffset(sub_0)\n 0x00\n codecopy\n 0x00\n return\nstop\n\nsub_0: assembly {\n /* \"contracts/Inheritance.sol\":753:896 contract C is A {... */\n mstore(0x40, 0x80)\n callvalue\n dup1\n iszero\n tag_1\n jumpi\n 0x00\n dup1\n revert\n tag_1:\n pop\n jumpi(tag_2, lt(calldatasize, 0x04))\n shr(0xe0, calldataload(0x00))\n dup1\n 0xc2985578\n eq\n tag_3\n jumpi\n tag_2:\n 0x00\n dup1\n revert\n /* \"contracts/Inheritance.sol\":799:894 function foo() public pure virtual override returns (string memory) {... */\n tag_3:\n /* \"contracts/Inheritance.sol\":877:887 return \"C\" */\n 0x40\n dup1\n mload\n dup1\n dup3\n add\n dup3\n mstore\n 0x01\n dup2\n mstore\n shl(0xf8, 0x43)\n 0x20\n dup3\n add\n mstore\n /* \"contracts/Inheritance.sol\":799:894 function foo() public pure virtual override returns (string memory) {... */\n swap1\n mload\n tag_6\n swap2\n /* \"contracts/Inheritance.sol\":877:887 return \"C\" */\n swap1\n /* \"contracts/Inheritance.sol\":799:894 function foo() public pure virtual override returns (string memory) {... */\n tag_7\n jump\t// in\n tag_6:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"#utility.yul\":14:611 */\n tag_7:\n /* \"#utility.yul\":126:130 */\n 0x00\n /* \"#utility.yul\":155:157 */\n 0x20\n /* \"#utility.yul\":184:186 */\n dup1\n /* \"#utility.yul\":173:182 */\n dup4\n /* \"#utility.yul\":166:187 */\n mstore\n /* \"#utility.yul\":216:222 */\n dup4\n /* \"#utility.yul\":210:223 */\n mload\n /* \"#utility.yul\":259:265 */\n dup1\n /* \"#utility.yul\":254:256 */\n dup3\n /* \"#utility.yul\":243:252 */\n dup6\n /* \"#utility.yul\":239:257 */\n add\n /* \"#utility.yul\":232:266 */\n mstore\n /* \"#utility.yul\":284:285 */\n 0x00\n /* \"#utility.yul\":294:434 */\n tag_11:\n /* \"#utility.yul\":308:314 */\n dup2\n /* \"#utility.yul\":305:306 */\n dup2\n /* \"#utility.yul\":302:315 */\n lt\n /* \"#utility.yul\":294:434 */\n iszero\n tag_13\n jumpi\n /* \"#utility.yul\":403:417 */\n dup6\n dup2\n add\n /* \"#utility.yul\":399:422 */\n dup4\n add\n /* \"#utility.yul\":393:423 */\n mload\n /* \"#utility.yul\":369:386 */\n dup6\n dup3\n add\n /* \"#utility.yul\":388:390 */\n 0x40\n /* \"#utility.yul\":365:391 */\n add\n /* \"#utility.yul\":358:424 */\n mstore\n /* \"#utility.yul\":323:333 */\n dup3\n add\n /* \"#utility.yul\":294:434 */\n jump(tag_11)\n tag_13:\n /* \"#utility.yul\":452:458 */\n dup2\n /* \"#utility.yul\":449:450 */\n dup2\n /* \"#utility.yul\":446:459 */\n gt\n /* \"#utility.yul\":443:534 */\n iszero\n tag_14\n jumpi\n /* \"#utility.yul\":522:523 */\n 0x00\n /* \"#utility.yul\":517:519 */\n 0x40\n /* \"#utility.yul\":508:514 */\n dup4\n /* \"#utility.yul\":497:506 */\n dup8\n /* \"#utility.yul\":493:515 */\n add\n /* \"#utility.yul\":489:520 */\n add\n /* \"#utility.yul\":482:524 */\n mstore\n /* \"#utility.yul\":443:534 */\n tag_14:\n pop\n /* \"#utility.yul\":595:597 */\n 0x1f\n /* \"#utility.yul\":574:589 */\n add\n not(0x1f)\n /* \"#utility.yul\":570:599 */\n and\n /* \"#utility.yul\":555:600 */\n swap3\n swap1\n swap3\n add\n /* \"#utility.yul\":602:604 */\n 0x40\n /* \"#utility.yul\":551:605 */\n add\n swap4\n /* \"#utility.yul\":14:611 */\n swap3\n pop\n pop\n pop\n jump\t// out\n\n auxdata: 0xa264697066735822122018c883ad036c50dc045a4117b024099724ee1ee2658c5e31027cdb956ba919c664736f6c634300080d0033\n}\n", "bytecode": { "functionDebugData": {}, "generatedSources": [], "linkReferences": {}, "object": "608060405234801561001057600080fd5b5060df8061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b60408051808201825260018152604360f81b60208201529051604e91906057565b60405180910390f35b600060208083528351808285015260005b818110156082578581018301518582016040015282016068565b818111156093576000604083870101525b50601f01601f191692909201604001939250505056fea264697066735822122018c883ad036c50dc045a4117b024099724ee1ee2658c5e31027cdb956ba919c664736f6c634300080d0033", "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xDF DUP1 PUSH2 0x1F 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 0xC2985578 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x43 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x4E SWAP2 SWAP1 PUSH1 0x57 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH1 0x82 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH1 0x68 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH1 0x93 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 XOR 0xC8 DUP4 0xAD SUB PUSH13 0x50DC045A4117B024099724EE1E 0xE2 PUSH6 0x8C5E31027CDB SWAP6 PUSH12 0xA919C664736F6C634300080D STOP CALLER ", "sourceMap": "753:143:0:-:0;;;;;;;;;;;;;;;;;;;" }, "deployedBytecode": { "functionDebugData": { "@foo_33": { "entryPoint": null, "id": 33, "parameterSlots": 0, "returnSlots": 1 }, "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": { "entryPoint": 87, "id": null, "parameterSlots": 2, "returnSlots": 1 } }, "generatedSources": [ { "ast": { "nodeType": "YulBlock", "src": "0:613:1", "statements": [ { "nodeType": "YulBlock", "src": "6:3:1", "statements": [] }, { "body": { "nodeType": "YulBlock", "src": "135:476:1", "statements": [ { "nodeType": "YulVariableDeclaration", "src": "145:12:1", "value": { "kind": "number", "nodeType": "YulLiteral", "src": "155:2:1", "type": "", "value": "32" }, "variables": [ { "name": "_1", "nodeType": "YulTypedName", "src": "149:2:1", "type": "" } ] }, { "expression": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "173:9:1" }, { "name": "_1", "nodeType": "YulIdentifier", "src": "184:2:1" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "166:6:1" }, "nodeType": "YulFunctionCall", "src": "166:21:1" }, "nodeType": "YulExpressionStatement", "src": "166:21:1" }, { "nodeType": "YulVariableDeclaration", "src": "196:27:1", "value": { "arguments": [ { "name": "value0", "nodeType": "YulIdentifier", "src": "216:6:1" } ], "functionName": { "name": "mload", "nodeType": "YulIdentifier", "src": "210:5:1" }, "nodeType": "YulFunctionCall", "src": "210:13:1" }, "variables": [ { "name": "length", "nodeType": "YulTypedName", "src": "200:6:1", "type": "" } ] }, { "expression": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "243:9:1" }, { "name": "_1", "nodeType": "YulIdentifier", "src": "254:2:1" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "239:3:1" }, "nodeType": "YulFunctionCall", "src": "239:18:1" }, { "name": "length", "nodeType": "YulIdentifier", "src": "259:6:1" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "232:6:1" }, "nodeType": "YulFunctionCall", "src": "232:34:1" }, "nodeType": "YulExpressionStatement", "src": "232:34:1" }, { "nodeType": "YulVariableDeclaration", "src": "275:10:1", "value": { "kind": "number", "nodeType": "YulLiteral", "src": "284:1:1", "type": "", "value": "0" }, "variables": [ { "name": "i", "nodeType": "YulTypedName", "src": "279:1:1", "type": "" } ] }, { "body": { "nodeType": "YulBlock", "src": "344:90:1", "statements": [ { "expression": { "arguments": [ { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "373:9:1" }, { "name": "i", "nodeType": "YulIdentifier", "src": "384:1:1" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "369:3:1" }, "nodeType": "YulFunctionCall", "src": "369:17:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "388:2:1", "type": "", "value": "64" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "365:3:1" }, "nodeType": "YulFunctionCall", "src": "365:26:1" }, { "arguments": [ { "arguments": [ { "arguments": [ { "name": "value0", "nodeType": "YulIdentifier", "src": "407:6:1" }, { "name": "i", "nodeType": "YulIdentifier", "src": "415:1:1" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "403:3:1" }, "nodeType": "YulFunctionCall", "src": "403:14:1" }, { "name": "_1", "nodeType": "YulIdentifier", "src": "419:2:1" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "399:3:1" }, "nodeType": "YulFunctionCall", "src": "399:23:1" } ], "functionName": { "name": "mload", "nodeType": "YulIdentifier", "src": "393:5:1" }, "nodeType": "YulFunctionCall", "src": "393:30:1" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "358:6:1" }, "nodeType": "YulFunctionCall", "src": "358:66:1" }, "nodeType": "YulExpressionStatement", "src": "358:66:1" } ] }, "condition": { "arguments": [ { "name": "i", "nodeType": "YulIdentifier", "src": "305:1:1" }, { "name": "length", "nodeType": "YulIdentifier", "src": "308:6:1" } ], "functionName": { "name": "lt", "nodeType": "YulIdentifier", "src": "302:2:1" }, "nodeType": "YulFunctionCall", "src": "302:13:1" }, "nodeType": "YulForLoop", "post": { "nodeType": "YulBlock", "src": "316:19:1", "statements": [ { "nodeType": "YulAssignment", "src": "318:15:1", "value": { "arguments": [ { "name": "i", "nodeType": "YulIdentifier", "src": "327:1:1" }, { "name": "_1", "nodeType": "YulIdentifier", "src": "330:2:1" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "323:3:1" }, "nodeType": "YulFunctionCall", "src": "323:10:1" }, "variableNames": [ { "name": "i", "nodeType": "YulIdentifier", "src": "318:1:1" } ] } ] }, "pre": { "nodeType": "YulBlock", "src": "298:3:1", "statements": [] }, "src": "294:140:1" }, { "body": { "nodeType": "YulBlock", "src": "468:66:1", "statements": [ { "expression": { "arguments": [ { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "497:9:1" }, { "name": "length", "nodeType": "YulIdentifier", "src": "508:6:1" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "493:3:1" }, "nodeType": "YulFunctionCall", "src": "493:22:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "517:2:1", "type": "", "value": "64" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "489:3:1" }, "nodeType": "YulFunctionCall", "src": "489:31:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "522:1:1", "type": "", "value": "0" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "482:6:1" }, "nodeType": "YulFunctionCall", "src": "482:42:1" }, "nodeType": "YulExpressionStatement", "src": "482:42:1" } ] }, "condition": { "arguments": [ { "name": "i", "nodeType": "YulIdentifier", "src": "449:1:1" }, { "name": "length", "nodeType": "YulIdentifier", "src": "452:6:1" } ], "functionName": { "name": "gt", "nodeType": "YulIdentifier", "src": "446:2:1" }, "nodeType": "YulFunctionCall", "src": "446:13:1" }, "nodeType": "YulIf", "src": "443:91:1" }, { "nodeType": "YulAssignment", "src": "543:62:1", "value": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "559:9:1" }, { "arguments": [ { "arguments": [ { "name": "length", "nodeType": "YulIdentifier", "src": "578:6:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "586:2:1", "type": "", "value": "31" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "574:3:1" }, "nodeType": "YulFunctionCall", "src": "574:15:1" }, { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "595:2:1", "type": "", "value": "31" } ], "functionName": { "name": "not", "nodeType": "YulIdentifier", "src": "591:3:1" }, "nodeType": "YulFunctionCall", "src": "591:7:1" } ], "functionName": { "name": "and", "nodeType": "YulIdentifier", "src": "570:3:1" }, "nodeType": "YulFunctionCall", "src": "570:29:1" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "555:3:1" }, "nodeType": "YulFunctionCall", "src": "555:45:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "602:2:1", "type": "", "value": "64" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "551:3:1" }, "nodeType": "YulFunctionCall", "src": "551:54:1" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", "src": "543:4:1" } ] } ] }, "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:1", "type": "" }, { "name": "value0", "nodeType": "YulTypedName", "src": "115:6:1", "type": "" } ], "returnVariables": [ { "name": "tail", "nodeType": "YulTypedName", "src": "126:4:1", "type": "" } ], "src": "14:597:1" } ] }, "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), not(31))), 64)\n }\n}", "id": 1, "language": "Yul", "name": "#utility.yul" } ], "immutableReferences": {}, "linkReferences": {}, "object": "6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b60408051808201825260018152604360f81b60208201529051604e91906057565b60405180910390f35b600060208083528351808285015260005b818110156082578581018301518582016040015282016068565b818111156093576000604083870101525b50601f01601f191692909201604001939250505056fea264697066735822122018c883ad036c50dc045a4117b024099724ee1ee2658c5e31027cdb956ba919c664736f6c634300080d0033", "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 0xC2985578 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x43 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x4E SWAP2 SWAP1 PUSH1 0x57 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH1 0x82 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH1 0x68 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH1 0x93 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 XOR 0xC8 DUP4 0xAD SUB PUSH13 0x50DC045A4117B024099724EE1E 0xE2 PUSH6 0x8C5E31027CDB SWAP6 PUSH12 0xA919C664736F6C634300080D STOP CALLER ", "sourceMap": "753:143:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;799:95;877:10;;;;;;;;;;;-1:-1:-1;;;877:10:0;;;;799:95;;;;877:10;799:95;:::i;:::-;;;;;;;;14:597:1;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;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o" }, "gasEstimates": { "creation": { "codeDepositCost": "44600", "executionCost": "93", "totalCost": "44693" }, "external": { "foo()": "infinite" } }, "legacyAssembly": { ".code": [ { "begin": 753, "end": 896, "name": "PUSH", "source": 0, "value": "80" }, { "begin": 753, "end": 896, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 753, "end": 896, "name": "MSTORE", "source": 0 }, { "begin": 753, "end": 896, "name": "CALLVALUE", "source": 0 }, { "begin": 753, "end": 896, "name": "DUP1", "source": 0 }, { "begin": 753, "end": 896, "name": "ISZERO", "source": 0 }, { "begin": 753, "end": 896, "name": "PUSH [tag]", "source": 0, "value": "1" }, { "begin": 753, "end": 896, "name": "JUMPI", "source": 0 }, { "begin": 753, "end": 896, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 753, "end": 896, "name": "DUP1", "source": 0 }, { "begin": 753, "end": 896, "name": "REVERT", "source": 0 }, { "begin": 753, "end": 896, "name": "tag", "source": 0, "value": "1" }, { "begin": 753, "end": 896, "name": "JUMPDEST", "source": 0 }, { "begin": 753, "end": 896, "name": "POP", "source": 0 }, { "begin": 753, "end": 896, "name": "PUSH #[$]", "source": 0, "value": "0000000000000000000000000000000000000000000000000000000000000000" }, { "begin": 753, "end": 896, "name": "DUP1", "source": 0 }, { "begin": 753, "end": 896, "name": "PUSH [$]", "source": 0, "value": "0000000000000000000000000000000000000000000000000000000000000000" }, { "begin": 753, "end": 896, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 753, "end": 896, "name": "CODECOPY", "source": 0 }, { "begin": 753, "end": 896, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 753, "end": 896, "name": "RETURN", "source": 0 } ], ".data": { "0": { ".auxdata": "a264697066735822122018c883ad036c50dc045a4117b024099724ee1ee2658c5e31027cdb956ba919c664736f6c634300080d0033", ".code": [ { "begin": 753, "end": 896, "name": "PUSH", "source": 0, "value": "80" }, { "begin": 753, "end": 896, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 753, "end": 896, "name": "MSTORE", "source": 0 }, { "begin": 753, "end": 896, "name": "CALLVALUE", "source": 0 }, { "begin": 753, "end": 896, "name": "DUP1", "source": 0 }, { "begin": 753, "end": 896, "name": "ISZERO", "source": 0 }, { "begin": 753, "end": 896, "name": "PUSH [tag]", "source": 0, "value": "1" }, { "begin": 753, "end": 896, "name": "JUMPI", "source": 0 }, { "begin": 753, "end": 896, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 753, "end": 896, "name": "DUP1", "source": 0 }, { "begin": 753, "end": 896, "name": "REVERT", "source": 0 }, { "begin": 753, "end": 896, "name": "tag", "source": 0, "value": "1" }, { "begin": 753, "end": 896, "name": "JUMPDEST", "source": 0 }, { "begin": 753, "end": 896, "name": "POP", "source": 0 }, { "begin": 753, "end": 896, "name": "PUSH", "source": 0, "value": "4" }, { "begin": 753, "end": 896, "name": "CALLDATASIZE", "source": 0 }, { "begin": 753, "end": 896, "name": "LT", "source": 0 }, { "begin": 753, "end": 896, "name": "PUSH [tag]", "source": 0, "value": "2" }, { "begin": 753, "end": 896, "name": "JUMPI", "source": 0 }, { "begin": 753, "end": 896, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 753, "end": 896, "name": "CALLDATALOAD", "source": 0 }, { "begin": 753, "end": 896, "name": "PUSH", "source": 0, "value": "E0" }, { "begin": 753, "end": 896, "name": "SHR", "source": 0 }, { "begin": 753, "end": 896, "name": "DUP1", "source": 0 }, { "begin": 753, "end": 896, "name": "PUSH", "source": 0, "value": "C2985578" }, { "begin": 753, "end": 896, "name": "EQ", "source": 0 }, { "begin": 753, "end": 896, "name": "PUSH [tag]", "source": 0, "value": "3" }, { "begin": 753, "end": 896, "name": "JUMPI", "source": 0 }, { "begin": 753, "end": 896, "name": "tag", "source": 0, "value": "2" }, { "begin": 753, "end": 896, "name": "JUMPDEST", "source": 0 }, { "begin": 753, "end": 896, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 753, "end": 896, "name": "DUP1", "source": 0 }, { "begin": 753, "end": 896, "name": "REVERT", "source": 0 }, { "begin": 799, "end": 894, "name": "tag", "source": 0, "value": "3" }, { "begin": 799, "end": 894, "name": "JUMPDEST", "source": 0 }, { "begin": 877, "end": 887, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 877, "end": 887, "name": "DUP1", "source": 0 }, { "begin": 877, "end": 887, "name": "MLOAD", "source": 0 }, { "begin": 877, "end": 887, "name": "DUP1", "source": 0 }, { "begin": 877, "end": 887, "name": "DUP3", "source": 0 }, { "begin": 877, "end": 887, "name": "ADD", "source": 0 }, { "begin": 877, "end": 887, "name": "DUP3", "source": 0 }, { "begin": 877, "end": 887, "name": "MSTORE", "source": 0 }, { "begin": 877, "end": 887, "name": "PUSH", "source": 0, "value": "1" }, { "begin": 877, "end": 887, "name": "DUP2", "source": 0 }, { "begin": 877, "end": 887, "name": "MSTORE", "source": 0 }, { "begin": -1, "end": -1, "name": "PUSH", "source": -1, "value": "43" }, { "begin": -1, "end": -1, "name": "PUSH", "source": -1, "value": "F8" }, { "begin": -1, "end": -1, "name": "SHL", "source": -1 }, { "begin": 877, "end": 887, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 877, "end": 887, "name": "DUP3", "source": 0 }, { "begin": 877, "end": 887, "name": "ADD", "source": 0 }, { "begin": 877, "end": 887, "name": "MSTORE", "source": 0 }, { "begin": 799, "end": 894, "name": "SWAP1", "source": 0 }, { "begin": 799, "end": 894, "name": "MLOAD", "source": 0 }, { "begin": 799, "end": 894, "name": "PUSH [tag]", "source": 0, "value": "6" }, { "begin": 799, "end": 894, "name": "SWAP2", "source": 0 }, { "begin": 877, "end": 887, "name": "SWAP1", "source": 0 }, { "begin": 799, "end": 894, "name": "PUSH [tag]", "source": 0, "value": "7" }, { "begin": 799, "end": 894, "name": "JUMP", "source": 0, "value": "[in]" }, { "begin": 799, "end": 894, "name": "tag", "source": 0, "value": "6" }, { "begin": 799, "end": 894, "name": "JUMPDEST", "source": 0 }, { "begin": 799, "end": 894, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 799, "end": 894, "name": "MLOAD", "source": 0 }, { "begin": 799, "end": 894, "name": "DUP1", "source": 0 }, { "begin": 799, "end": 894, "name": "SWAP2", "source": 0 }, { "begin": 799, "end": 894, "name": "SUB", "source": 0 }, { "begin": 799, "end": 894, "name": "SWAP1", "source": 0 }, { "begin": 799, "end": 894, "name": "RETURN", "source": 0 }, { "begin": 14, "end": 611, "name": "tag", "source": 1, "value": "7" }, { "begin": 14, "end": 611, "name": "JUMPDEST", "source": 1 }, { "begin": 126, "end": 130, "name": "PUSH", "source": 1, "value": "0" }, { "begin": 155, "end": 157, "name": "PUSH", "source": 1, "value": "20" }, { "begin": 184, "end": 186, "name": "DUP1", "source": 1 }, { "begin": 173, "end": 182, "name": "DUP4", "source": 1 }, { "begin": 166, "end": 187, "name": "MSTORE", "source": 1 }, { "begin": 216, "end": 222, "name": "DUP4", "source": 1 }, { "begin": 210, "end": 223, "name": "MLOAD", "source": 1 }, { "begin": 259, "end": 265, "name": "DUP1", "source": 1 }, { "begin": 254, "end": 256, "name": "DUP3", "source": 1 }, { "begin": 243, "end": 252, "name": "DUP6", "source": 1 }, { "begin": 239, "end": 257, "name": "ADD", "source": 1 }, { "begin": 232, "end": 266, "name": "MSTORE", "source": 1 }, { "begin": 284, "end": 285, "name": "PUSH", "source": 1, "value": "0" }, { "begin": 294, "end": 434, "name": "tag", "source": 1, "value": "11" }, { "begin": 294, "end": 434, "name": "JUMPDEST", "source": 1 }, { "begin": 308, "end": 314, "name": "DUP2", "source": 1 }, { "begin": 305, "end": 306, "name": "DUP2", "source": 1 }, { "begin": 302, "end": 315, "name": "LT", "source": 1 }, { "begin": 294, "end": 434, "name": "ISZERO", "source": 1 }, { "begin": 294, "end": 434, "name": "PUSH [tag]", "source": 1, "value": "13" }, { "begin": 294, "end": 434, "name": "JUMPI", "source": 1 }, { "begin": 403, "end": 417, "name": "DUP6", "source": 1 }, { "begin": 403, "end": 417, "name": "DUP2", "source": 1 }, { "begin": 403, "end": 417, "name": "ADD", "source": 1 }, { "begin": 399, "end": 422, "name": "DUP4", "source": 1 }, { "begin": 399, "end": 422, "name": "ADD", "source": 1 }, { "begin": 393, "end": 423, "name": "MLOAD", "source": 1 }, { "begin": 369, "end": 386, "name": "DUP6", "source": 1 }, { "begin": 369, "end": 386, "name": "DUP3", "source": 1 }, { "begin": 369, "end": 386, "name": "ADD", "source": 1 }, { "begin": 388, "end": 390, "name": "PUSH", "source": 1, "value": "40" }, { "begin": 365, "end": 391, "name": "ADD", "source": 1 }, { "begin": 358, "end": 424, "name": "MSTORE", "source": 1 }, { "begin": 323, "end": 333, "name": "DUP3", "source": 1 }, { "begin": 323, "end": 333, "name": "ADD", "source": 1 }, { "begin": 294, "end": 434, "name": "PUSH [tag]", "source": 1, "value": "11" }, { "begin": 294, "end": 434, "name": "JUMP", "source": 1 }, { "begin": 294, "end": 434, "name": "tag", "source": 1, "value": "13" }, { "begin": 294, "end": 434, "name": "JUMPDEST", "source": 1 }, { "begin": 452, "end": 458, "name": "DUP2", "source": 1 }, { "begin": 449, "end": 450, "name": "DUP2", "source": 1 }, { "begin": 446, "end": 459, "name": "GT", "source": 1 }, { "begin": 443, "end": 534, "name": "ISZERO", "source": 1 }, { "begin": 443, "end": 534, "name": "PUSH [tag]", "source": 1, "value": "14" }, { "begin": 443, "end": 534, "name": "JUMPI", "source": 1 }, { "begin": 522, "end": 523, "name": "PUSH", "source": 1, "value": "0" }, { "begin": 517, "end": 519, "name": "PUSH", "source": 1, "value": "40" }, { "begin": 508, "end": 514, "name": "DUP4", "source": 1 }, { "begin": 497, "end": 506, "name": "DUP8", "source": 1 }, { "begin": 493, "end": 515, "name": "ADD", "source": 1 }, { "begin": 489, "end": 520, "name": "ADD", "source": 1 }, { "begin": 482, "end": 524, "name": "MSTORE", "source": 1 }, { "begin": 443, "end": 534, "name": "tag", "source": 1, "value": "14" }, { "begin": 443, "end": 534, "name": "JUMPDEST", "source": 1 }, { "begin": -1, "end": -1, "name": "POP", "source": -1 }, { "begin": 595, "end": 597, "name": "PUSH", "source": 1, "value": "1F" }, { "begin": 574, "end": 589, "name": "ADD", "source": 1 }, { "begin": -1, "end": -1, "name": "PUSH", "source": -1, "value": "1F" }, { "begin": -1, "end": -1, "name": "NOT", "source": -1 }, { "begin": 570, "end": 599, "name": "AND", "source": 1 }, { "begin": 555, "end": 600, "name": "SWAP3", "source": 1 }, { "begin": 555, "end": 600, "name": "SWAP1", "source": 1 }, { "begin": 555, "end": 600, "name": "SWAP3", "source": 1 }, { "begin": 555, "end": 600, "name": "ADD", "source": 1 }, { "begin": 602, "end": 604, "name": "PUSH", "source": 1, "value": "40" }, { "begin": 551, "end": 605, "name": "ADD", "source": 1 }, { "begin": 551, "end": 605, "name": "SWAP4", "source": 1 }, { "begin": 14, "end": 611, "name": "SWAP3", "source": 1 }, { "begin": -1, "end": -1, "name": "POP", "source": -1 }, { "begin": -1, "end": -1, "name": "POP", "source": -1 }, { "begin": -1, "end": -1, "name": "POP", "source": -1 }, { "begin": 14, "end": 611, "name": "JUMP", "source": 1, "value": "[out]" } ] } } }, "methodIdentifiers": { "foo()": "c2985578" } }, "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"foo\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Inheritance.sol\":\"C\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Inheritance.sol\":{\"keccak256\":\"0x3ac07eb1f8f22b03dd0c7bf841e4bd44d01f1671337dbbefe1d73e08a79e4fdd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://782849c13e7b356887aa845822d41e5cfeeb518709a7333a5626ce618094b26e\",\"dweb:/ipfs/QmQTp3vawZnzXirtJajDnmtKVFMtbTCZXJWFSCnwbE7pKT\"]}},\"version\":1}", "storageLayout": { "storage": [], "types": null }, "userdoc": { "kind": "user", "methods": {}, "version": 1 } }, "D": { "abi": [ { "inputs": [], "name": "foo", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "pure", "type": "function" } ], "devdoc": { "kind": "dev", "methods": {}, "version": 1 }, "evm": { "assembly": " /* \"contracts/Inheritance.sol\":1123:1278 contract D is B, C {... */\n mstore(0x40, 0x80)\n callvalue\n dup1\n iszero\n tag_1\n jumpi\n 0x00\n dup1\n revert\ntag_1:\n pop\n dataSize(sub_0)\n dup1\n dataOffset(sub_0)\n 0x00\n codecopy\n 0x00\n return\nstop\n\nsub_0: assembly {\n /* \"contracts/Inheritance.sol\":1123:1278 contract D is B, C {... */\n mstore(0x40, 0x80)\n callvalue\n dup1\n iszero\n tag_1\n jumpi\n 0x00\n dup1\n revert\n tag_1:\n pop\n jumpi(tag_2, lt(calldatasize, 0x04))\n shr(0xe0, calldataload(0x00))\n dup1\n 0xc2985578\n eq\n tag_3\n jumpi\n tag_2:\n 0x00\n dup1\n revert\n /* \"contracts/Inheritance.sol\":1175:1276 function foo() public pure override(B, C) returns (string memory) {... */\n tag_3:\n tag_4\n tag_5\n jump\t// in\n tag_4:\n mload(0x40)\n tag_6\n swap2\n swap1\n tag_7\n jump\t// in\n tag_6:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n tag_5:\n /* \"contracts/Inheritance.sol\":1226:1239 string memory */\n 0x60\n /* \"contracts/Inheritance.sol\":1258:1269 super.foo() */\n tag_9\n /* \"contracts/Inheritance.sol\":877:887 return \"C\" */\n 0x40\n dup1\n mload\n dup1\n dup3\n add\n swap1\n swap2\n mstore\n 0x01\n dup2\n mstore\n shl(0xf8, 0x43)\n 0x20\n dup3\n add\n mstore\n swap1\n /* \"contracts/Inheritance.sol\":799:894 function foo() public pure virtual override returns (string memory) {... */\n jump\n /* \"contracts/Inheritance.sol\":1258:1269 super.foo() */\n tag_9:\n /* \"contracts/Inheritance.sol\":1251:1269 return super.foo() */\n swap1\n pop\n /* \"contracts/Inheritance.sol\":1175:1276 function foo() public pure override(B, C) returns (string memory) {... */\n swap1\n jump\t// out\n /* \"#utility.yul\":14:611 */\n tag_7:\n /* \"#utility.yul\":126:130 */\n 0x00\n /* \"#utility.yul\":155:157 */\n 0x20\n /* \"#utility.yul\":184:186 */\n dup1\n /* \"#utility.yul\":173:182 */\n dup4\n /* \"#utility.yul\":166:187 */\n mstore\n /* \"#utility.yul\":216:222 */\n dup4\n /* \"#utility.yul\":210:223 */\n mload\n /* \"#utility.yul\":259:265 */\n dup1\n /* \"#utility.yul\":254:256 */\n dup3\n /* \"#utility.yul\":243:252 */\n dup6\n /* \"#utility.yul\":239:257 */\n add\n /* \"#utility.yul\":232:266 */\n mstore\n /* \"#utility.yul\":284:285 */\n 0x00\n /* \"#utility.yul\":294:434 */\n tag_14:\n /* \"#utility.yul\":308:314 */\n dup2\n /* \"#utility.yul\":305:306 */\n dup2\n /* \"#utility.yul\":302:315 */\n lt\n /* \"#utility.yul\":294:434 */\n iszero\n tag_16\n jumpi\n /* \"#utility.yul\":403:417 */\n dup6\n dup2\n add\n /* \"#utility.yul\":399:422 */\n dup4\n add\n /* \"#utility.yul\":393:423 */\n mload\n /* \"#utility.yul\":369:386 */\n dup6\n dup3\n add\n /* \"#utility.yul\":388:390 */\n 0x40\n /* \"#utility.yul\":365:391 */\n add\n /* \"#utility.yul\":358:424 */\n mstore\n /* \"#utility.yul\":323:333 */\n dup3\n add\n /* \"#utility.yul\":294:434 */\n jump(tag_14)\n tag_16:\n /* \"#utility.yul\":452:458 */\n dup2\n /* \"#utility.yul\":449:450 */\n dup2\n /* \"#utility.yul\":446:459 */\n gt\n /* \"#utility.yul\":443:534 */\n iszero\n tag_17\n jumpi\n /* \"#utility.yul\":522:523 */\n 0x00\n /* \"#utility.yul\":517:519 */\n 0x40\n /* \"#utility.yul\":508:514 */\n dup4\n /* \"#utility.yul\":497:506 */\n dup8\n /* \"#utility.yul\":493:515 */\n add\n /* \"#utility.yul\":489:520 */\n add\n /* \"#utility.yul\":482:524 */\n mstore\n /* \"#utility.yul\":443:534 */\n tag_17:\n pop\n /* \"#utility.yul\":595:597 */\n 0x1f\n /* \"#utility.yul\":574:589 */\n add\n not(0x1f)\n /* \"#utility.yul\":570:599 */\n and\n /* \"#utility.yul\":555:600 */\n swap3\n swap1\n swap3\n add\n /* \"#utility.yul\":602:604 */\n 0x40\n /* \"#utility.yul\":551:605 */\n add\n swap4\n /* \"#utility.yul\":14:611 */\n swap3\n pop\n pop\n pop\n jump\t// out\n\n auxdata: 0xa2646970667358221220bbb77db611505e8e5787bd43d465ca74c449dc7526518e1b8ed9923cd67029f964736f6c634300080d0033\n}\n", "bytecode": { "functionDebugData": {}, "generatedSources": [], "linkReferences": {}, "object": "608060405234801561001057600080fd5b5060f38061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b60336047565b604051603e9190606b565b60405180910390f35b606060666040805180820190915260018152604360f81b602082015290565b905090565b600060208083528351808285015260005b81811015609657858101830151858201604001528201607c565b8181111560a7576000604083870101525b50601f01601f191692909201604001939250505056fea2646970667358221220bbb77db611505e8e5787bd43d465ca74c449dc7526518e1b8ed9923cd67029f964736f6c634300080d0033", "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xF3 DUP1 PUSH2 0x1F 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 0xC2985578 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x33 PUSH1 0x47 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x3E SWAP2 SWAP1 PUSH1 0x6B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x66 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x43 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH1 0x96 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH1 0x7C JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH1 0xA7 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBB 0xB7 PUSH30 0xB611505E8E5787BD43D465CA74C449DC7526518E1B8ED9923CD67029F964 PUSH20 0x6F6C634300080D00330000000000000000000000 ", "sourceMap": "1123:155:0:-:0;;;;;;;;;;;;;;;;;;;" }, "deployedBytecode": { "functionDebugData": { "@foo_33": { "entryPoint": null, "id": 33, "parameterSlots": 0, "returnSlots": 1 }, "@foo_51": { "entryPoint": 71, "id": 51, "parameterSlots": 0, "returnSlots": 1 }, "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": { "entryPoint": 107, "id": null, "parameterSlots": 2, "returnSlots": 1 } }, "generatedSources": [ { "ast": { "nodeType": "YulBlock", "src": "0:613:1", "statements": [ { "nodeType": "YulBlock", "src": "6:3:1", "statements": [] }, { "body": { "nodeType": "YulBlock", "src": "135:476:1", "statements": [ { "nodeType": "YulVariableDeclaration", "src": "145:12:1", "value": { "kind": "number", "nodeType": "YulLiteral", "src": "155:2:1", "type": "", "value": "32" }, "variables": [ { "name": "_1", "nodeType": "YulTypedName", "src": "149:2:1", "type": "" } ] }, { "expression": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "173:9:1" }, { "name": "_1", "nodeType": "YulIdentifier", "src": "184:2:1" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "166:6:1" }, "nodeType": "YulFunctionCall", "src": "166:21:1" }, "nodeType": "YulExpressionStatement", "src": "166:21:1" }, { "nodeType": "YulVariableDeclaration", "src": "196:27:1", "value": { "arguments": [ { "name": "value0", "nodeType": "YulIdentifier", "src": "216:6:1" } ], "functionName": { "name": "mload", "nodeType": "YulIdentifier", "src": "210:5:1" }, "nodeType": "YulFunctionCall", "src": "210:13:1" }, "variables": [ { "name": "length", "nodeType": "YulTypedName", "src": "200:6:1", "type": "" } ] }, { "expression": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "243:9:1" }, { "name": "_1", "nodeType": "YulIdentifier", "src": "254:2:1" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "239:3:1" }, "nodeType": "YulFunctionCall", "src": "239:18:1" }, { "name": "length", "nodeType": "YulIdentifier", "src": "259:6:1" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "232:6:1" }, "nodeType": "YulFunctionCall", "src": "232:34:1" }, "nodeType": "YulExpressionStatement", "src": "232:34:1" }, { "nodeType": "YulVariableDeclaration", "src": "275:10:1", "value": { "kind": "number", "nodeType": "YulLiteral", "src": "284:1:1", "type": "", "value": "0" }, "variables": [ { "name": "i", "nodeType": "YulTypedName", "src": "279:1:1", "type": "" } ] }, { "body": { "nodeType": "YulBlock", "src": "344:90:1", "statements": [ { "expression": { "arguments": [ { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "373:9:1" }, { "name": "i", "nodeType": "YulIdentifier", "src": "384:1:1" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "369:3:1" }, "nodeType": "YulFunctionCall", "src": "369:17:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "388:2:1", "type": "", "value": "64" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "365:3:1" }, "nodeType": "YulFunctionCall", "src": "365:26:1" }, { "arguments": [ { "arguments": [ { "arguments": [ { "name": "value0", "nodeType": "YulIdentifier", "src": "407:6:1" }, { "name": "i", "nodeType": "YulIdentifier", "src": "415:1:1" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "403:3:1" }, "nodeType": "YulFunctionCall", "src": "403:14:1" }, { "name": "_1", "nodeType": "YulIdentifier", "src": "419:2:1" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "399:3:1" }, "nodeType": "YulFunctionCall", "src": "399:23:1" } ], "functionName": { "name": "mload", "nodeType": "YulIdentifier", "src": "393:5:1" }, "nodeType": "YulFunctionCall", "src": "393:30:1" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "358:6:1" }, "nodeType": "YulFunctionCall", "src": "358:66:1" }, "nodeType": "YulExpressionStatement", "src": "358:66:1" } ] }, "condition": { "arguments": [ { "name": "i", "nodeType": "YulIdentifier", "src": "305:1:1" }, { "name": "length", "nodeType": "YulIdentifier", "src": "308:6:1" } ], "functionName": { "name": "lt", "nodeType": "YulIdentifier", "src": "302:2:1" }, "nodeType": "YulFunctionCall", "src": "302:13:1" }, "nodeType": "YulForLoop", "post": { "nodeType": "YulBlock", "src": "316:19:1", "statements": [ { "nodeType": "YulAssignment", "src": "318:15:1", "value": { "arguments": [ { "name": "i", "nodeType": "YulIdentifier", "src": "327:1:1" }, { "name": "_1", "nodeType": "YulIdentifier", "src": "330:2:1" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "323:3:1" }, "nodeType": "YulFunctionCall", "src": "323:10:1" }, "variableNames": [ { "name": "i", "nodeType": "YulIdentifier", "src": "318:1:1" } ] } ] }, "pre": { "nodeType": "YulBlock", "src": "298:3:1", "statements": [] }, "src": "294:140:1" }, { "body": { "nodeType": "YulBlock", "src": "468:66:1", "statements": [ { "expression": { "arguments": [ { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "497:9:1" }, { "name": "length", "nodeType": "YulIdentifier", "src": "508:6:1" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "493:3:1" }, "nodeType": "YulFunctionCall", "src": "493:22:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "517:2:1", "type": "", "value": "64" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "489:3:1" }, "nodeType": "YulFunctionCall", "src": "489:31:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "522:1:1", "type": "", "value": "0" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "482:6:1" }, "nodeType": "YulFunctionCall", "src": "482:42:1" }, "nodeType": "YulExpressionStatement", "src": "482:42:1" } ] }, "condition": { "arguments": [ { "name": "i", "nodeType": "YulIdentifier", "src": "449:1:1" }, { "name": "length", "nodeType": "YulIdentifier", "src": "452:6:1" } ], "functionName": { "name": "gt", "nodeType": "YulIdentifier", "src": "446:2:1" }, "nodeType": "YulFunctionCall", "src": "446:13:1" }, "nodeType": "YulIf", "src": "443:91:1" }, { "nodeType": "YulAssignment", "src": "543:62:1", "value": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "559:9:1" }, { "arguments": [ { "arguments": [ { "name": "length", "nodeType": "YulIdentifier", "src": "578:6:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "586:2:1", "type": "", "value": "31" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "574:3:1" }, "nodeType": "YulFunctionCall", "src": "574:15:1" }, { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "595:2:1", "type": "", "value": "31" } ], "functionName": { "name": "not", "nodeType": "YulIdentifier", "src": "591:3:1" }, "nodeType": "YulFunctionCall", "src": "591:7:1" } ], "functionName": { "name": "and", "nodeType": "YulIdentifier", "src": "570:3:1" }, "nodeType": "YulFunctionCall", "src": "570:29:1" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "555:3:1" }, "nodeType": "YulFunctionCall", "src": "555:45:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "602:2:1", "type": "", "value": "64" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "551:3:1" }, "nodeType": "YulFunctionCall", "src": "551:54:1" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", "src": "543:4:1" } ] } ] }, "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:1", "type": "" }, { "name": "value0", "nodeType": "YulTypedName", "src": "115:6:1", "type": "" } ], "returnVariables": [ { "name": "tail", "nodeType": "YulTypedName", "src": "126:4:1", "type": "" } ], "src": "14:597:1" } ] }, "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), not(31))), 64)\n }\n}", "id": 1, "language": "Yul", "name": "#utility.yul" } ], "immutableReferences": {}, "linkReferences": {}, "object": "6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b60336047565b604051603e9190606b565b60405180910390f35b606060666040805180820190915260018152604360f81b602082015290565b905090565b600060208083528351808285015260005b81811015609657858101830151858201604001528201607c565b8181111560a7576000604083870101525b50601f01601f191692909201604001939250505056fea2646970667358221220bbb77db611505e8e5787bd43d465ca74c449dc7526518e1b8ed9923cd67029f964736f6c634300080d0033", "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 0xC2985578 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x33 PUSH1 0x47 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x3E SWAP2 SWAP1 PUSH1 0x6B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x66 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x43 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH1 0x96 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH1 0x7C JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH1 0xA7 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBB 0xB7 PUSH30 0xB611505E8E5787BD43D465CA74C449DC7526518E1B8ED9923CD67029F964 PUSH20 0x6F6C634300080D00330000000000000000000000 ", "sourceMap": "1123:155:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1175:101;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;1226:13;1258:11;877:10;;;;;;;;;;;;-1:-1:-1;;;877:10:0;;;;;799:95;1258:11;1251:18;;1175:101;:::o;14:597:1:-;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;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o" }, "gasEstimates": { "creation": { "codeDepositCost": "48600", "executionCost": "99", "totalCost": "48699" }, "external": { "foo()": "infinite" } }, "legacyAssembly": { ".code": [ { "begin": 1123, "end": 1278, "name": "PUSH", "source": 0, "value": "80" }, { "begin": 1123, "end": 1278, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 1123, "end": 1278, "name": "MSTORE", "source": 0 }, { "begin": 1123, "end": 1278, "name": "CALLVALUE", "source": 0 }, { "begin": 1123, "end": 1278, "name": "DUP1", "source": 0 }, { "begin": 1123, "end": 1278, "name": "ISZERO", "source": 0 }, { "begin": 1123, "end": 1278, "name": "PUSH [tag]", "source": 0, "value": "1" }, { "begin": 1123, "end": 1278, "name": "JUMPI", "source": 0 }, { "begin": 1123, "end": 1278, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 1123, "end": 1278, "name": "DUP1", "source": 0 }, { "begin": 1123, "end": 1278, "name": "REVERT", "source": 0 }, { "begin": 1123, "end": 1278, "name": "tag", "source": 0, "value": "1" }, { "begin": 1123, "end": 1278, "name": "JUMPDEST", "source": 0 }, { "begin": 1123, "end": 1278, "name": "POP", "source": 0 }, { "begin": 1123, "end": 1278, "name": "PUSH #[$]", "source": 0, "value": "0000000000000000000000000000000000000000000000000000000000000000" }, { "begin": 1123, "end": 1278, "name": "DUP1", "source": 0 }, { "begin": 1123, "end": 1278, "name": "PUSH [$]", "source": 0, "value": "0000000000000000000000000000000000000000000000000000000000000000" }, { "begin": 1123, "end": 1278, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 1123, "end": 1278, "name": "CODECOPY", "source": 0 }, { "begin": 1123, "end": 1278, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 1123, "end": 1278, "name": "RETURN", "source": 0 } ], ".data": { "0": { ".auxdata": "a2646970667358221220bbb77db611505e8e5787bd43d465ca74c449dc7526518e1b8ed9923cd67029f964736f6c634300080d0033", ".code": [ { "begin": 1123, "end": 1278, "name": "PUSH", "source": 0, "value": "80" }, { "begin": 1123, "end": 1278, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 1123, "end": 1278, "name": "MSTORE", "source": 0 }, { "begin": 1123, "end": 1278, "name": "CALLVALUE", "source": 0 }, { "begin": 1123, "end": 1278, "name": "DUP1", "source": 0 }, { "begin": 1123, "end": 1278, "name": "ISZERO", "source": 0 }, { "begin": 1123, "end": 1278, "name": "PUSH [tag]", "source": 0, "value": "1" }, { "begin": 1123, "end": 1278, "name": "JUMPI", "source": 0 }, { "begin": 1123, "end": 1278, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 1123, "end": 1278, "name": "DUP1", "source": 0 }, { "begin": 1123, "end": 1278, "name": "REVERT", "source": 0 }, { "begin": 1123, "end": 1278, "name": "tag", "source": 0, "value": "1" }, { "begin": 1123, "end": 1278, "name": "JUMPDEST", "source": 0 }, { "begin": 1123, "end": 1278, "name": "POP", "source": 0 }, { "begin": 1123, "end": 1278, "name": "PUSH", "source": 0, "value": "4" }, { "begin": 1123, "end": 1278, "name": "CALLDATASIZE", "source": 0 }, { "begin": 1123, "end": 1278, "name": "LT", "source": 0 }, { "begin": 1123, "end": 1278, "name": "PUSH [tag]", "source": 0, "value": "2" }, { "begin": 1123, "end": 1278, "name": "JUMPI", "source": 0 }, { "begin": 1123, "end": 1278, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 1123, "end": 1278, "name": "CALLDATALOAD", "source": 0 }, { "begin": 1123, "end": 1278, "name": "PUSH", "source": 0, "value": "E0" }, { "begin": 1123, "end": 1278, "name": "SHR", "source": 0 }, { "begin": 1123, "end": 1278, "name": "DUP1", "source": 0 }, { "begin": 1123, "end": 1278, "name": "PUSH", "source": 0, "value": "C2985578" }, { "begin": 1123, "end": 1278, "name": "EQ", "source": 0 }, { "begin": 1123, "end": 1278, "name": "PUSH [tag]", "source": 0, "value": "3" }, { "begin": 1123, "end": 1278, "name": "JUMPI", "source": 0 }, { "begin": 1123, "end": 1278, "name": "tag", "source": 0, "value": "2" }, { "begin": 1123, "end": 1278, "name": "JUMPDEST", "source": 0 }, { "begin": 1123, "end": 1278, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 1123, "end": 1278, "name": "DUP1", "source": 0 }, { "begin": 1123, "end": 1278, "name": "REVERT", "source": 0 }, { "begin": 1175, "end": 1276, "name": "tag", "source": 0, "value": "3" }, { "begin": 1175, "end": 1276, "name": "JUMPDEST", "source": 0 }, { "begin": 1175, "end": 1276, "name": "PUSH [tag]", "source": 0, "value": "4" }, { "begin": 1175, "end": 1276, "name": "PUSH [tag]", "source": 0, "value": "5" }, { "begin": 1175, "end": 1276, "name": "JUMP", "source": 0, "value": "[in]" }, { "begin": 1175, "end": 1276, "name": "tag", "source": 0, "value": "4" }, { "begin": 1175, "end": 1276, "name": "JUMPDEST", "source": 0 }, { "begin": 1175, "end": 1276, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 1175, "end": 1276, "name": "MLOAD", "source": 0 }, { "begin": 1175, "end": 1276, "name": "PUSH [tag]", "source": 0, "value": "6" }, { "begin": 1175, "end": 1276, "name": "SWAP2", "source": 0 }, { "begin": 1175, "end": 1276, "name": "SWAP1", "source": 0 }, { "begin": 1175, "end": 1276, "name": "PUSH [tag]", "source": 0, "value": "7" }, { "begin": 1175, "end": 1276, "name": "JUMP", "source": 0, "value": "[in]" }, { "begin": 1175, "end": 1276, "name": "tag", "source": 0, "value": "6" }, { "begin": 1175, "end": 1276, "name": "JUMPDEST", "source": 0 }, { "begin": 1175, "end": 1276, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 1175, "end": 1276, "name": "MLOAD", "source": 0 }, { "begin": 1175, "end": 1276, "name": "DUP1", "source": 0 }, { "begin": 1175, "end": 1276, "name": "SWAP2", "source": 0 }, { "begin": 1175, "end": 1276, "name": "SUB", "source": 0 }, { "begin": 1175, "end": 1276, "name": "SWAP1", "source": 0 }, { "begin": 1175, "end": 1276, "name": "RETURN", "source": 0 }, { "begin": 1175, "end": 1276, "name": "tag", "source": 0, "value": "5" }, { "begin": 1175, "end": 1276, "name": "JUMPDEST", "source": 0 }, { "begin": 1226, "end": 1239, "name": "PUSH", "source": 0, "value": "60" }, { "begin": 1258, "end": 1269, "name": "PUSH [tag]", "source": 0, "value": "9" }, { "begin": 877, "end": 887, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 877, "end": 887, "name": "DUP1", "source": 0 }, { "begin": 877, "end": 887, "name": "MLOAD", "source": 0 }, { "begin": 877, "end": 887, "name": "DUP1", "source": 0 }, { "begin": 877, "end": 887, "name": "DUP3", "source": 0 }, { "begin": 877, "end": 887, "name": "ADD", "source": 0 }, { "begin": 877, "end": 887, "name": "SWAP1", "source": 0 }, { "begin": 877, "end": 887, "name": "SWAP2", "source": 0 }, { "begin": 877, "end": 887, "name": "MSTORE", "source": 0 }, { "begin": 877, "end": 887, "name": "PUSH", "source": 0, "value": "1" }, { "begin": 877, "end": 887, "name": "DUP2", "source": 0 }, { "begin": 877, "end": 887, "name": "MSTORE", "source": 0 }, { "begin": -1, "end": -1, "name": "PUSH", "source": -1, "value": "43" }, { "begin": -1, "end": -1, "name": "PUSH", "source": -1, "value": "F8" }, { "begin": -1, "end": -1, "name": "SHL", "source": -1 }, { "begin": 877, "end": 887, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 877, "end": 887, "name": "DUP3", "source": 0 }, { "begin": 877, "end": 887, "name": "ADD", "source": 0 }, { "begin": 877, "end": 887, "name": "MSTORE", "source": 0 }, { "begin": 877, "end": 887, "name": "SWAP1", "source": 0 }, { "begin": 799, "end": 894, "name": "JUMP", "source": 0 }, { "begin": 1258, "end": 1269, "name": "tag", "source": 0, "value": "9" }, { "begin": 1258, "end": 1269, "name": "JUMPDEST", "source": 0 }, { "begin": 1251, "end": 1269, "name": "SWAP1", "source": 0 }, { "begin": 1251, "end": 1269, "name": "POP", "source": 0 }, { "begin": 1175, "end": 1276, "name": "SWAP1", "source": 0 }, { "begin": 1175, "end": 1276, "name": "JUMP", "source": 0, "value": "[out]" }, { "begin": 14, "end": 611, "name": "tag", "source": 1, "value": "7" }, { "begin": 14, "end": 611, "name": "JUMPDEST", "source": 1 }, { "begin": 126, "end": 130, "name": "PUSH", "source": 1, "value": "0" }, { "begin": 155, "end": 157, "name": "PUSH", "source": 1, "value": "20" }, { "begin": 184, "end": 186, "name": "DUP1", "source": 1 }, { "begin": 173, "end": 182, "name": "DUP4", "source": 1 }, { "begin": 166, "end": 187, "name": "MSTORE", "source": 1 }, { "begin": 216, "end": 222, "name": "DUP4", "source": 1 }, { "begin": 210, "end": 223, "name": "MLOAD", "source": 1 }, { "begin": 259, "end": 265, "name": "DUP1", "source": 1 }, { "begin": 254, "end": 256, "name": "DUP3", "source": 1 }, { "begin": 243, "end": 252, "name": "DUP6", "source": 1 }, { "begin": 239, "end": 257, "name": "ADD", "source": 1 }, { "begin": 232, "end": 266, "name": "MSTORE", "source": 1 }, { "begin": 284, "end": 285, "name": "PUSH", "source": 1, "value": "0" }, { "begin": 294, "end": 434, "name": "tag", "source": 1, "value": "14" }, { "begin": 294, "end": 434, "name": "JUMPDEST", "source": 1 }, { "begin": 308, "end": 314, "name": "DUP2", "source": 1 }, { "begin": 305, "end": 306, "name": "DUP2", "source": 1 }, { "begin": 302, "end": 315, "name": "LT", "source": 1 }, { "begin": 294, "end": 434, "name": "ISZERO", "source": 1 }, { "begin": 294, "end": 434, "name": "PUSH [tag]", "source": 1, "value": "16" }, { "begin": 294, "end": 434, "name": "JUMPI", "source": 1 }, { "begin": 403, "end": 417, "name": "DUP6", "source": 1 }, { "begin": 403, "end": 417, "name": "DUP2", "source": 1 }, { "begin": 403, "end": 417, "name": "ADD", "source": 1 }, { "begin": 399, "end": 422, "name": "DUP4", "source": 1 }, { "begin": 399, "end": 422, "name": "ADD", "source": 1 }, { "begin": 393, "end": 423, "name": "MLOAD", "source": 1 }, { "begin": 369, "end": 386, "name": "DUP6", "source": 1 }, { "begin": 369, "end": 386, "name": "DUP3", "source": 1 }, { "begin": 369, "end": 386, "name": "ADD", "source": 1 }, { "begin": 388, "end": 390, "name": "PUSH", "source": 1, "value": "40" }, { "begin": 365, "end": 391, "name": "ADD", "source": 1 }, { "begin": 358, "end": 424, "name": "MSTORE", "source": 1 }, { "begin": 323, "end": 333, "name": "DUP3", "source": 1 }, { "begin": 323, "end": 333, "name": "ADD", "source": 1 }, { "begin": 294, "end": 434, "name": "PUSH [tag]", "source": 1, "value": "14" }, { "begin": 294, "end": 434, "name": "JUMP", "source": 1 }, { "begin": 294, "end": 434, "name": "tag", "source": 1, "value": "16" }, { "begin": 294, "end": 434, "name": "JUMPDEST", "source": 1 }, { "begin": 452, "end": 458, "name": "DUP2", "source": 1 }, { "begin": 449, "end": 450, "name": "DUP2", "source": 1 }, { "begin": 446, "end": 459, "name": "GT", "source": 1 }, { "begin": 443, "end": 534, "name": "ISZERO", "source": 1 }, { "begin": 443, "end": 534, "name": "PUSH [tag]", "source": 1, "value": "17" }, { "begin": 443, "end": 534, "name": "JUMPI", "source": 1 }, { "begin": 522, "end": 523, "name": "PUSH", "source": 1, "value": "0" }, { "begin": 517, "end": 519, "name": "PUSH", "source": 1, "value": "40" }, { "begin": 508, "end": 514, "name": "DUP4", "source": 1 }, { "begin": 497, "end": 506, "name": "DUP8", "source": 1 }, { "begin": 493, "end": 515, "name": "ADD", "source": 1 }, { "begin": 489, "end": 520, "name": "ADD", "source": 1 }, { "begin": 482, "end": 524, "name": "MSTORE", "source": 1 }, { "begin": 443, "end": 534, "name": "tag", "source": 1, "value": "17" }, { "begin": 443, "end": 534, "name": "JUMPDEST", "source": 1 }, { "begin": -1, "end": -1, "name": "POP", "source": -1 }, { "begin": 595, "end": 597, "name": "PUSH", "source": 1, "value": "1F" }, { "begin": 574, "end": 589, "name": "ADD", "source": 1 }, { "begin": -1, "end": -1, "name": "PUSH", "source": -1, "value": "1F" }, { "begin": -1, "end": -1, "name": "NOT", "source": -1 }, { "begin": 570, "end": 599, "name": "AND", "source": 1 }, { "begin": 555, "end": 600, "name": "SWAP3", "source": 1 }, { "begin": 555, "end": 600, "name": "SWAP1", "source": 1 }, { "begin": 555, "end": 600, "name": "SWAP3", "source": 1 }, { "begin": 555, "end": 600, "name": "ADD", "source": 1 }, { "begin": 602, "end": 604, "name": "PUSH", "source": 1, "value": "40" }, { "begin": 551, "end": 605, "name": "ADD", "source": 1 }, { "begin": 551, "end": 605, "name": "SWAP4", "source": 1 }, { "begin": 14, "end": 611, "name": "SWAP3", "source": 1 }, { "begin": -1, "end": -1, "name": "POP", "source": -1 }, { "begin": -1, "end": -1, "name": "POP", "source": -1 }, { "begin": -1, "end": -1, "name": "POP", "source": -1 }, { "begin": 14, "end": 611, "name": "JUMP", "source": 1, "value": "[out]" } ] } } }, "methodIdentifiers": { "foo()": "c2985578" } }, "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"foo\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Inheritance.sol\":\"D\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Inheritance.sol\":{\"keccak256\":\"0x3ac07eb1f8f22b03dd0c7bf841e4bd44d01f1671337dbbefe1d73e08a79e4fdd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://782849c13e7b356887aa845822d41e5cfeeb518709a7333a5626ce618094b26e\",\"dweb:/ipfs/QmQTp3vawZnzXirtJajDnmtKVFMtbTCZXJWFSCnwbE7pKT\"]}},\"version\":1}", "storageLayout": { "storage": [], "types": null }, "userdoc": { "kind": "user", "methods": {}, "version": 1 } }, "E": { "abi": [ { "inputs": [], "name": "foo", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "pure", "type": "function" } ], "devdoc": { "kind": "dev", "methods": {}, "version": 1 }, "evm": { "assembly": " /* \"contracts/Inheritance.sol\":1280:1435 contract E is C, B {... */\n mstore(0x40, 0x80)\n callvalue\n dup1\n iszero\n tag_1\n jumpi\n 0x00\n dup1\n revert\ntag_1:\n pop\n dataSize(sub_0)\n dup1\n dataOffset(sub_0)\n 0x00\n codecopy\n 0x00\n return\nstop\n\nsub_0: assembly {\n /* \"contracts/Inheritance.sol\":1280:1435 contract E is C, B {... */\n mstore(0x40, 0x80)\n callvalue\n dup1\n iszero\n tag_1\n jumpi\n 0x00\n dup1\n revert\n tag_1:\n pop\n jumpi(tag_2, lt(calldatasize, 0x04))\n shr(0xe0, calldataload(0x00))\n dup1\n 0xc2985578\n eq\n tag_3\n jumpi\n tag_2:\n 0x00\n dup1\n revert\n /* \"contracts/Inheritance.sol\":1332:1433 function foo() public pure override(C, B) returns (string memory) {... */\n tag_3:\n tag_4\n tag_5\n jump\t// in\n tag_4:\n mload(0x40)\n tag_6\n swap2\n swap1\n tag_7\n jump\t// in\n tag_6:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n tag_5:\n /* \"contracts/Inheritance.sol\":1383:1396 string memory */\n 0x60\n /* \"contracts/Inheritance.sol\":1415:1426 super.foo() */\n tag_9\n /* \"contracts/Inheritance.sol\":732:742 return \"B\" */\n 0x40\n dup1\n mload\n dup1\n dup3\n add\n swap1\n swap2\n mstore\n 0x01\n dup2\n mstore\n shl(0xf9, 0x21)\n 0x20\n dup3\n add\n mstore\n swap1\n /* \"contracts/Inheritance.sol\":654:749 function foo() public pure virtual override returns (string memory) {... */\n jump\n /* \"contracts/Inheritance.sol\":1415:1426 super.foo() */\n tag_9:\n /* \"contracts/Inheritance.sol\":1408:1426 return super.foo() */\n swap1\n pop\n /* \"contracts/Inheritance.sol\":1332:1433 function foo() public pure override(C, B) returns (string memory) {... */\n swap1\n jump\t// out\n /* \"#utility.yul\":14:611 */\n tag_7:\n /* \"#utility.yul\":126:130 */\n 0x00\n /* \"#utility.yul\":155:157 */\n 0x20\n /* \"#utility.yul\":184:186 */\n dup1\n /* \"#utility.yul\":173:182 */\n dup4\n /* \"#utility.yul\":166:187 */\n mstore\n /* \"#utility.yul\":216:222 */\n dup4\n /* \"#utility.yul\":210:223 */\n mload\n /* \"#utility.yul\":259:265 */\n dup1\n /* \"#utility.yul\":254:256 */\n dup3\n /* \"#utility.yul\":243:252 */\n dup6\n /* \"#utility.yul\":239:257 */\n add\n /* \"#utility.yul\":232:266 */\n mstore\n /* \"#utility.yul\":284:285 */\n 0x00\n /* \"#utility.yul\":294:434 */\n tag_14:\n /* \"#utility.yul\":308:314 */\n dup2\n /* \"#utility.yul\":305:306 */\n dup2\n /* \"#utility.yul\":302:315 */\n lt\n /* \"#utility.yul\":294:434 */\n iszero\n tag_16\n jumpi\n /* \"#utility.yul\":403:417 */\n dup6\n dup2\n add\n /* \"#utility.yul\":399:422 */\n dup4\n add\n /* \"#utility.yul\":393:423 */\n mload\n /* \"#utility.yul\":369:386 */\n dup6\n dup3\n add\n /* \"#utility.yul\":388:390 */\n 0x40\n /* \"#utility.yul\":365:391 */\n add\n /* \"#utility.yul\":358:424 */\n mstore\n /* \"#utility.yul\":323:333 */\n dup3\n add\n /* \"#utility.yul\":294:434 */\n jump(tag_14)\n tag_16:\n /* \"#utility.yul\":452:458 */\n dup2\n /* \"#utility.yul\":449:450 */\n dup2\n /* \"#utility.yul\":446:459 */\n gt\n /* \"#utility.yul\":443:534 */\n iszero\n tag_17\n jumpi\n /* \"#utility.yul\":522:523 */\n 0x00\n /* \"#utility.yul\":517:519 */\n 0x40\n /* \"#utility.yul\":508:514 */\n dup4\n /* \"#utility.yul\":497:506 */\n dup8\n /* \"#utility.yul\":493:515 */\n add\n /* \"#utility.yul\":489:520 */\n add\n /* \"#utility.yul\":482:524 */\n mstore\n /* \"#utility.yul\":443:534 */\n tag_17:\n pop\n /* \"#utility.yul\":595:597 */\n 0x1f\n /* \"#utility.yul\":574:589 */\n add\n not(0x1f)\n /* \"#utility.yul\":570:599 */\n and\n /* \"#utility.yul\":555:600 */\n swap3\n swap1\n swap3\n add\n /* \"#utility.yul\":602:604 */\n 0x40\n /* \"#utility.yul\":551:605 */\n add\n swap4\n /* \"#utility.yul\":14:611 */\n swap3\n pop\n pop\n pop\n jump\t// out\n\n auxdata: 0xa2646970667358221220b668d1af5da48db52aadaf28686c130a63df607dc250985e0f09ec3c6e5f0a9964736f6c634300080d0033\n}\n", "bytecode": { "functionDebugData": {}, "generatedSources": [], "linkReferences": {}, "object": "608060405234801561001057600080fd5b5060f38061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b60336047565b604051603e9190606b565b60405180910390f35b606060666040805180820190915260018152602160f91b602082015290565b905090565b600060208083528351808285015260005b81811015609657858101830151858201604001528201607c565b8181111560a7576000604083870101525b50601f01601f191692909201604001939250505056fea2646970667358221220b668d1af5da48db52aadaf28686c130a63df607dc250985e0f09ec3c6e5f0a9964736f6c634300080d0033", "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xF3 DUP1 PUSH2 0x1F 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 0xC2985578 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x33 PUSH1 0x47 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x3E SWAP2 SWAP1 PUSH1 0x6B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x66 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x21 PUSH1 0xF9 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH1 0x96 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH1 0x7C JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH1 0xA7 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB6 PUSH9 0xD1AF5DA48DB52AADAF 0x28 PUSH9 0x6C130A63DF607DC250 SWAP9 0x5E 0xF MULMOD 0xEC EXTCODECOPY PUSH15 0x5F0A9964736F6C634300080D003300 ", "sourceMap": "1280:155:0:-:0;;;;;;;;;;;;;;;;;;;" }, "deployedBytecode": { "functionDebugData": { "@foo_21": { "entryPoint": null, "id": 21, "parameterSlots": 0, "returnSlots": 1 }, "@foo_69": { "entryPoint": 71, "id": 69, "parameterSlots": 0, "returnSlots": 1 }, "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": { "entryPoint": 107, "id": null, "parameterSlots": 2, "returnSlots": 1 } }, "generatedSources": [ { "ast": { "nodeType": "YulBlock", "src": "0:613:1", "statements": [ { "nodeType": "YulBlock", "src": "6:3:1", "statements": [] }, { "body": { "nodeType": "YulBlock", "src": "135:476:1", "statements": [ { "nodeType": "YulVariableDeclaration", "src": "145:12:1", "value": { "kind": "number", "nodeType": "YulLiteral", "src": "155:2:1", "type": "", "value": "32" }, "variables": [ { "name": "_1", "nodeType": "YulTypedName", "src": "149:2:1", "type": "" } ] }, { "expression": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "173:9:1" }, { "name": "_1", "nodeType": "YulIdentifier", "src": "184:2:1" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "166:6:1" }, "nodeType": "YulFunctionCall", "src": "166:21:1" }, "nodeType": "YulExpressionStatement", "src": "166:21:1" }, { "nodeType": "YulVariableDeclaration", "src": "196:27:1", "value": { "arguments": [ { "name": "value0", "nodeType": "YulIdentifier", "src": "216:6:1" } ], "functionName": { "name": "mload", "nodeType": "YulIdentifier", "src": "210:5:1" }, "nodeType": "YulFunctionCall", "src": "210:13:1" }, "variables": [ { "name": "length", "nodeType": "YulTypedName", "src": "200:6:1", "type": "" } ] }, { "expression": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "243:9:1" }, { "name": "_1", "nodeType": "YulIdentifier", "src": "254:2:1" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "239:3:1" }, "nodeType": "YulFunctionCall", "src": "239:18:1" }, { "name": "length", "nodeType": "YulIdentifier", "src": "259:6:1" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "232:6:1" }, "nodeType": "YulFunctionCall", "src": "232:34:1" }, "nodeType": "YulExpressionStatement", "src": "232:34:1" }, { "nodeType": "YulVariableDeclaration", "src": "275:10:1", "value": { "kind": "number", "nodeType": "YulLiteral", "src": "284:1:1", "type": "", "value": "0" }, "variables": [ { "name": "i", "nodeType": "YulTypedName", "src": "279:1:1", "type": "" } ] }, { "body": { "nodeType": "YulBlock", "src": "344:90:1", "statements": [ { "expression": { "arguments": [ { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "373:9:1" }, { "name": "i", "nodeType": "YulIdentifier", "src": "384:1:1" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "369:3:1" }, "nodeType": "YulFunctionCall", "src": "369:17:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "388:2:1", "type": "", "value": "64" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "365:3:1" }, "nodeType": "YulFunctionCall", "src": "365:26:1" }, { "arguments": [ { "arguments": [ { "arguments": [ { "name": "value0", "nodeType": "YulIdentifier", "src": "407:6:1" }, { "name": "i", "nodeType": "YulIdentifier", "src": "415:1:1" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "403:3:1" }, "nodeType": "YulFunctionCall", "src": "403:14:1" }, { "name": "_1", "nodeType": "YulIdentifier", "src": "419:2:1" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "399:3:1" }, "nodeType": "YulFunctionCall", "src": "399:23:1" } ], "functionName": { "name": "mload", "nodeType": "YulIdentifier", "src": "393:5:1" }, "nodeType": "YulFunctionCall", "src": "393:30:1" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "358:6:1" }, "nodeType": "YulFunctionCall", "src": "358:66:1" }, "nodeType": "YulExpressionStatement", "src": "358:66:1" } ] }, "condition": { "arguments": [ { "name": "i", "nodeType": "YulIdentifier", "src": "305:1:1" }, { "name": "length", "nodeType": "YulIdentifier", "src": "308:6:1" } ], "functionName": { "name": "lt", "nodeType": "YulIdentifier", "src": "302:2:1" }, "nodeType": "YulFunctionCall", "src": "302:13:1" }, "nodeType": "YulForLoop", "post": { "nodeType": "YulBlock", "src": "316:19:1", "statements": [ { "nodeType": "YulAssignment", "src": "318:15:1", "value": { "arguments": [ { "name": "i", "nodeType": "YulIdentifier", "src": "327:1:1" }, { "name": "_1", "nodeType": "YulIdentifier", "src": "330:2:1" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "323:3:1" }, "nodeType": "YulFunctionCall", "src": "323:10:1" }, "variableNames": [ { "name": "i", "nodeType": "YulIdentifier", "src": "318:1:1" } ] } ] }, "pre": { "nodeType": "YulBlock", "src": "298:3:1", "statements": [] }, "src": "294:140:1" }, { "body": { "nodeType": "YulBlock", "src": "468:66:1", "statements": [ { "expression": { "arguments": [ { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "497:9:1" }, { "name": "length", "nodeType": "YulIdentifier", "src": "508:6:1" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "493:3:1" }, "nodeType": "YulFunctionCall", "src": "493:22:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "517:2:1", "type": "", "value": "64" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "489:3:1" }, "nodeType": "YulFunctionCall", "src": "489:31:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "522:1:1", "type": "", "value": "0" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "482:6:1" }, "nodeType": "YulFunctionCall", "src": "482:42:1" }, "nodeType": "YulExpressionStatement", "src": "482:42:1" } ] }, "condition": { "arguments": [ { "name": "i", "nodeType": "YulIdentifier", "src": "449:1:1" }, { "name": "length", "nodeType": "YulIdentifier", "src": "452:6:1" } ], "functionName": { "name": "gt", "nodeType": "YulIdentifier", "src": "446:2:1" }, "nodeType": "YulFunctionCall", "src": "446:13:1" }, "nodeType": "YulIf", "src": "443:91:1" }, { "nodeType": "YulAssignment", "src": "543:62:1", "value": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "559:9:1" }, { "arguments": [ { "arguments": [ { "name": "length", "nodeType": "YulIdentifier", "src": "578:6:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "586:2:1", "type": "", "value": "31" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "574:3:1" }, "nodeType": "YulFunctionCall", "src": "574:15:1" }, { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "595:2:1", "type": "", "value": "31" } ], "functionName": { "name": "not", "nodeType": "YulIdentifier", "src": "591:3:1" }, "nodeType": "YulFunctionCall", "src": "591:7:1" } ], "functionName": { "name": "and", "nodeType": "YulIdentifier", "src": "570:3:1" }, "nodeType": "YulFunctionCall", "src": "570:29:1" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "555:3:1" }, "nodeType": "YulFunctionCall", "src": "555:45:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "602:2:1", "type": "", "value": "64" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "551:3:1" }, "nodeType": "YulFunctionCall", "src": "551:54:1" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", "src": "543:4:1" } ] } ] }, "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:1", "type": "" }, { "name": "value0", "nodeType": "YulTypedName", "src": "115:6:1", "type": "" } ], "returnVariables": [ { "name": "tail", "nodeType": "YulTypedName", "src": "126:4:1", "type": "" } ], "src": "14:597:1" } ] }, "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), not(31))), 64)\n }\n}", "id": 1, "language": "Yul", "name": "#utility.yul" } ], "immutableReferences": {}, "linkReferences": {}, "object": "6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b60336047565b604051603e9190606b565b60405180910390f35b606060666040805180820190915260018152602160f91b602082015290565b905090565b600060208083528351808285015260005b81811015609657858101830151858201604001528201607c565b8181111560a7576000604083870101525b50601f01601f191692909201604001939250505056fea2646970667358221220b668d1af5da48db52aadaf28686c130a63df607dc250985e0f09ec3c6e5f0a9964736f6c634300080d0033", "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 0xC2985578 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x33 PUSH1 0x47 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x3E SWAP2 SWAP1 PUSH1 0x6B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x66 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x21 PUSH1 0xF9 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH1 0x96 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH1 0x7C JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH1 0xA7 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB6 PUSH9 0xD1AF5DA48DB52AADAF 0x28 PUSH9 0x6C130A63DF607DC250 SWAP9 0x5E 0xF MULMOD 0xEC EXTCODECOPY PUSH15 0x5F0A9964736F6C634300080D003300 ", "sourceMap": "1280:155:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1332:101;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;1383:13;1415:11;732:10;;;;;;;;;;;;-1:-1:-1;;;732:10:0;;;;;654:95;1415:11;1408:18;;1332:101;:::o;14:597:1:-;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;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o" }, "gasEstimates": { "creation": { "codeDepositCost": "48600", "executionCost": "99", "totalCost": "48699" }, "external": { "foo()": "infinite" } }, "legacyAssembly": { ".code": [ { "begin": 1280, "end": 1435, "name": "PUSH", "source": 0, "value": "80" }, { "begin": 1280, "end": 1435, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 1280, "end": 1435, "name": "MSTORE", "source": 0 }, { "begin": 1280, "end": 1435, "name": "CALLVALUE", "source": 0 }, { "begin": 1280, "end": 1435, "name": "DUP1", "source": 0 }, { "begin": 1280, "end": 1435, "name": "ISZERO", "source": 0 }, { "begin": 1280, "end": 1435, "name": "PUSH [tag]", "source": 0, "value": "1" }, { "begin": 1280, "end": 1435, "name": "JUMPI", "source": 0 }, { "begin": 1280, "end": 1435, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 1280, "end": 1435, "name": "DUP1", "source": 0 }, { "begin": 1280, "end": 1435, "name": "REVERT", "source": 0 }, { "begin": 1280, "end": 1435, "name": "tag", "source": 0, "value": "1" }, { "begin": 1280, "end": 1435, "name": "JUMPDEST", "source": 0 }, { "begin": 1280, "end": 1435, "name": "POP", "source": 0 }, { "begin": 1280, "end": 1435, "name": "PUSH #[$]", "source": 0, "value": "0000000000000000000000000000000000000000000000000000000000000000" }, { "begin": 1280, "end": 1435, "name": "DUP1", "source": 0 }, { "begin": 1280, "end": 1435, "name": "PUSH [$]", "source": 0, "value": "0000000000000000000000000000000000000000000000000000000000000000" }, { "begin": 1280, "end": 1435, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 1280, "end": 1435, "name": "CODECOPY", "source": 0 }, { "begin": 1280, "end": 1435, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 1280, "end": 1435, "name": "RETURN", "source": 0 } ], ".data": { "0": { ".auxdata": "a2646970667358221220b668d1af5da48db52aadaf28686c130a63df607dc250985e0f09ec3c6e5f0a9964736f6c634300080d0033", ".code": [ { "begin": 1280, "end": 1435, "name": "PUSH", "source": 0, "value": "80" }, { "begin": 1280, "end": 1435, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 1280, "end": 1435, "name": "MSTORE", "source": 0 }, { "begin": 1280, "end": 1435, "name": "CALLVALUE", "source": 0 }, { "begin": 1280, "end": 1435, "name": "DUP1", "source": 0 }, { "begin": 1280, "end": 1435, "name": "ISZERO", "source": 0 }, { "begin": 1280, "end": 1435, "name": "PUSH [tag]", "source": 0, "value": "1" }, { "begin": 1280, "end": 1435, "name": "JUMPI", "source": 0 }, { "begin": 1280, "end": 1435, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 1280, "end": 1435, "name": "DUP1", "source": 0 }, { "begin": 1280, "end": 1435, "name": "REVERT", "source": 0 }, { "begin": 1280, "end": 1435, "name": "tag", "source": 0, "value": "1" }, { "begin": 1280, "end": 1435, "name": "JUMPDEST", "source": 0 }, { "begin": 1280, "end": 1435, "name": "POP", "source": 0 }, { "begin": 1280, "end": 1435, "name": "PUSH", "source": 0, "value": "4" }, { "begin": 1280, "end": 1435, "name": "CALLDATASIZE", "source": 0 }, { "begin": 1280, "end": 1435, "name": "LT", "source": 0 }, { "begin": 1280, "end": 1435, "name": "PUSH [tag]", "source": 0, "value": "2" }, { "begin": 1280, "end": 1435, "name": "JUMPI", "source": 0 }, { "begin": 1280, "end": 1435, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 1280, "end": 1435, "name": "CALLDATALOAD", "source": 0 }, { "begin": 1280, "end": 1435, "name": "PUSH", "source": 0, "value": "E0" }, { "begin": 1280, "end": 1435, "name": "SHR", "source": 0 }, { "begin": 1280, "end": 1435, "name": "DUP1", "source": 0 }, { "begin": 1280, "end": 1435, "name": "PUSH", "source": 0, "value": "C2985578" }, { "begin": 1280, "end": 1435, "name": "EQ", "source": 0 }, { "begin": 1280, "end": 1435, "name": "PUSH [tag]", "source": 0, "value": "3" }, { "begin": 1280, "end": 1435, "name": "JUMPI", "source": 0 }, { "begin": 1280, "end": 1435, "name": "tag", "source": 0, "value": "2" }, { "begin": 1280, "end": 1435, "name": "JUMPDEST", "source": 0 }, { "begin": 1280, "end": 1435, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 1280, "end": 1435, "name": "DUP1", "source": 0 }, { "begin": 1280, "end": 1435, "name": "REVERT", "source": 0 }, { "begin": 1332, "end": 1433, "name": "tag", "source": 0, "value": "3" }, { "begin": 1332, "end": 1433, "name": "JUMPDEST", "source": 0 }, { "begin": 1332, "end": 1433, "name": "PUSH [tag]", "source": 0, "value": "4" }, { "begin": 1332, "end": 1433, "name": "PUSH [tag]", "source": 0, "value": "5" }, { "begin": 1332, "end": 1433, "name": "JUMP", "source": 0, "value": "[in]" }, { "begin": 1332, "end": 1433, "name": "tag", "source": 0, "value": "4" }, { "begin": 1332, "end": 1433, "name": "JUMPDEST", "source": 0 }, { "begin": 1332, "end": 1433, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 1332, "end": 1433, "name": "MLOAD", "source": 0 }, { "begin": 1332, "end": 1433, "name": "PUSH [tag]", "source": 0, "value": "6" }, { "begin": 1332, "end": 1433, "name": "SWAP2", "source": 0 }, { "begin": 1332, "end": 1433, "name": "SWAP1", "source": 0 }, { "begin": 1332, "end": 1433, "name": "PUSH [tag]", "source": 0, "value": "7" }, { "begin": 1332, "end": 1433, "name": "JUMP", "source": 0, "value": "[in]" }, { "begin": 1332, "end": 1433, "name": "tag", "source": 0, "value": "6" }, { "begin": 1332, "end": 1433, "name": "JUMPDEST", "source": 0 }, { "begin": 1332, "end": 1433, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 1332, "end": 1433, "name": "MLOAD", "source": 0 }, { "begin": 1332, "end": 1433, "name": "DUP1", "source": 0 }, { "begin": 1332, "end": 1433, "name": "SWAP2", "source": 0 }, { "begin": 1332, "end": 1433, "name": "SUB", "source": 0 }, { "begin": 1332, "end": 1433, "name": "SWAP1", "source": 0 }, { "begin": 1332, "end": 1433, "name": "RETURN", "source": 0 }, { "begin": 1332, "end": 1433, "name": "tag", "source": 0, "value": "5" }, { "begin": 1332, "end": 1433, "name": "JUMPDEST", "source": 0 }, { "begin": 1383, "end": 1396, "name": "PUSH", "source": 0, "value": "60" }, { "begin": 1415, "end": 1426, "name": "PUSH [tag]", "source": 0, "value": "9" }, { "begin": 732, "end": 742, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 732, "end": 742, "name": "DUP1", "source": 0 }, { "begin": 732, "end": 742, "name": "MLOAD", "source": 0 }, { "begin": 732, "end": 742, "name": "DUP1", "source": 0 }, { "begin": 732, "end": 742, "name": "DUP3", "source": 0 }, { "begin": 732, "end": 742, "name": "ADD", "source": 0 }, { "begin": 732, "end": 742, "name": "SWAP1", "source": 0 }, { "begin": 732, "end": 742, "name": "SWAP2", "source": 0 }, { "begin": 732, "end": 742, "name": "MSTORE", "source": 0 }, { "begin": 732, "end": 742, "name": "PUSH", "source": 0, "value": "1" }, { "begin": 732, "end": 742, "name": "DUP2", "source": 0 }, { "begin": 732, "end": 742, "name": "MSTORE", "source": 0 }, { "begin": -1, "end": -1, "name": "PUSH", "source": -1, "value": "21" }, { "begin": -1, "end": -1, "name": "PUSH", "source": -1, "value": "F9" }, { "begin": -1, "end": -1, "name": "SHL", "source": -1 }, { "begin": 732, "end": 742, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 732, "end": 742, "name": "DUP3", "source": 0 }, { "begin": 732, "end": 742, "name": "ADD", "source": 0 }, { "begin": 732, "end": 742, "name": "MSTORE", "source": 0 }, { "begin": 732, "end": 742, "name": "SWAP1", "source": 0 }, { "begin": 654, "end": 749, "name": "JUMP", "source": 0 }, { "begin": 1415, "end": 1426, "name": "tag", "source": 0, "value": "9" }, { "begin": 1415, "end": 1426, "name": "JUMPDEST", "source": 0 }, { "begin": 1408, "end": 1426, "name": "SWAP1", "source": 0 }, { "begin": 1408, "end": 1426, "name": "POP", "source": 0 }, { "begin": 1332, "end": 1433, "name": "SWAP1", "source": 0 }, { "begin": 1332, "end": 1433, "name": "JUMP", "source": 0, "value": "[out]" }, { "begin": 14, "end": 611, "name": "tag", "source": 1, "value": "7" }, { "begin": 14, "end": 611, "name": "JUMPDEST", "source": 1 }, { "begin": 126, "end": 130, "name": "PUSH", "source": 1, "value": "0" }, { "begin": 155, "end": 157, "name": "PUSH", "source": 1, "value": "20" }, { "begin": 184, "end": 186, "name": "DUP1", "source": 1 }, { "begin": 173, "end": 182, "name": "DUP4", "source": 1 }, { "begin": 166, "end": 187, "name": "MSTORE", "source": 1 }, { "begin": 216, "end": 222, "name": "DUP4", "source": 1 }, { "begin": 210, "end": 223, "name": "MLOAD", "source": 1 }, { "begin": 259, "end": 265, "name": "DUP1", "source": 1 }, { "begin": 254, "end": 256, "name": "DUP3", "source": 1 }, { "begin": 243, "end": 252, "name": "DUP6", "source": 1 }, { "begin": 239, "end": 257, "name": "ADD", "source": 1 }, { "begin": 232, "end": 266, "name": "MSTORE", "source": 1 }, { "begin": 284, "end": 285, "name": "PUSH", "source": 1, "value": "0" }, { "begin": 294, "end": 434, "name": "tag", "source": 1, "value": "14" }, { "begin": 294, "end": 434, "name": "JUMPDEST", "source": 1 }, { "begin": 308, "end": 314, "name": "DUP2", "source": 1 }, { "begin": 305, "end": 306, "name": "DUP2", "source": 1 }, { "begin": 302, "end": 315, "name": "LT", "source": 1 }, { "begin": 294, "end": 434, "name": "ISZERO", "source": 1 }, { "begin": 294, "end": 434, "name": "PUSH [tag]", "source": 1, "value": "16" }, { "begin": 294, "end": 434, "name": "JUMPI", "source": 1 }, { "begin": 403, "end": 417, "name": "DUP6", "source": 1 }, { "begin": 403, "end": 417, "name": "DUP2", "source": 1 }, { "begin": 403, "end": 417, "name": "ADD", "source": 1 }, { "begin": 399, "end": 422, "name": "DUP4", "source": 1 }, { "begin": 399, "end": 422, "name": "ADD", "source": 1 }, { "begin": 393, "end": 423, "name": "MLOAD", "source": 1 }, { "begin": 369, "end": 386, "name": "DUP6", "source": 1 }, { "begin": 369, "end": 386, "name": "DUP3", "source": 1 }, { "begin": 369, "end": 386, "name": "ADD", "source": 1 }, { "begin": 388, "end": 390, "name": "PUSH", "source": 1, "value": "40" }, { "begin": 365, "end": 391, "name": "ADD", "source": 1 }, { "begin": 358, "end": 424, "name": "MSTORE", "source": 1 }, { "begin": 323, "end": 333, "name": "DUP3", "source": 1 }, { "begin": 323, "end": 333, "name": "ADD", "source": 1 }, { "begin": 294, "end": 434, "name": "PUSH [tag]", "source": 1, "value": "14" }, { "begin": 294, "end": 434, "name": "JUMP", "source": 1 }, { "begin": 294, "end": 434, "name": "tag", "source": 1, "value": "16" }, { "begin": 294, "end": 434, "name": "JUMPDEST", "source": 1 }, { "begin": 452, "end": 458, "name": "DUP2", "source": 1 }, { "begin": 449, "end": 450, "name": "DUP2", "source": 1 }, { "begin": 446, "end": 459, "name": "GT", "source": 1 }, { "begin": 443, "end": 534, "name": "ISZERO", "source": 1 }, { "begin": 443, "end": 534, "name": "PUSH [tag]", "source": 1, "value": "17" }, { "begin": 443, "end": 534, "name": "JUMPI", "source": 1 }, { "begin": 522, "end": 523, "name": "PUSH", "source": 1, "value": "0" }, { "begin": 517, "end": 519, "name": "PUSH", "source": 1, "value": "40" }, { "begin": 508, "end": 514, "name": "DUP4", "source": 1 }, { "begin": 497, "end": 506, "name": "DUP8", "source": 1 }, { "begin": 493, "end": 515, "name": "ADD", "source": 1 }, { "begin": 489, "end": 520, "name": "ADD", "source": 1 }, { "begin": 482, "end": 524, "name": "MSTORE", "source": 1 }, { "begin": 443, "end": 534, "name": "tag", "source": 1, "value": "17" }, { "begin": 443, "end": 534, "name": "JUMPDEST", "source": 1 }, { "begin": -1, "end": -1, "name": "POP", "source": -1 }, { "begin": 595, "end": 597, "name": "PUSH", "source": 1, "value": "1F" }, { "begin": 574, "end": 589, "name": "ADD", "source": 1 }, { "begin": -1, "end": -1, "name": "PUSH", "source": -1, "value": "1F" }, { "begin": -1, "end": -1, "name": "NOT", "source": -1 }, { "begin": 570, "end": 599, "name": "AND", "source": 1 }, { "begin": 555, "end": 600, "name": "SWAP3", "source": 1 }, { "begin": 555, "end": 600, "name": "SWAP1", "source": 1 }, { "begin": 555, "end": 600, "name": "SWAP3", "source": 1 }, { "begin": 555, "end": 600, "name": "ADD", "source": 1 }, { "begin": 602, "end": 604, "name": "PUSH", "source": 1, "value": "40" }, { "begin": 551, "end": 605, "name": "ADD", "source": 1 }, { "begin": 551, "end": 605, "name": "SWAP4", "source": 1 }, { "begin": 14, "end": 611, "name": "SWAP3", "source": 1 }, { "begin": -1, "end": -1, "name": "POP", "source": -1 }, { "begin": -1, "end": -1, "name": "POP", "source": -1 }, { "begin": -1, "end": -1, "name": "POP", "source": -1 }, { "begin": 14, "end": 611, "name": "JUMP", "source": 1, "value": "[out]" } ] } } }, "methodIdentifiers": { "foo()": "c2985578" } }, "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"foo\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Inheritance.sol\":\"E\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Inheritance.sol\":{\"keccak256\":\"0x3ac07eb1f8f22b03dd0c7bf841e4bd44d01f1671337dbbefe1d73e08a79e4fdd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://782849c13e7b356887aa845822d41e5cfeeb518709a7333a5626ce618094b26e\",\"dweb:/ipfs/QmQTp3vawZnzXirtJajDnmtKVFMtbTCZXJWFSCnwbE7pKT\"]}},\"version\":1}", "storageLayout": { "storage": [], "types": null }, "userdoc": { "kind": "user", "methods": {}, "version": 1 } }, "F": { "abi": [ { "inputs": [], "name": "foo", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "pure", "type": "function" } ], "devdoc": { "kind": "dev", "methods": {}, "version": 1 }, "evm": { "assembly": " /* \"contracts/Inheritance.sol\":1582:1710 contract F is A, B {... */\n mstore(0x40, 0x80)\n callvalue\n dup1\n iszero\n tag_1\n jumpi\n 0x00\n dup1\n revert\ntag_1:\n pop\n dataSize(sub_0)\n dup1\n dataOffset(sub_0)\n 0x00\n codecopy\n 0x00\n return\nstop\n\nsub_0: assembly {\n /* \"contracts/Inheritance.sol\":1582:1710 contract F is A, B {... */\n mstore(0x40, 0x80)\n callvalue\n dup1\n iszero\n tag_1\n jumpi\n 0x00\n dup1\n revert\n tag_1:\n pop\n jumpi(tag_2, lt(calldatasize, 0x04))\n shr(0xe0, calldataload(0x00))\n dup1\n 0xc2985578\n eq\n tag_3\n jumpi\n tag_2:\n 0x00\n dup1\n revert\n /* \"contracts/Inheritance.sol\":1607:1708 function foo() public pure override(A, B) returns (string memory) {... */\n tag_3:\n tag_4\n tag_5\n jump\t// in\n tag_4:\n mload(0x40)\n tag_6\n swap2\n swap1\n tag_7\n jump\t// in\n tag_6:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n tag_5:\n /* \"contracts/Inheritance.sol\":1658:1671 string memory */\n 0x60\n /* \"contracts/Inheritance.sol\":1690:1701 super.foo() */\n tag_9\n /* \"contracts/Inheritance.sol\":732:742 return \"B\" */\n 0x40\n dup1\n mload\n dup1\n dup3\n add\n swap1\n swap2\n mstore\n 0x01\n dup2\n mstore\n shl(0xf9, 0x21)\n 0x20\n dup3\n add\n mstore\n swap1\n /* \"contracts/Inheritance.sol\":654:749 function foo() public pure virtual override returns (string memory) {... */\n jump\n /* \"contracts/Inheritance.sol\":1690:1701 super.foo() */\n tag_9:\n /* \"contracts/Inheritance.sol\":1683:1701 return super.foo() */\n swap1\n pop\n /* \"contracts/Inheritance.sol\":1607:1708 function foo() public pure override(A, B) returns (string memory) {... */\n swap1\n jump\t// out\n /* \"#utility.yul\":14:611 */\n tag_7:\n /* \"#utility.yul\":126:130 */\n 0x00\n /* \"#utility.yul\":155:157 */\n 0x20\n /* \"#utility.yul\":184:186 */\n dup1\n /* \"#utility.yul\":173:182 */\n dup4\n /* \"#utility.yul\":166:187 */\n mstore\n /* \"#utility.yul\":216:222 */\n dup4\n /* \"#utility.yul\":210:223 */\n mload\n /* \"#utility.yul\":259:265 */\n dup1\n /* \"#utility.yul\":254:256 */\n dup3\n /* \"#utility.yul\":243:252 */\n dup6\n /* \"#utility.yul\":239:257 */\n add\n /* \"#utility.yul\":232:266 */\n mstore\n /* \"#utility.yul\":284:285 */\n 0x00\n /* \"#utility.yul\":294:434 */\n tag_14:\n /* \"#utility.yul\":308:314 */\n dup2\n /* \"#utility.yul\":305:306 */\n dup2\n /* \"#utility.yul\":302:315 */\n lt\n /* \"#utility.yul\":294:434 */\n iszero\n tag_16\n jumpi\n /* \"#utility.yul\":403:417 */\n dup6\n dup2\n add\n /* \"#utility.yul\":399:422 */\n dup4\n add\n /* \"#utility.yul\":393:423 */\n mload\n /* \"#utility.yul\":369:386 */\n dup6\n dup3\n add\n /* \"#utility.yul\":388:390 */\n 0x40\n /* \"#utility.yul\":365:391 */\n add\n /* \"#utility.yul\":358:424 */\n mstore\n /* \"#utility.yul\":323:333 */\n dup3\n add\n /* \"#utility.yul\":294:434 */\n jump(tag_14)\n tag_16:\n /* \"#utility.yul\":452:458 */\n dup2\n /* \"#utility.yul\":449:450 */\n dup2\n /* \"#utility.yul\":446:459 */\n gt\n /* \"#utility.yul\":443:534 */\n iszero\n tag_17\n jumpi\n /* \"#utility.yul\":522:523 */\n 0x00\n /* \"#utility.yul\":517:519 */\n 0x40\n /* \"#utility.yul\":508:514 */\n dup4\n /* \"#utility.yul\":497:506 */\n dup8\n /* \"#utility.yul\":493:515 */\n add\n /* \"#utility.yul\":489:520 */\n add\n /* \"#utility.yul\":482:524 */\n mstore\n /* \"#utility.yul\":443:534 */\n tag_17:\n pop\n /* \"#utility.yul\":595:597 */\n 0x1f\n /* \"#utility.yul\":574:589 */\n add\n not(0x1f)\n /* \"#utility.yul\":570:599 */\n and\n /* \"#utility.yul\":555:600 */\n swap3\n swap1\n swap3\n add\n /* \"#utility.yul\":602:604 */\n 0x40\n /* \"#utility.yul\":551:605 */\n add\n swap4\n /* \"#utility.yul\":14:611 */\n swap3\n pop\n pop\n pop\n jump\t// out\n\n auxdata: 0xa264697066735822122060e70e2c1a1f990a5a4eee875d88589e58cf90c3df05bd99c98d2848bc6d208b64736f6c634300080d0033\n}\n", "bytecode": { "functionDebugData": {}, "generatedSources": [], "linkReferences": {}, "object": "608060405234801561001057600080fd5b5060f38061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b60336047565b604051603e9190606b565b60405180910390f35b606060666040805180820190915260018152602160f91b602082015290565b905090565b600060208083528351808285015260005b81811015609657858101830151858201604001528201607c565b8181111560a7576000604083870101525b50601f01601f191692909201604001939250505056fea264697066735822122060e70e2c1a1f990a5a4eee875d88589e58cf90c3df05bd99c98d2848bc6d208b64736f6c634300080d0033", "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xF3 DUP1 PUSH2 0x1F 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 0xC2985578 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x33 PUSH1 0x47 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x3E SWAP2 SWAP1 PUSH1 0x6B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x66 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x21 PUSH1 0xF9 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH1 0x96 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH1 0x7C JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH1 0xA7 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH1 0xE7 0xE 0x2C BYTE 0x1F SWAP10 EXP GAS 0x4E 0xEE DUP8 0x5D DUP9 PC SWAP15 PC 0xCF SWAP1 0xC3 0xDF SDIV 0xBD SWAP10 0xC9 DUP14 0x28 BASEFEE 0xBC PUSH14 0x208B64736F6C634300080D003300 ", "sourceMap": "1582:128:0:-:0;;;;;;;;;;;;;;;;;;;" }, "deployedBytecode": { "functionDebugData": { "@foo_21": { "entryPoint": null, "id": 21, "parameterSlots": 0, "returnSlots": 1 }, "@foo_87": { "entryPoint": 71, "id": 87, "parameterSlots": 0, "returnSlots": 1 }, "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": { "entryPoint": 107, "id": null, "parameterSlots": 2, "returnSlots": 1 } }, "generatedSources": [ { "ast": { "nodeType": "YulBlock", "src": "0:613:1", "statements": [ { "nodeType": "YulBlock", "src": "6:3:1", "statements": [] }, { "body": { "nodeType": "YulBlock", "src": "135:476:1", "statements": [ { "nodeType": "YulVariableDeclaration", "src": "145:12:1", "value": { "kind": "number", "nodeType": "YulLiteral", "src": "155:2:1", "type": "", "value": "32" }, "variables": [ { "name": "_1", "nodeType": "YulTypedName", "src": "149:2:1", "type": "" } ] }, { "expression": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "173:9:1" }, { "name": "_1", "nodeType": "YulIdentifier", "src": "184:2:1" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "166:6:1" }, "nodeType": "YulFunctionCall", "src": "166:21:1" }, "nodeType": "YulExpressionStatement", "src": "166:21:1" }, { "nodeType": "YulVariableDeclaration", "src": "196:27:1", "value": { "arguments": [ { "name": "value0", "nodeType": "YulIdentifier", "src": "216:6:1" } ], "functionName": { "name": "mload", "nodeType": "YulIdentifier", "src": "210:5:1" }, "nodeType": "YulFunctionCall", "src": "210:13:1" }, "variables": [ { "name": "length", "nodeType": "YulTypedName", "src": "200:6:1", "type": "" } ] }, { "expression": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "243:9:1" }, { "name": "_1", "nodeType": "YulIdentifier", "src": "254:2:1" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "239:3:1" }, "nodeType": "YulFunctionCall", "src": "239:18:1" }, { "name": "length", "nodeType": "YulIdentifier", "src": "259:6:1" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "232:6:1" }, "nodeType": "YulFunctionCall", "src": "232:34:1" }, "nodeType": "YulExpressionStatement", "src": "232:34:1" }, { "nodeType": "YulVariableDeclaration", "src": "275:10:1", "value": { "kind": "number", "nodeType": "YulLiteral", "src": "284:1:1", "type": "", "value": "0" }, "variables": [ { "name": "i", "nodeType": "YulTypedName", "src": "279:1:1", "type": "" } ] }, { "body": { "nodeType": "YulBlock", "src": "344:90:1", "statements": [ { "expression": { "arguments": [ { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "373:9:1" }, { "name": "i", "nodeType": "YulIdentifier", "src": "384:1:1" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "369:3:1" }, "nodeType": "YulFunctionCall", "src": "369:17:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "388:2:1", "type": "", "value": "64" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "365:3:1" }, "nodeType": "YulFunctionCall", "src": "365:26:1" }, { "arguments": [ { "arguments": [ { "arguments": [ { "name": "value0", "nodeType": "YulIdentifier", "src": "407:6:1" }, { "name": "i", "nodeType": "YulIdentifier", "src": "415:1:1" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "403:3:1" }, "nodeType": "YulFunctionCall", "src": "403:14:1" }, { "name": "_1", "nodeType": "YulIdentifier", "src": "419:2:1" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "399:3:1" }, "nodeType": "YulFunctionCall", "src": "399:23:1" } ], "functionName": { "name": "mload", "nodeType": "YulIdentifier", "src": "393:5:1" }, "nodeType": "YulFunctionCall", "src": "393:30:1" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "358:6:1" }, "nodeType": "YulFunctionCall", "src": "358:66:1" }, "nodeType": "YulExpressionStatement", "src": "358:66:1" } ] }, "condition": { "arguments": [ { "name": "i", "nodeType": "YulIdentifier", "src": "305:1:1" }, { "name": "length", "nodeType": "YulIdentifier", "src": "308:6:1" } ], "functionName": { "name": "lt", "nodeType": "YulIdentifier", "src": "302:2:1" }, "nodeType": "YulFunctionCall", "src": "302:13:1" }, "nodeType": "YulForLoop", "post": { "nodeType": "YulBlock", "src": "316:19:1", "statements": [ { "nodeType": "YulAssignment", "src": "318:15:1", "value": { "arguments": [ { "name": "i", "nodeType": "YulIdentifier", "src": "327:1:1" }, { "name": "_1", "nodeType": "YulIdentifier", "src": "330:2:1" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "323:3:1" }, "nodeType": "YulFunctionCall", "src": "323:10:1" }, "variableNames": [ { "name": "i", "nodeType": "YulIdentifier", "src": "318:1:1" } ] } ] }, "pre": { "nodeType": "YulBlock", "src": "298:3:1", "statements": [] }, "src": "294:140:1" }, { "body": { "nodeType": "YulBlock", "src": "468:66:1", "statements": [ { "expression": { "arguments": [ { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "497:9:1" }, { "name": "length", "nodeType": "YulIdentifier", "src": "508:6:1" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "493:3:1" }, "nodeType": "YulFunctionCall", "src": "493:22:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "517:2:1", "type": "", "value": "64" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "489:3:1" }, "nodeType": "YulFunctionCall", "src": "489:31:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "522:1:1", "type": "", "value": "0" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "482:6:1" }, "nodeType": "YulFunctionCall", "src": "482:42:1" }, "nodeType": "YulExpressionStatement", "src": "482:42:1" } ] }, "condition": { "arguments": [ { "name": "i", "nodeType": "YulIdentifier", "src": "449:1:1" }, { "name": "length", "nodeType": "YulIdentifier", "src": "452:6:1" } ], "functionName": { "name": "gt", "nodeType": "YulIdentifier", "src": "446:2:1" }, "nodeType": "YulFunctionCall", "src": "446:13:1" }, "nodeType": "YulIf", "src": "443:91:1" }, { "nodeType": "YulAssignment", "src": "543:62:1", "value": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "559:9:1" }, { "arguments": [ { "arguments": [ { "name": "length", "nodeType": "YulIdentifier", "src": "578:6:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "586:2:1", "type": "", "value": "31" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "574:3:1" }, "nodeType": "YulFunctionCall", "src": "574:15:1" }, { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "595:2:1", "type": "", "value": "31" } ], "functionName": { "name": "not", "nodeType": "YulIdentifier", "src": "591:3:1" }, "nodeType": "YulFunctionCall", "src": "591:7:1" } ], "functionName": { "name": "and", "nodeType": "YulIdentifier", "src": "570:3:1" }, "nodeType": "YulFunctionCall", "src": "570:29:1" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "555:3:1" }, "nodeType": "YulFunctionCall", "src": "555:45:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "602:2:1", "type": "", "value": "64" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "551:3:1" }, "nodeType": "YulFunctionCall", "src": "551:54:1" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", "src": "543:4:1" } ] } ] }, "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:1", "type": "" }, { "name": "value0", "nodeType": "YulTypedName", "src": "115:6:1", "type": "" } ], "returnVariables": [ { "name": "tail", "nodeType": "YulTypedName", "src": "126:4:1", "type": "" } ], "src": "14:597:1" } ] }, "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), not(31))), 64)\n }\n}", "id": 1, "language": "Yul", "name": "#utility.yul" } ], "immutableReferences": {}, "linkReferences": {}, "object": "6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b60336047565b604051603e9190606b565b60405180910390f35b606060666040805180820190915260018152602160f91b602082015290565b905090565b600060208083528351808285015260005b81811015609657858101830151858201604001528201607c565b8181111560a7576000604083870101525b50601f01601f191692909201604001939250505056fea264697066735822122060e70e2c1a1f990a5a4eee875d88589e58cf90c3df05bd99c98d2848bc6d208b64736f6c634300080d0033", "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 0xC2985578 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x33 PUSH1 0x47 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x3E SWAP2 SWAP1 PUSH1 0x6B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x66 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x21 PUSH1 0xF9 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH1 0x96 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH1 0x7C JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH1 0xA7 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH1 0xE7 0xE 0x2C BYTE 0x1F SWAP10 EXP GAS 0x4E 0xEE DUP8 0x5D DUP9 PC SWAP15 PC 0xCF SWAP1 0xC3 0xDF SDIV 0xBD SWAP10 0xC9 DUP14 0x28 BASEFEE 0xBC PUSH14 0x208B64736F6C634300080D003300 ", "sourceMap": "1582:128:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1607:101;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;1658:13;1690:11;732:10;;;;;;;;;;;;-1:-1:-1;;;732:10:0;;;;;654:95;1690:11;1683:18;;1607:101;:::o;14:597:1:-;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;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o" }, "gasEstimates": { "creation": { "codeDepositCost": "48600", "executionCost": "99", "totalCost": "48699" }, "external": { "foo()": "infinite" } }, "legacyAssembly": { ".code": [ { "begin": 1582, "end": 1710, "name": "PUSH", "source": 0, "value": "80" }, { "begin": 1582, "end": 1710, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 1582, "end": 1710, "name": "MSTORE", "source": 0 }, { "begin": 1582, "end": 1710, "name": "CALLVALUE", "source": 0 }, { "begin": 1582, "end": 1710, "name": "DUP1", "source": 0 }, { "begin": 1582, "end": 1710, "name": "ISZERO", "source": 0 }, { "begin": 1582, "end": 1710, "name": "PUSH [tag]", "source": 0, "value": "1" }, { "begin": 1582, "end": 1710, "name": "JUMPI", "source": 0 }, { "begin": 1582, "end": 1710, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 1582, "end": 1710, "name": "DUP1", "source": 0 }, { "begin": 1582, "end": 1710, "name": "REVERT", "source": 0 }, { "begin": 1582, "end": 1710, "name": "tag", "source": 0, "value": "1" }, { "begin": 1582, "end": 1710, "name": "JUMPDEST", "source": 0 }, { "begin": 1582, "end": 1710, "name": "POP", "source": 0 }, { "begin": 1582, "end": 1710, "name": "PUSH #[$]", "source": 0, "value": "0000000000000000000000000000000000000000000000000000000000000000" }, { "begin": 1582, "end": 1710, "name": "DUP1", "source": 0 }, { "begin": 1582, "end": 1710, "name": "PUSH [$]", "source": 0, "value": "0000000000000000000000000000000000000000000000000000000000000000" }, { "begin": 1582, "end": 1710, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 1582, "end": 1710, "name": "CODECOPY", "source": 0 }, { "begin": 1582, "end": 1710, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 1582, "end": 1710, "name": "RETURN", "source": 0 } ], ".data": { "0": { ".auxdata": "a264697066735822122060e70e2c1a1f990a5a4eee875d88589e58cf90c3df05bd99c98d2848bc6d208b64736f6c634300080d0033", ".code": [ { "begin": 1582, "end": 1710, "name": "PUSH", "source": 0, "value": "80" }, { "begin": 1582, "end": 1710, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 1582, "end": 1710, "name": "MSTORE", "source": 0 }, { "begin": 1582, "end": 1710, "name": "CALLVALUE", "source": 0 }, { "begin": 1582, "end": 1710, "name": "DUP1", "source": 0 }, { "begin": 1582, "end": 1710, "name": "ISZERO", "source": 0 }, { "begin": 1582, "end": 1710, "name": "PUSH [tag]", "source": 0, "value": "1" }, { "begin": 1582, "end": 1710, "name": "JUMPI", "source": 0 }, { "begin": 1582, "end": 1710, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 1582, "end": 1710, "name": "DUP1", "source": 0 }, { "begin": 1582, "end": 1710, "name": "REVERT", "source": 0 }, { "begin": 1582, "end": 1710, "name": "tag", "source": 0, "value": "1" }, { "begin": 1582, "end": 1710, "name": "JUMPDEST", "source": 0 }, { "begin": 1582, "end": 1710, "name": "POP", "source": 0 }, { "begin": 1582, "end": 1710, "name": "PUSH", "source": 0, "value": "4" }, { "begin": 1582, "end": 1710, "name": "CALLDATASIZE", "source": 0 }, { "begin": 1582, "end": 1710, "name": "LT", "source": 0 }, { "begin": 1582, "end": 1710, "name": "PUSH [tag]", "source": 0, "value": "2" }, { "begin": 1582, "end": 1710, "name": "JUMPI", "source": 0 }, { "begin": 1582, "end": 1710, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 1582, "end": 1710, "name": "CALLDATALOAD", "source": 0 }, { "begin": 1582, "end": 1710, "name": "PUSH", "source": 0, "value": "E0" }, { "begin": 1582, "end": 1710, "name": "SHR", "source": 0 }, { "begin": 1582, "end": 1710, "name": "DUP1", "source": 0 }, { "begin": 1582, "end": 1710, "name": "PUSH", "source": 0, "value": "C2985578" }, { "begin": 1582, "end": 1710, "name": "EQ", "source": 0 }, { "begin": 1582, "end": 1710, "name": "PUSH [tag]", "source": 0, "value": "3" }, { "begin": 1582, "end": 1710, "name": "JUMPI", "source": 0 }, { "begin": 1582, "end": 1710, "name": "tag", "source": 0, "value": "2" }, { "begin": 1582, "end": 1710, "name": "JUMPDEST", "source": 0 }, { "begin": 1582, "end": 1710, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 1582, "end": 1710, "name": "DUP1", "source": 0 }, { "begin": 1582, "end": 1710, "name": "REVERT", "source": 0 }, { "begin": 1607, "end": 1708, "name": "tag", "source": 0, "value": "3" }, { "begin": 1607, "end": 1708, "name": "JUMPDEST", "source": 0 }, { "begin": 1607, "end": 1708, "name": "PUSH [tag]", "source": 0, "value": "4" }, { "begin": 1607, "end": 1708, "name": "PUSH [tag]", "source": 0, "value": "5" }, { "begin": 1607, "end": 1708, "name": "JUMP", "source": 0, "value": "[in]" }, { "begin": 1607, "end": 1708, "name": "tag", "source": 0, "value": "4" }, { "begin": 1607, "end": 1708, "name": "JUMPDEST", "source": 0 }, { "begin": 1607, "end": 1708, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 1607, "end": 1708, "name": "MLOAD", "source": 0 }, { "begin": 1607, "end": 1708, "name": "PUSH [tag]", "source": 0, "value": "6" }, { "begin": 1607, "end": 1708, "name": "SWAP2", "source": 0 }, { "begin": 1607, "end": 1708, "name": "SWAP1", "source": 0 }, { "begin": 1607, "end": 1708, "name": "PUSH [tag]", "source": 0, "value": "7" }, { "begin": 1607, "end": 1708, "name": "JUMP", "source": 0, "value": "[in]" }, { "begin": 1607, "end": 1708, "name": "tag", "source": 0, "value": "6" }, { "begin": 1607, "end": 1708, "name": "JUMPDEST", "source": 0 }, { "begin": 1607, "end": 1708, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 1607, "end": 1708, "name": "MLOAD", "source": 0 }, { "begin": 1607, "end": 1708, "name": "DUP1", "source": 0 }, { "begin": 1607, "end": 1708, "name": "SWAP2", "source": 0 }, { "begin": 1607, "end": 1708, "name": "SUB", "source": 0 }, { "begin": 1607, "end": 1708, "name": "SWAP1", "source": 0 }, { "begin": 1607, "end": 1708, "name": "RETURN", "source": 0 }, { "begin": 1607, "end": 1708, "name": "tag", "source": 0, "value": "5" }, { "begin": 1607, "end": 1708, "name": "JUMPDEST", "source": 0 }, { "begin": 1658, "end": 1671, "name": "PUSH", "source": 0, "value": "60" }, { "begin": 1690, "end": 1701, "name": "PUSH [tag]", "source": 0, "value": "9" }, { "begin": 732, "end": 742, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 732, "end": 742, "name": "DUP1", "source": 0 }, { "begin": 732, "end": 742, "name": "MLOAD", "source": 0 }, { "begin": 732, "end": 742, "name": "DUP1", "source": 0 }, { "begin": 732, "end": 742, "name": "DUP3", "source": 0 }, { "begin": 732, "end": 742, "name": "ADD", "source": 0 }, { "begin": 732, "end": 742, "name": "SWAP1", "source": 0 }, { "begin": 732, "end": 742, "name": "SWAP2", "source": 0 }, { "begin": 732, "end": 742, "name": "MSTORE", "source": 0 }, { "begin": 732, "end": 742, "name": "PUSH", "source": 0, "value": "1" }, { "begin": 732, "end": 742, "name": "DUP2", "source": 0 }, { "begin": 732, "end": 742, "name": "MSTORE", "source": 0 }, { "begin": -1, "end": -1, "name": "PUSH", "source": -1, "value": "21" }, { "begin": -1, "end": -1, "name": "PUSH", "source": -1, "value": "F9" }, { "begin": -1, "end": -1, "name": "SHL", "source": -1 }, { "begin": 732, "end": 742, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 732, "end": 742, "name": "DUP3", "source": 0 }, { "begin": 732, "end": 742, "name": "ADD", "source": 0 }, { "begin": 732, "end": 742, "name": "MSTORE", "source": 0 }, { "begin": 732, "end": 742, "name": "SWAP1", "source": 0 }, { "begin": 654, "end": 749, "name": "JUMP", "source": 0 }, { "begin": 1690, "end": 1701, "name": "tag", "source": 0, "value": "9" }, { "begin": 1690, "end": 1701, "name": "JUMPDEST", "source": 0 }, { "begin": 1683, "end": 1701, "name": "SWAP1", "source": 0 }, { "begin": 1683, "end": 1701, "name": "POP", "source": 0 }, { "begin": 1607, "end": 1708, "name": "SWAP1", "source": 0 }, { "begin": 1607, "end": 1708, "name": "JUMP", "source": 0, "value": "[out]" }, { "begin": 14, "end": 611, "name": "tag", "source": 1, "value": "7" }, { "begin": 14, "end": 611, "name": "JUMPDEST", "source": 1 }, { "begin": 126, "end": 130, "name": "PUSH", "source": 1, "value": "0" }, { "begin": 155, "end": 157, "name": "PUSH", "source": 1, "value": "20" }, { "begin": 184, "end": 186, "name": "DUP1", "source": 1 }, { "begin": 173, "end": 182, "name": "DUP4", "source": 1 }, { "begin": 166, "end": 187, "name": "MSTORE", "source": 1 }, { "begin": 216, "end": 222, "name": "DUP4", "source": 1 }, { "begin": 210, "end": 223, "name": "MLOAD", "source": 1 }, { "begin": 259, "end": 265, "name": "DUP1", "source": 1 }, { "begin": 254, "end": 256, "name": "DUP3", "source": 1 }, { "begin": 243, "end": 252, "name": "DUP6", "source": 1 }, { "begin": 239, "end": 257, "name": "ADD", "source": 1 }, { "begin": 232, "end": 266, "name": "MSTORE", "source": 1 }, { "begin": 284, "end": 285, "name": "PUSH", "source": 1, "value": "0" }, { "begin": 294, "end": 434, "name": "tag", "source": 1, "value": "14" }, { "begin": 294, "end": 434, "name": "JUMPDEST", "source": 1 }, { "begin": 308, "end": 314, "name": "DUP2", "source": 1 }, { "begin": 305, "end": 306, "name": "DUP2", "source": 1 }, { "begin": 302, "end": 315, "name": "LT", "source": 1 }, { "begin": 294, "end": 434, "name": "ISZERO", "source": 1 }, { "begin": 294, "end": 434, "name": "PUSH [tag]", "source": 1, "value": "16" }, { "begin": 294, "end": 434, "name": "JUMPI", "source": 1 }, { "begin": 403, "end": 417, "name": "DUP6", "source": 1 }, { "begin": 403, "end": 417, "name": "DUP2", "source": 1 }, { "begin": 403, "end": 417, "name": "ADD", "source": 1 }, { "begin": 399, "end": 422, "name": "DUP4", "source": 1 }, { "begin": 399, "end": 422, "name": "ADD", "source": 1 }, { "begin": 393, "end": 423, "name": "MLOAD", "source": 1 }, { "begin": 369, "end": 386, "name": "DUP6", "source": 1 }, { "begin": 369, "end": 386, "name": "DUP3", "source": 1 }, { "begin": 369, "end": 386, "name": "ADD", "source": 1 }, { "begin": 388, "end": 390, "name": "PUSH", "source": 1, "value": "40" }, { "begin": 365, "end": 391, "name": "ADD", "source": 1 }, { "begin": 358, "end": 424, "name": "MSTORE", "source": 1 }, { "begin": 323, "end": 333, "name": "DUP3", "source": 1 }, { "begin": 323, "end": 333, "name": "ADD", "source": 1 }, { "begin": 294, "end": 434, "name": "PUSH [tag]", "source": 1, "value": "14" }, { "begin": 294, "end": 434, "name": "JUMP", "source": 1 }, { "begin": 294, "end": 434, "name": "tag", "source": 1, "value": "16" }, { "begin": 294, "end": 434, "name": "JUMPDEST", "source": 1 }, { "begin": 452, "end": 458, "name": "DUP2", "source": 1 }, { "begin": 449, "end": 450, "name": "DUP2", "source": 1 }, { "begin": 446, "end": 459, "name": "GT", "source": 1 }, { "begin": 443, "end": 534, "name": "ISZERO", "source": 1 }, { "begin": 443, "end": 534, "name": "PUSH [tag]", "source": 1, "value": "17" }, { "begin": 443, "end": 534, "name": "JUMPI", "source": 1 }, { "begin": 522, "end": 523, "name": "PUSH", "source": 1, "value": "0" }, { "begin": 517, "end": 519, "name": "PUSH", "source": 1, "value": "40" }, { "begin": 508, "end": 514, "name": "DUP4", "source": 1 }, { "begin": 497, "end": 506, "name": "DUP8", "source": 1 }, { "begin": 493, "end": 515, "name": "ADD", "source": 1 }, { "begin": 489, "end": 520, "name": "ADD", "source": 1 }, { "begin": 482, "end": 524, "name": "MSTORE", "source": 1 }, { "begin": 443, "end": 534, "name": "tag", "source": 1, "value": "17" }, { "begin": 443, "end": 534, "name": "JUMPDEST", "source": 1 }, { "begin": -1, "end": -1, "name": "POP", "source": -1 }, { "begin": 595, "end": 597, "name": "PUSH", "source": 1, "value": "1F" }, { "begin": 574, "end": 589, "name": "ADD", "source": 1 }, { "begin": -1, "end": -1, "name": "PUSH", "source": -1, "value": "1F" }, { "begin": -1, "end": -1, "name": "NOT", "source": -1 }, { "begin": 570, "end": 599, "name": "AND", "source": 1 }, { "begin": 555, "end": 600, "name": "SWAP3", "source": 1 }, { "begin": 555, "end": 600, "name": "SWAP1", "source": 1 }, { "begin": 555, "end": 600, "name": "SWAP3", "source": 1 }, { "begin": 555, "end": 600, "name": "ADD", "source": 1 }, { "begin": 602, "end": 604, "name": "PUSH", "source": 1, "value": "40" }, { "begin": 551, "end": 605, "name": "ADD", "source": 1 }, { "begin": 551, "end": 605, "name": "SWAP4", "source": 1 }, { "begin": 14, "end": 611, "name": "SWAP3", "source": 1 }, { "begin": -1, "end": -1, "name": "POP", "source": -1 }, { "begin": -1, "end": -1, "name": "POP", "source": -1 }, { "begin": -1, "end": -1, "name": "POP", "source": -1 }, { "begin": 14, "end": 611, "name": "JUMP", "source": 1, "value": "[out]" } ] } } }, "methodIdentifiers": { "foo()": "c2985578" } }, "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"foo\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Inheritance.sol\":\"F\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Inheritance.sol\":{\"keccak256\":\"0x3ac07eb1f8f22b03dd0c7bf841e4bd44d01f1671337dbbefe1d73e08a79e4fdd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://782849c13e7b356887aa845822d41e5cfeeb518709a7333a5626ce618094b26e\",\"dweb:/ipfs/QmQTp3vawZnzXirtJajDnmtKVFMtbTCZXJWFSCnwbE7pKT\"]}},\"version\":1}", "storageLayout": { "storage": [], "types": null }, "userdoc": { "kind": "user", "methods": {}, "version": 1 } } } }, "sources": { "contracts/Inheritance.sol": { "ast": { "absolutePath": "contracts/Inheritance.sol", "exportedSymbols": { "A": [ 10 ], "B": [ 22 ], "C": [ 34 ], "D": [ 52 ], "E": [ 70 ], "F": [ 88 ] }, "id": 89, "license": "MIT", "nodeType": "SourceUnit", "nodes": [ { "id": 1, "literals": [ "solidity", "^", "0.8", ".13" ], "nodeType": "PragmaDirective", "src": "32:24:0" }, { "abstract": false, "baseContracts": [], "canonicalName": "A", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "id": 10, "linearizedBaseContracts": [ 10 ], "name": "A", "nameLocation": "446:1:0", "nodeType": "ContractDefinition", "nodes": [ { "body": { "id": 8, "nodeType": "Block", "src": "513:27:0", "statements": [ { "expression": { "hexValue": "41", "id": 6, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "530:3:0", "typeDescriptions": { "typeIdentifier": "t_stringliteral_03783fac2efed8fbc9ad443e592ee30e61d65f471140c10ca155e937b435b760", "typeString": "literal_string \"A\"" }, "value": "A" }, "functionReturnParameters": 5, "id": 7, "nodeType": "Return", "src": "523:10:0" } ] }, "functionSelector": "c2985578", "id": 9, "implemented": true, "kind": "function", "modifiers": [], "name": "foo", "nameLocation": "463:3:0", "nodeType": "FunctionDefinition", "parameters": { "id": 2, "nodeType": "ParameterList", "parameters": [], "src": "466:2:0" }, "returnParameters": { "id": 5, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 4, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 9, "src": "498:13:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 3, "name": "string", "nodeType": "ElementaryTypeName", "src": "498:6:0", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "visibility": "internal" } ], "src": "497:15:0" }, "scope": 10, "src": "454:86:0", "stateMutability": "pure", "virtual": true, "visibility": "public" } ], "scope": 89, "src": "437:105:0", "usedErrors": [] }, { "abstract": false, "baseContracts": [ { "baseName": { "id": 11, "name": "A", "nodeType": "IdentifierPath", "referencedDeclaration": 10, "src": "622:1:0" }, "id": 12, "nodeType": "InheritanceSpecifier", "src": "622:1:0" } ], "canonicalName": "B", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "id": 22, "linearizedBaseContracts": [ 22, 10 ], "name": "B", "nameLocation": "617:1:0", "nodeType": "ContractDefinition", "nodes": [ { "baseFunctions": [ 9 ], "body": { "id": 20, "nodeType": "Block", "src": "722:27:0", "statements": [ { "expression": { "hexValue": "42", "id": 18, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "739:3:0", "typeDescriptions": { "typeIdentifier": "t_stringliteral_1f675bff07515f5df96737194ea945c36c41e7b4fcef307b7cd4d0e602a69111", "typeString": "literal_string \"B\"" }, "value": "B" }, "functionReturnParameters": 17, "id": 19, "nodeType": "Return", "src": "732:10:0" } ] }, "functionSelector": "c2985578", "id": 21, "implemented": true, "kind": "function", "modifiers": [], "name": "foo", "nameLocation": "663:3:0", "nodeType": "FunctionDefinition", "overrides": { "id": 14, "nodeType": "OverrideSpecifier", "overrides": [], "src": "689:8:0" }, "parameters": { "id": 13, "nodeType": "ParameterList", "parameters": [], "src": "666:2:0" }, "returnParameters": { "id": 17, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 16, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 21, "src": "707:13:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 15, "name": "string", "nodeType": "ElementaryTypeName", "src": "707:6:0", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "visibility": "internal" } ], "src": "706:15:0" }, "scope": 22, "src": "654:95:0", "stateMutability": "pure", "virtual": true, "visibility": "public" } ], "scope": 89, "src": "608:143:0", "usedErrors": [] }, { "abstract": false, "baseContracts": [ { "baseName": { "id": 23, "name": "A", "nodeType": "IdentifierPath", "referencedDeclaration": 10, "src": "767:1:0" }, "id": 24, "nodeType": "InheritanceSpecifier", "src": "767:1:0" } ], "canonicalName": "C", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "id": 34, "linearizedBaseContracts": [ 34, 10 ], "name": "C", "nameLocation": "762:1:0", "nodeType": "ContractDefinition", "nodes": [ { "baseFunctions": [ 9 ], "body": { "id": 32, "nodeType": "Block", "src": "867:27:0", "statements": [ { "expression": { "hexValue": "43", "id": 30, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "884:3:0", "typeDescriptions": { "typeIdentifier": "t_stringliteral_017e667f4b8c174291d1543c466717566e206df1bfd6f30271055ddafdb18f72", "typeString": "literal_string \"C\"" }, "value": "C" }, "functionReturnParameters": 29, "id": 31, "nodeType": "Return", "src": "877:10:0" } ] }, "functionSelector": "c2985578", "id": 33, "implemented": true, "kind": "function", "modifiers": [], "name": "foo", "nameLocation": "808:3:0", "nodeType": "FunctionDefinition", "overrides": { "id": 26, "nodeType": "OverrideSpecifier", "overrides": [], "src": "834:8:0" }, "parameters": { "id": 25, "nodeType": "ParameterList", "parameters": [], "src": "811:2:0" }, "returnParameters": { "id": 29, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 28, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 33, "src": "852:13:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 27, "name": "string", "nodeType": "ElementaryTypeName", "src": "852:6:0", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "visibility": "internal" } ], "src": "851:15:0" }, "scope": 34, "src": "799:95:0", "stateMutability": "pure", "virtual": true, "visibility": "public" } ], "scope": 89, "src": "753:143:0", "usedErrors": [] }, { "abstract": false, "baseContracts": [ { "baseName": { "id": 35, "name": "B", "nodeType": "IdentifierPath", "referencedDeclaration": 22, "src": "1137:1:0" }, "id": 36, "nodeType": "InheritanceSpecifier", "src": "1137:1:0" }, { "baseName": { "id": 37, "name": "C", "nodeType": "IdentifierPath", "referencedDeclaration": 34, "src": "1140:1:0" }, "id": 38, "nodeType": "InheritanceSpecifier", "src": "1140:1:0" } ], "canonicalName": "D", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "id": 52, "linearizedBaseContracts": [ 52, 34, 22, 10 ], "name": "D", "nameLocation": "1132:1:0", "nodeType": "ContractDefinition", "nodes": [ { "baseFunctions": [ 21, 33 ], "body": { "id": 50, "nodeType": "Block", "src": "1241:35:0", "statements": [ { "expression": { "arguments": [], "expression": { "argumentTypes": [], "expression": { "id": 46, "name": "super", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4294967271, "src": "1258:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_super$_D_$52_$", "typeString": "type(contract super D)" } }, "id": 47, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "foo", "nodeType": "MemberAccess", "referencedDeclaration": 33, "src": "1258:9:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$__$returns$_t_string_memory_ptr_$", "typeString": "function () pure returns (string memory)" } }, "id": 48, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1258:11:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, "functionReturnParameters": 45, "id": 49, "nodeType": "Return", "src": "1251:18:0" } ] }, "functionSelector": "c2985578", "id": 51, "implemented": true, "kind": "function", "modifiers": [], "name": "foo", "nameLocation": "1184:3:0", "nodeType": "FunctionDefinition", "overrides": { "id": 42, "nodeType": "OverrideSpecifier", "overrides": [ { "id": 40, "name": "B", "nodeType": "IdentifierPath", "referencedDeclaration": 22, "src": "1211:1:0" }, { "id": 41, "name": "C", "nodeType": "IdentifierPath", "referencedDeclaration": 34, "src": "1214:1:0" } ], "src": "1202:14:0" }, "parameters": { "id": 39, "nodeType": "ParameterList", "parameters": [], "src": "1187:2:0" }, "returnParameters": { "id": 45, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 44, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 51, "src": "1226:13:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 43, "name": "string", "nodeType": "ElementaryTypeName", "src": "1226:6:0", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "visibility": "internal" } ], "src": "1225:15:0" }, "scope": 52, "src": "1175:101:0", "stateMutability": "pure", "virtual": false, "visibility": "public" } ], "scope": 89, "src": "1123:155:0", "usedErrors": [] }, { "abstract": false, "baseContracts": [ { "baseName": { "id": 53, "name": "C", "nodeType": "IdentifierPath", "referencedDeclaration": 34, "src": "1294:1:0" }, "id": 54, "nodeType": "InheritanceSpecifier", "src": "1294:1:0" }, { "baseName": { "id": 55, "name": "B", "nodeType": "IdentifierPath", "referencedDeclaration": 22, "src": "1297:1:0" }, "id": 56, "nodeType": "InheritanceSpecifier", "src": "1297:1:0" } ], "canonicalName": "E", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "id": 70, "linearizedBaseContracts": [ 70, 22, 34, 10 ], "name": "E", "nameLocation": "1289:1:0", "nodeType": "ContractDefinition", "nodes": [ { "baseFunctions": [ 21, 33 ], "body": { "id": 68, "nodeType": "Block", "src": "1398:35:0", "statements": [ { "expression": { "arguments": [], "expression": { "argumentTypes": [], "expression": { "id": 64, "name": "super", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4294967271, "src": "1415:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_super$_E_$70_$", "typeString": "type(contract super E)" } }, "id": 65, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "foo", "nodeType": "MemberAccess", "referencedDeclaration": 21, "src": "1415:9:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$__$returns$_t_string_memory_ptr_$", "typeString": "function () pure returns (string memory)" } }, "id": 66, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1415:11:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, "functionReturnParameters": 63, "id": 67, "nodeType": "Return", "src": "1408:18:0" } ] }, "functionSelector": "c2985578", "id": 69, "implemented": true, "kind": "function", "modifiers": [], "name": "foo", "nameLocation": "1341:3:0", "nodeType": "FunctionDefinition", "overrides": { "id": 60, "nodeType": "OverrideSpecifier", "overrides": [ { "id": 58, "name": "C", "nodeType": "IdentifierPath", "referencedDeclaration": 34, "src": "1368:1:0" }, { "id": 59, "name": "B", "nodeType": "IdentifierPath", "referencedDeclaration": 22, "src": "1371:1:0" } ], "src": "1359:14:0" }, "parameters": { "id": 57, "nodeType": "ParameterList", "parameters": [], "src": "1344:2:0" }, "returnParameters": { "id": 63, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 62, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 69, "src": "1383:13:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 61, "name": "string", "nodeType": "ElementaryTypeName", "src": "1383:6:0", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "visibility": "internal" } ], "src": "1382:15:0" }, "scope": 70, "src": "1332:101:0", "stateMutability": "pure", "virtual": false, "visibility": "public" } ], "scope": 89, "src": "1280:155:0", "usedErrors": [] }, { "abstract": false, "baseContracts": [ { "baseName": { "id": 71, "name": "A", "nodeType": "IdentifierPath", "referencedDeclaration": 10, "src": "1596:1:0" }, "id": 72, "nodeType": "InheritanceSpecifier", "src": "1596:1:0" }, { "baseName": { "id": 73, "name": "B", "nodeType": "IdentifierPath", "referencedDeclaration": 22, "src": "1599:1:0" }, "id": 74, "nodeType": "InheritanceSpecifier", "src": "1599:1:0" } ], "canonicalName": "F", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "id": 88, "linearizedBaseContracts": [ 88, 22, 10 ], "name": "F", "nameLocation": "1591:1:0", "nodeType": "ContractDefinition", "nodes": [ { "baseFunctions": [ 9, 21 ], "body": { "id": 86, "nodeType": "Block", "src": "1673:35:0", "statements": [ { "expression": { "arguments": [], "expression": { "argumentTypes": [], "expression": { "id": 82, "name": "super", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4294967271, "src": "1690:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_super$_F_$88_$", "typeString": "type(contract super F)" } }, "id": 83, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "foo", "nodeType": "MemberAccess", "referencedDeclaration": 21, "src": "1690:9:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$__$returns$_t_string_memory_ptr_$", "typeString": "function () pure returns (string memory)" } }, "id": 84, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1690:11:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, "functionReturnParameters": 81, "id": 85, "nodeType": "Return", "src": "1683:18:0" } ] }, "functionSelector": "c2985578", "id": 87, "implemented": true, "kind": "function", "modifiers": [], "name": "foo", "nameLocation": "1616:3:0", "nodeType": "FunctionDefinition", "overrides": { "id": 78, "nodeType": "OverrideSpecifier", "overrides": [ { "id": 76, "name": "A", "nodeType": "IdentifierPath", "referencedDeclaration": 10, "src": "1643:1:0" }, { "id": 77, "name": "B", "nodeType": "IdentifierPath", "referencedDeclaration": 22, "src": "1646:1:0" } ], "src": "1634:14:0" }, "parameters": { "id": 75, "nodeType": "ParameterList", "parameters": [], "src": "1619:2:0" }, "returnParameters": { "id": 81, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 80, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 87, "src": "1658:13:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 79, "name": "string", "nodeType": "ElementaryTypeName", "src": "1658:6:0", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "visibility": "internal" } ], "src": "1657:15:0" }, "scope": 88, "src": "1607:101:0", "stateMutability": "pure", "virtual": false, "visibility": "public" } ], "scope": 89, "src": "1582:128:0", "usedErrors": [] } ], "src": "32:1678:0" }, "id": 0 } } } }