{
  "contractName": "Version",
  "abi": [
    {
      "inputs": [],
      "name": "version",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Version contract gives the versioning information of the implementation contract\",\"kind\":\"dev\",\"methods\":{\"version()\":{\"details\":\"Returns the string of the current version.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@onchain-id/solidity/contracts/version/Version.sol\":\"Version\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10},\"remappings\":[]},\"sources\":{\"@onchain-id/solidity/contracts/version/Version.sol\":{\"keccak256\":\"0x6fb49164a0fa97b52a8f335dd7b7cdf575ebb16962a764033bd7be2e39f296b8\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://7ba47d9ceface848db9145fba6c77f782f5b73fb5c7a753a14e4f8d8943c5f6f\",\"dweb:/ipfs/QmXyXA9LAGdpN3BEHWSCXhgVdFdWTbvizZxgg8BrRsdYAk\"]}},\"version\":1}",
  "bytecode": "0x608060405234801561001057600080fd5b5060dd8061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806354fd4d5014602d575b600080fd5b60408051808201825260058152640312e342e360dc1b6020820152905160529190605b565b60405180910390f35b600060208083528351808285015260005b81811015608657858101830151858201604001528201606c565b506000604082860101526040601f19601f830116850101925050509291505056fea2646970667358221220f6ce37fabe7ee30a0e7eebebfcb739e7d5cca9c95f42ae3c9a1736977bd7125b64736f6c63430008110033",
  "deployedBytecode": "0x6080604052348015600f57600080fd5b506004361060285760003560e01c806354fd4d5014602d575b600080fd5b60408051808201825260058152640312e342e360dc1b6020820152905160529190605b565b60405180910390f35b600060208083528351808285015260005b81811015608657858101830151858201604001528201606c565b506000604082860101526040601f19601f830116850101925050509291505056fea2646970667358221220f6ce37fabe7ee30a0e7eebebfcb739e7d5cca9c95f42ae3c9a1736977bd7125b64736f6c63430008110033",
  "immutableReferences": {},
  "generatedSources": [],
  "deployedGeneratedSources": [
    {
      "ast": {
        "nodeType": "YulBlock",
        "src": "0:564:54",
        "statements": [
          {
            "nodeType": "YulBlock",
            "src": "6:3:54",
            "statements": []
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "135:427:54",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "145:12:54",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "155:2:54",
                    "type": "",
                    "value": "32"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "149:2:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "173:9:54"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "184:2:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "166:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "166:21:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "166:21:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "196:27:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "216:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "210:5:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "210:13:54"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "200:6:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "243:9:54"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "254:2:54"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "239:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "239:18:54"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "259:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "232:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "232:34:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "232:34:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "275:10:54",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "284:1:54",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "i",
                      "nodeType": "YulTypedName",
                      "src": "279:1:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "344:90:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "headStart",
                                      "nodeType": "YulIdentifier",
                                      "src": "373:9:54"
                                    },
                                    {
                                      "name": "i",
                                      "nodeType": "YulIdentifier",
                                      "src": "384:1:54"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "369:3:54"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "369:17:54"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "388:2:54",
                                  "type": "",
                                  "value": "64"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "365:3:54"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "365:26:54"
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "407:6:54"
                                        },
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "415:1:54"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "403:3:54"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "403:14:54"
                                    },
                                    {
                                      "name": "_1",
                                      "nodeType": "YulIdentifier",
                                      "src": "419:2:54"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "399:3:54"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "399:23:54"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nodeType": "YulIdentifier",
                                "src": "393:5:54"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "393:30:54"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "358:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "358:66:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "358:66:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "305:1:54"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "308:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "302:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "302:13:54"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "316:19:54",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "318:15:54",
                        "value": {
                          "arguments": [
                            {
                              "name": "i",
                              "nodeType": "YulIdentifier",
                              "src": "327:1:54"
                            },
                            {
                              "name": "_1",
                              "nodeType": "YulIdentifier",
                              "src": "330:2:54"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "323:3:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "323:10:54"
                        },
                        "variableNames": [
                          {
                            "name": "i",
                            "nodeType": "YulIdentifier",
                            "src": "318:1:54"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "298:3:54",
                    "statements": []
                  },
                  "src": "294:140:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "458:9:54"
                              },
                              {
                                "name": "length",
                                "nodeType": "YulIdentifier",
                                "src": "469:6:54"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "454:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "454:22:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "478:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "450:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "450:31:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "483:1:54",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "443:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "443:42:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "443:42:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "494:62:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "510:9:54"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "529:6:54"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "537:2:54",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "525:3:54"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "525:15:54"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "546:2:54",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "542:3:54"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "542:7:54"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "521:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "521:29:54"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "506:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "506:45:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "553:2:54",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "502:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "502:54:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "494:4:54"
                    }
                  ]
                }
              ]
            },
            "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:54",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "115:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "126:4:54",
                "type": ""
              }
            ],
            "src": "14:548:54"
          }
        ]
      },
      "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        mstore(add(add(headStart, length), 64), 0)\n        tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n    }\n}",
      "id": 54,
      "language": "Yul",
      "name": "#utility.yul"
    }
  ],
  "sourceMap": "159:207:8:-:0;;;;;;;;;;;;;;;;;;;",
  "deployedSourceMap": "159:207:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;253:111;343:14;;;;;;;;;;;-1:-1:-1;;;343:14:8;;;;253:111;;;;343:14;253:111;:::i;:::-;;;;;;;;14:548:54;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;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o",
  "source": "// SPDX-License-Identifier: GPL-3.0\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Version contract gives the versioning information of the implementation contract\n */\ncontract Version {\n    /**\n     * @dev Returns the string of the current version.\n     */\n    function version() public pure returns (string memory) {\n        // version 1.4.0\n        return \"1.4.0\";\n    }\n}\n",
  "sourcePath": "@onchain-id/solidity/contracts/version/Version.sol",
  "ast": {
    "absolutePath": "@onchain-id/solidity/contracts/version/Version.sol",
    "exportedSymbols": {
      "Version": [
        1824
      ]
    },
    "id": 1825,
    "license": "GPL-3.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1813,
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "37:23:8"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "canonicalName": "Version",
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": {
          "id": 1814,
          "nodeType": "StructuredDocumentation",
          "src": "62:96:8",
          "text": " @dev Version contract gives the versioning information of the implementation contract"
        },
        "fullyImplemented": true,
        "id": 1824,
        "linearizedBaseContracts": [
          1824
        ],
        "name": "Version",
        "nameLocation": "168:7:8",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 1822,
              "nodeType": "Block",
              "src": "308:56:8",
              "statements": [
                {
                  "expression": {
                    "hexValue": "312e342e30",
                    "id": 1820,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "350:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_649061b8d3f3b9c5692fcbef47cba88c670a745e17e5297d42ddc0aa82ab1129",
                      "typeString": "literal_string \"1.4.0\""
                    },
                    "value": "1.4.0"
                  },
                  "functionReturnParameters": 1819,
                  "id": 1821,
                  "nodeType": "Return",
                  "src": "343:14:8"
                }
              ]
            },
            "documentation": {
              "id": 1815,
              "nodeType": "StructuredDocumentation",
              "src": "182:66:8",
              "text": " @dev Returns the string of the current version."
            },
            "functionSelector": "54fd4d50",
            "id": 1823,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "version",
            "nameLocation": "262:7:8",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1816,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "269:2:8"
            },
            "returnParameters": {
              "id": 1819,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1818,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 1823,
                  "src": "293:13:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1817,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "293:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "292:15:8"
            },
            "scope": 1824,
            "src": "253:111:8",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "public"
          }
        ],
        "scope": 1825,
        "src": "159:207:8",
        "usedErrors": []
      }
    ],
    "src": "37:330:8"
  },
  "compiler": {
    "name": "solc",
    "version": "0.8.17+commit.8df45f5f.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.4.8",
  "updatedAt": "2022-12-08T12:51:01.305Z",
  "devdoc": {
    "details": "Version contract gives the versioning information of the implementation contract",
    "kind": "dev",
    "methods": {
      "version()": {
        "details": "Returns the string of the current version."
      }
    },
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {},
    "version": 1
  }
}