{
  "contracts":
  {
    "combined_json_generated_sources/input.sol:C":
    {
      "generated-sources": [],
      "generated-sources-runtime":
      [
        {
          "ast":
          {
            "nodeType": "YulBlock",
            "src": "0:1856:1",
            "statements":
            [
              {
                "body":
                {
                  "nodeType": "YulBlock",
                  "src": "47:35:1",
                  "statements":
                  [
                    {
                      "nodeType": "YulAssignment",
                      "src": "57:19:1",
                      "value":
                      {
                        "arguments":
                        [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "73:2:1",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName":
                        {
                          "name": "mload",
                          "nodeType": "YulIdentifier",
                          "src": "67:5:1"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "67:9:1"
                      },
                      "variableNames":
                      [
                        {
                          "name": "memPtr",
                          "nodeType": "YulIdentifier",
                          "src": "57:6:1"
                        }
                      ]
                    }
                  ]
                },
                "name": "allocate_unbounded",
                "nodeType": "YulFunctionDefinition",
                "returnVariables":
                [
                  {
                    "name": "memPtr",
                    "nodeType": "YulTypedName",
                    "src": "40:6:1",
                    "type": ""
                  }
                ],
                "src": "7:75:1"
              },
              {
                "body":
                {
                  "nodeType": "YulBlock",
                  "src": "177:28:1",
                  "statements":
                  [
                    {
                      "expression":
                      {
                        "arguments":
                        [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "194:1:1",
                            "type": "",
                            "value": "0"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "197:1:1",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName":
                        {
                          "name": "revert",
                          "nodeType": "YulIdentifier",
                          "src": "187:6:1"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "187:12:1"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "187:12:1"
                    }
                  ]
                },
                "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
                "nodeType": "YulFunctionDefinition",
                "src": "88:117:1"
              },
              {
                "body":
                {
                  "nodeType": "YulBlock",
                  "src": "300:28:1",
                  "statements":
                  [
                    {
                      "expression":
                      {
                        "arguments":
                        [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "317:1:1",
                            "type": "",
                            "value": "0"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "320:1:1",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName":
                        {
                          "name": "revert",
                          "nodeType": "YulIdentifier",
                          "src": "310:6:1"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "310:12:1"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "310:12:1"
                    }
                  ]
                },
                "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
                "nodeType": "YulFunctionDefinition",
                "src": "211:117:1"
              },
              {
                "body":
                {
                  "nodeType": "YulBlock",
                  "src": "423:28:1",
                  "statements":
                  [
                    {
                      "expression":
                      {
                        "arguments":
                        [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "440:1:1",
                            "type": "",
                            "value": "0"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "443:1:1",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName":
                        {
                          "name": "revert",
                          "nodeType": "YulIdentifier",
                          "src": "433:6:1"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "433:12:1"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "433:12:1"
                    }
                  ]
                },
                "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d",
                "nodeType": "YulFunctionDefinition",
                "src": "334:117:1"
              },
              {
                "body":
                {
                  "nodeType": "YulBlock",
                  "src": "546:28:1",
                  "statements":
                  [
                    {
                      "expression":
                      {
                        "arguments":
                        [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "563:1:1",
                            "type": "",
                            "value": "0"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "566:1:1",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName":
                        {
                          "name": "revert",
                          "nodeType": "YulIdentifier",
                          "src": "556:6:1"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "556:12:1"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "556:12:1"
                    }
                  ]
                },
                "name": "revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490",
                "nodeType": "YulFunctionDefinition",
                "src": "457:117:1"
              },
              {
                "body":
                {
                  "nodeType": "YulBlock",
                  "src": "669:28:1",
                  "statements":
                  [
                    {
                      "expression":
                      {
                        "arguments":
                        [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "686:1:1",
                            "type": "",
                            "value": "0"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "689:1:1",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName":
                        {
                          "name": "revert",
                          "nodeType": "YulIdentifier",
                          "src": "679:6:1"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "679:12:1"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "679:12:1"
                    }
                  ]
                },
                "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef",
                "nodeType": "YulFunctionDefinition",
                "src": "580:117:1"
              },
              {
                "body":
                {
                  "nodeType": "YulBlock",
                  "src": "810:478:1",
                  "statements":
                  [
                    {
                      "body":
                      {
                        "nodeType": "YulBlock",
                        "src": "859:83:1",
                        "statements":
                        [
                          {
                            "expression":
                            {
                              "arguments": [],
                              "functionName":
                              {
                                "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d",
                                "nodeType": "YulIdentifier",
                                "src": "861:77:1"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "861:79:1"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "861:79:1"
                          }
                        ]
                      },
                      "condition":
                      {
                        "arguments":
                        [
                          {
                            "arguments":
                            [
                              {
                                "arguments":
                                [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "838:6:1"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "846:4:1",
                                    "type": "",
                                    "value": "0x1f"
                                  }
                                ],
                                "functionName":
                                {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "834:3:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "834:17:1"
                              },
                              {
                                "name": "end",
                                "nodeType": "YulIdentifier",
                                "src": "853:3:1"
                              }
                            ],
                            "functionName":
                            {
                              "name": "slt",
                              "nodeType": "YulIdentifier",
                              "src": "830:3:1"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "830:27:1"
                          }
                        ],
                        "functionName":
                        {
                          "name": "iszero",
                          "nodeType": "YulIdentifier",
                          "src": "823:6:1"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "823:35:1"
                      },
                      "nodeType": "YulIf",
                      "src": "820:122:1"
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "951:30:1",
                      "value":
                      {
                        "arguments":
                        [
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "974:6:1"
                          }
                        ],
                        "functionName":
                        {
                          "name": "calldataload",
                          "nodeType": "YulIdentifier",
                          "src": "961:12:1"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "961:20:1"
                      },
                      "variableNames":
                      [
                        {
                          "name": "length",
                          "nodeType": "YulIdentifier",
                          "src": "951:6:1"
                        }
                      ]
                    },
                    {
                      "body":
                      {
                        "nodeType": "YulBlock",
                        "src": "1024:83:1",
                        "statements":
                        [
                          {
                            "expression":
                            {
                              "arguments": [],
                              "functionName":
                              {
                                "name": "revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490",
                                "nodeType": "YulIdentifier",
                                "src": "1026:77:1"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "1026:79:1"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "1026:79:1"
                          }
                        ]
                      },
                      "condition":
                      {
                        "arguments":
                        [
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "996:6:1"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1004:18:1",
                            "type": "",
                            "value": "0xffffffffffffffff"
                          }
                        ],
                        "functionName":
                        {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "993:2:1"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "993:30:1"
                      },
                      "nodeType": "YulIf",
                      "src": "990:117:1"
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "1116:29:1",
                      "value":
                      {
                        "arguments":
                        [
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "1132:6:1"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1140:4:1",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName":
                        {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1128:3:1"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1128:17:1"
                      },
                      "variableNames":
                      [
                        {
                          "name": "arrayPos",
                          "nodeType": "YulIdentifier",
                          "src": "1116:8:1"
                        }
                      ]
                    },
                    {
                      "body":
                      {
                        "nodeType": "YulBlock",
                        "src": "1199:83:1",
                        "statements":
                        [
                          {
                            "expression":
                            {
                              "arguments": [],
                              "functionName":
                              {
                                "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef",
                                "nodeType": "YulIdentifier",
                                "src": "1201:77:1"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "1201:79:1"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "1201:79:1"
                          }
                        ]
                      },
                      "condition":
                      {
                        "arguments":
                        [
                          {
                            "arguments":
                            [
                              {
                                "name": "arrayPos",
                                "nodeType": "YulIdentifier",
                                "src": "1164:8:1"
                              },
                              {
                                "arguments":
                                [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1178:6:1"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1186:4:1",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName":
                                {
                                  "name": "mul",
                                  "nodeType": "YulIdentifier",
                                  "src": "1174:3:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1174:17:1"
                              }
                            ],
                            "functionName":
                            {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "1160:3:1"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1160:32:1"
                          },
                          {
                            "name": "end",
                            "nodeType": "YulIdentifier",
                            "src": "1194:3:1"
                          }
                        ],
                        "functionName":
                        {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "1157:2:1"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1157:41:1"
                      },
                      "nodeType": "YulIf",
                      "src": "1154:128:1"
                    }
                  ]
                },
                "name": "abi_decode_t_array$_t_uint256_$dyn_calldata_ptr",
                "nodeType": "YulFunctionDefinition",
                "parameters":
                [
                  {
                    "name": "offset",
                    "nodeType": "YulTypedName",
                    "src": "777:6:1",
                    "type": ""
                  },
                  {
                    "name": "end",
                    "nodeType": "YulTypedName",
                    "src": "785:3:1",
                    "type": ""
                  }
                ],
                "returnVariables":
                [
                  {
                    "name": "arrayPos",
                    "nodeType": "YulTypedName",
                    "src": "793:8:1",
                    "type": ""
                  },
                  {
                    "name": "length",
                    "nodeType": "YulTypedName",
                    "src": "803:6:1",
                    "type": ""
                  }
                ],
                "src": "720:568:1"
              },
              {
                "body":
                {
                  "nodeType": "YulBlock",
                  "src": "1395:458:1",
                  "statements":
                  [
                    {
                      "body":
                      {
                        "nodeType": "YulBlock",
                        "src": "1441:83:1",
                        "statements":
                        [
                          {
                            "expression":
                            {
                              "arguments": [],
                              "functionName":
                              {
                                "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
                                "nodeType": "YulIdentifier",
                                "src": "1443:77:1"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "1443:79:1"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "1443:79:1"
                          }
                        ]
                      },
                      "condition":
                      {
                        "arguments":
                        [
                          {
                            "arguments":
                            [
                              {
                                "name": "dataEnd",
                                "nodeType": "YulIdentifier",
                                "src": "1416:7:1"
                              },
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "1425:9:1"
                              }
                            ],
                            "functionName":
                            {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "1412:3:1"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1412:23:1"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1437:2:1",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName":
                        {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "1408:3:1"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1408:32:1"
                      },
                      "nodeType": "YulIf",
                      "src": "1405:119:1"
                    },
                    {
                      "nodeType": "YulBlock",
                      "src": "1534:312:1",
                      "statements":
                      [
                        {
                          "nodeType": "YulVariableDeclaration",
                          "src": "1549:45:1",
                          "value":
                          {
                            "arguments":
                            [
                              {
                                "arguments":
                                [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1580:9:1"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1591:1:1",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName":
                                {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1576:3:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1576:17:1"
                              }
                            ],
                            "functionName":
                            {
                              "name": "calldataload",
                              "nodeType": "YulIdentifier",
                              "src": "1563:12:1"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1563:31:1"
                          },
                          "variables":
                          [
                            {
                              "name": "offset",
                              "nodeType": "YulTypedName",
                              "src": "1553:6:1",
                              "type": ""
                            }
                          ]
                        },
                        {
                          "body":
                          {
                            "nodeType": "YulBlock",
                            "src": "1641:83:1",
                            "statements":
                            [
                              {
                                "expression":
                                {
                                  "arguments": [],
                                  "functionName":
                                  {
                                    "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
                                    "nodeType": "YulIdentifier",
                                    "src": "1643:77:1"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "1643:79:1"
                                },
                                "nodeType": "YulExpressionStatement",
                                "src": "1643:79:1"
                              }
                            ]
                          },
                          "condition":
                          {
                            "arguments":
                            [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "1613:6:1"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1621:18:1",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              }
                            ],
                            "functionName":
                            {
                              "name": "gt",
                              "nodeType": "YulIdentifier",
                              "src": "1610:2:1"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1610:30:1"
                          },
                          "nodeType": "YulIf",
                          "src": "1607:117:1"
                        },
                        {
                          "nodeType": "YulAssignment",
                          "src": "1738:98:1",
                          "value":
                          {
                            "arguments":
                            [
                              {
                                "arguments":
                                [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1808:9:1"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1819:6:1"
                                  }
                                ],
                                "functionName":
                                {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1804:3:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1804:22:1"
                              },
                              {
                                "name": "dataEnd",
                                "nodeType": "YulIdentifier",
                                "src": "1828:7:1"
                              }
                            ],
                            "functionName":
                            {
                              "name": "abi_decode_t_array$_t_uint256_$dyn_calldata_ptr",
                              "nodeType": "YulIdentifier",
                              "src": "1756:47:1"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1756:80:1"
                          },
                          "variableNames":
                          [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "1738:6:1"
                            },
                            {
                              "name": "value1",
                              "nodeType": "YulIdentifier",
                              "src": "1746:6:1"
                            }
                          ]
                        }
                      ]
                    }
                  ]
                },
                "name": "abi_decode_tuple_t_array$_t_uint256_$dyn_calldata_ptr",
                "nodeType": "YulFunctionDefinition",
                "parameters":
                [
                  {
                    "name": "headStart",
                    "nodeType": "YulTypedName",
                    "src": "1357:9:1",
                    "type": ""
                  },
                  {
                    "name": "dataEnd",
                    "nodeType": "YulTypedName",
                    "src": "1368:7:1",
                    "type": ""
                  }
                ],
                "returnVariables":
                [
                  {
                    "name": "value0",
                    "nodeType": "YulTypedName",
                    "src": "1380:6:1",
                    "type": ""
                  },
                  {
                    "name": "value1",
                    "nodeType": "YulTypedName",
                    "src": "1388:6:1",
                    "type": ""
                  }
                ],
                "src": "1294:559:1"
              }
            ]
          },
          "contents": "{\n\n    function allocate_unbounded() -> memPtr {\n        memPtr := mload(64)\n    }\n\n    function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n        revert(0, 0)\n    }\n\n    function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n        revert(0, 0)\n    }\n\n    function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n        revert(0, 0)\n    }\n\n    function revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() {\n        revert(0, 0)\n    }\n\n    function revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() {\n        revert(0, 0)\n    }\n\n    // uint256[]\n    function abi_decode_t_array$_t_uint256_$dyn_calldata_ptr(offset, end) -> arrayPos, length {\n        if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() }\n        arrayPos := add(offset, 0x20)\n        if gt(add(arrayPos, mul(length, 0x20)), end) { revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() }\n    }\n\n    function abi_decode_tuple_t_array$_t_uint256_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1 {\n        if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n        {\n\n            let offset := calldataload(add(headStart, 0))\n            if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n            value0, value1 := abi_decode_t_array$_t_uint256_$dyn_calldata_ptr(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n}\n",
          "id": 1,
          "language": "Yul",
          "name": "#utility.yul"
        }
      ]
    }
  },
  "version": "<VERSION REMOVED>"
}
