From 25f6d4bc5650bfc83e2fe691036770bed441b1db Mon Sep 17 00:00:00 2001 From: Stanislav Pankevich Date: Mon, 11 Sep 2023 21:43:48 +0200 Subject: [PATCH] README: fix the ReqIFz example Also add three basic examples of using reqif as a library Closes #148 --- README.md | 7 +- .../01_create_reqif_objects/script.py | 153 + .../01_create_reqif_objects/test.itest | 1 + .../examples/02_read_reqif/input.reqif | 3995 +++++++++++++++++ .../examples/02_read_reqif/script.py | 13 + .../examples/02_read_reqif/test.itest | 1 + .../examples/03_read_reqifz/input.reqifz | Bin 0 -> 1834 bytes .../examples/03_read_reqifz/script.py | 15 + .../examples/03_read_reqifz/test.itest | 1 + 9 files changed, 4183 insertions(+), 3 deletions(-) create mode 100644 tests/integration/examples/01_create_reqif_objects/script.py create mode 100644 tests/integration/examples/01_create_reqif_objects/test.itest create mode 100644 tests/integration/examples/02_read_reqif/input.reqif create mode 100644 tests/integration/examples/02_read_reqif/script.py create mode 100644 tests/integration/examples/02_read_reqif/test.itest create mode 100644 tests/integration/examples/03_read_reqifz/input.reqifz create mode 100644 tests/integration/examples/03_read_reqifz/script.py create mode 100644 tests/integration/examples/03_read_reqifz/test.itest diff --git a/README.md b/README.md index 657544a..4b04f2d 100644 --- a/README.md +++ b/README.md @@ -40,12 +40,13 @@ from reqif.parser import ReqIFZParser input_file_path = "input.reqifz" reqifz_bundle = ReqIFZParser.parse(input_file_path) -for reqif_bundle in reqifz_bundle.reqif_bundles: +for reqif_bundle_file, reqif_bundle in reqifz_bundle.reqif_bundles.items(): + print(f"Bundle: {reqif_bundle_file} {reqif_bundle}") for specification in reqif_bundle.core_content.req_if_content.specifications: - print(specification.long_name) + print(specification) for attachment in reqifz_bundle.attachments: - print(attachment) + print(f"Attachment: {attachment}") ``` ### Unparsing ReqIF diff --git a/tests/integration/examples/01_create_reqif_objects/script.py b/tests/integration/examples/01_create_reqif_objects/script.py new file mode 100644 index 0000000..99174ae --- /dev/null +++ b/tests/integration/examples/01_create_reqif_objects/script.py @@ -0,0 +1,153 @@ +import uuid + +from reqif.models.reqif_core_content import ReqIFCoreContent +from reqif.models.reqif_data_type import ReqIFDataTypeDefinitionString +from reqif.models.reqif_namespace_info import ReqIFNamespaceInfo +from reqif.models.reqif_req_if_content import ReqIFReqIFContent +from reqif.models.reqif_reqif_header import ReqIFReqIFHeader +from reqif.models.reqif_spec_hierarchy import ReqIFSpecHierarchy +from reqif.models.reqif_spec_object import ReqIFSpecObject, SpecObjectAttribute +from reqif.models.reqif_spec_object_type import ( + ReqIFSpecObjectType, + SpecAttributeDefinition, +) +from reqif.models.reqif_specification import ReqIFSpecification +from reqif.models.reqif_specification_type import ReqIFSpecificationType +from reqif.models.reqif_types import SpecObjectAttributeType +from reqif.object_lookup import ReqIFObjectLookup +from reqif.reqif_bundle import ReqIFBundle +from reqif.unparser import ReqIFUnparser + + +# "_" is needed to make the ReqIF XML schema validator happy. +def create_uuid(): + return "_" + uuid.uuid4().hex + + +date_now = "2023-01-01T00:00:00.000+02:00" + + +class ExampleIdentifiers: + # These are usually unique identifiers (UUID) + # For example, 550e8400-e29b-41d4-a716-446655440000 or similar. + # For this example, we keep it as strings. + STRING_DATATYPE_ID = create_uuid() + SPEC_ATTRIBUTE_ID = create_uuid() + SPEC_OBJECT_TYPE_ID = create_uuid() + SPEC_OBJECT_ID = create_uuid() + SPEC_HIERARCHY_ID = create_uuid() + SPECIFICATION_TYPE_ID = create_uuid() + SPECIFICATION_ID = create_uuid() + HEADER_ID = create_uuid() + + +string_data_type = ReqIFDataTypeDefinitionString( + identifier=(ExampleIdentifiers.STRING_DATATYPE_ID), + last_change=date_now, + long_name="String type", + max_length="50", +) + +requirement_text_attribute = SpecAttributeDefinition( + attribute_type=SpecObjectAttributeType.STRING, + identifier=ExampleIdentifiers.SPEC_ATTRIBUTE_ID, + datatype_definition=(ExampleIdentifiers.STRING_DATATYPE_ID), + last_change=date_now, + long_name="Requirement text", +) + +spec_object_type = ReqIFSpecObjectType.create( + identifier=ExampleIdentifiers.SPEC_OBJECT_TYPE_ID, + long_name="Requirement", + last_change=date_now, + attribute_definitions=[requirement_text_attribute], +) + +spec_object_attribute = SpecObjectAttribute( + attribute_type=SpecObjectAttributeType.STRING, + definition_ref=ExampleIdentifiers.SPEC_ATTRIBUTE_ID, + value="System ABC shall do XYQ.", +) + +spec_object = ReqIFSpecObject( + identifier=ExampleIdentifiers.SPEC_OBJECT_ID, + attributes=[spec_object_attribute], + spec_object_type=spec_object_type.identifier, + last_change=date_now, +) + +spec_hierarchy = ReqIFSpecHierarchy( + xml_node=None, + is_self_closed=False, + identifier=ExampleIdentifiers.SPEC_HIERARCHY_ID, + last_change=date_now, + long_name=None, + spec_object=spec_object.identifier, + children=[], + ref_then_children_order=True, + level=1, +) + +specification_type = ReqIFSpecificationType( + identifier=ExampleIdentifiers.SPECIFICATION_TYPE_ID, + description=None, + last_change=date_now, + long_name="Software Requirements Specification Document", + spec_attributes=None, + spec_attribute_map={}, + is_self_closed=True, +) + +specification = ReqIFSpecification( + identifier=ExampleIdentifiers.SPECIFICATION_ID, + last_change=date_now, + long_name="ReqIF library requirements specification", + # Empty tag is needed to make the XML schema validator happy. + values=[], + specification_type=specification_type.identifier, + children=[spec_hierarchy], +) + +reqif_content = ReqIFReqIFContent( + data_types=[string_data_type], + spec_types=[ + specification_type, + spec_object_type, + ], + spec_objects=[spec_object], + spec_relations=[], + specifications=[specification], + spec_relation_groups=[], +) + +core_content = ReqIFCoreContent(req_if_content=reqif_content) + +namespace_info = ReqIFNamespaceInfo.empty( + namespace="http://www.omg.org/spec/ReqIF/20110401/reqif.xsd", + configuration=None, +) + +reqif_header = ReqIFReqIFHeader( + identifier=ExampleIdentifiers.HEADER_ID, + creation_time=date_now, + repository_id="FOO BAR ID", + req_if_tool_id="ReqIF library", + req_if_version="1.0", + source_tool_id="FOO BAZ ID", + title="An example ReqIF file created from Python objects using reqif library", +) + +reqif_lookup = ReqIFObjectLookup.empty() + +bundle = ReqIFBundle( + namespace_info=namespace_info, + req_if_header=reqif_header, + core_content=core_content, + tool_extensions_tag_exists=False, + lookup=reqif_lookup, + exceptions=[], +) + +reqif_string_content = ReqIFUnparser.unparse(bundle) +with open("Output/output.reqif", "w") as output_reqif_file: + output_reqif_file.write(reqif_string_content) diff --git a/tests/integration/examples/01_create_reqif_objects/test.itest b/tests/integration/examples/01_create_reqif_objects/test.itest new file mode 100644 index 0000000..ea542ae --- /dev/null +++ b/tests/integration/examples/01_create_reqif_objects/test.itest @@ -0,0 +1 @@ +RUN: python %S/script.py diff --git a/tests/integration/examples/02_read_reqif/input.reqif b/tests/integration/examples/02_read_reqif/input.reqif new file mode 100644 index 0000000..d25a787 --- /dev/null +++ b/tests/integration/examples/02_read_reqif/input.reqif @@ -0,0 +1,3995 @@ + + + + + 2018-10-12T16:43:58 + 5b6cc2367b684c19 + IBM Rational DOORS + 1.0 + IBM Rational DOORS + IBM Rational DOORS, 12 October 2018 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + _17a56810-ddec-4c0b-9a7f-3c5994ee1ed9 + + + + + _86154e3e-5f07-415f-8d56-2f2d0257ab1d + + + + + _69eac2a3-f05d-46db-9e8f-036420b5f259 + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _ee75e6f3-12f5-4cbf-9159-1515d345ad2a + + + + + _37894a8b-4c87-4b7c-9805-4f8b45c75ab8 + + + + + _cbdbd88c-f26c-42ab-96b2-39c61a3e0b60 + + + + + _d1cbf7fe-5d6f-4d0a-b14a-c83e3b64477e_CREATEDTHRU + + + _65892872-d57a-4f53-8cdd-77e38e3597d2 + + + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _ee75e6f3-12f5-4cbf-9159-1515d345ad2a + + + + + _ee75e6f3-12f5-4cbf-9159-1515d345ad2a + + + + + _ee75e6f3-12f5-4cbf-9159-1515d345ad2a + + + + + _ee75e6f3-12f5-4cbf-9159-1515d345ad2a + + + + + _ee75e6f3-12f5-4cbf-9159-1515d345ad2a + + + + + _ee75e6f3-12f5-4cbf-9159-1515d345ad2a + + + + + _ee75e6f3-12f5-4cbf-9159-1515d345ad2a + + + + + _ee75e6f3-12f5-4cbf-9159-1515d345ad2a + + + + + _ee75e6f3-12f5-4cbf-9159-1515d345ad2a + + + + + _ee75e6f3-12f5-4cbf-9159-1515d345ad2a + + + + + _ee75e6f3-12f5-4cbf-9159-1515d345ad2a + + + + + _ee75e6f3-12f5-4cbf-9159-1515d345ad2a + + + + + _ee75e6f3-12f5-4cbf-9159-1515d345ad2a + + + + + _ee75e6f3-12f5-4cbf-9159-1515d345ad2a + + + + + _ee75e6f3-12f5-4cbf-9159-1515d345ad2a + + + + + _ee75e6f3-12f5-4cbf-9159-1515d345ad2a + + + + + _37894a8b-4c87-4b7c-9805-4f8b45c75ab8 + + + + + _495ec1b7-e312-4731-8e1e-9db10a270334 + + + + + _ee75e6f3-12f5-4cbf-9159-1515d345ad2a + + + + + _ee75e6f3-12f5-4cbf-9159-1515d345ad2a + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _86154e3e-5f07-415f-8d56-2f2d0257ab1d + + + + + _d1cbf7fe-5d6f-4d0a-b14a-c83e3b64477e_PICTURE + + + + + + + _ee75e6f3-12f5-4cbf-9159-1515d345ad2a + + + + + _17a56810-ddec-4c0b-9a7f-3c5994ee1ed9 + + + + + _69eac2a3-f05d-46db-9e8f-036420b5f259 + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _86154e3e-5f07-415f-8d56-2f2d0257ab1d + + + + + _684c6f8c-f7f3-42d3-b2f2-9934254a6196 + + + + + + + _da621508-c6f0-473b-ae7a-be3f931bcd06 + + + + + _d6331a38-d646-48ef-b822-37f00332ffa4 + + + _f6889c51-ca2d-4728-83f4-f0f4479c5c27 + + + + + + + _9c3fd553-2fa4-4b9b-86d7-6309ba4657a1 + + + + + _ee75e6f3-12f5-4cbf-9159-1515d345ad2a + + + + + _69eac2a3-f05d-46db-9e8f-036420b5f259 + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _39f2dca9-78aa-40d7-a6ff-fc4089f3b466 + + + + + _86154e3e-5f07-415f-8d56-2f2d0257ab1d + + + + + _ec11479c-b7e2-4727-9496-26f954ce58ab + + + + + _2d0d84a6-0780-4260-873f-860d22cc824d + + + + + _9881aa69-4adb-4bf4-94e3-234c7802496c + + + _9c98c320-17cd-480f-9a8e-da3ab36f7810 + + + + + + + _80162b6f-70e1-44ef-9491-b10a34e20c72 + + + + + _86154e3e-5f07-415f-8d56-2f2d0257ab1d + + + + + + + + + _ee75e6f3-12f5-4cbf-9159-1515d345ad2a + + + + + _37894a8b-4c87-4b7c-9805-4f8b45c75ab8 + + + + + _ee75e6f3-12f5-4cbf-9159-1515d345ad2a + + + + + _ee75e6f3-12f5-4cbf-9159-1515d345ad2a + + + + + _37894a8b-4c87-4b7c-9805-4f8b45c75ab8 + + + + + _ee75e6f3-12f5-4cbf-9159-1515d345ad2a + + + + + _ee75e6f3-12f5-4cbf-9159-1515d345ad2a + + + + + + + + + _c353bebc-3341-473c-a6cd-9d1771becd34 + + + + + _9d5545c6-de3e-4099-9a3f-4ca45900a8f8 + + + + + _01ddd33b-d2f5-447e-92c2-634d4b766357 + + + + + _132ba67c-2939-4b23-9cca-5f3503af70f2 + + + + + _822a3206-c701-4cfa-92db-acd9f5b82ce7 + + + + + _2b3294ed-876a-4ae6-bc7e-3dd51f27798b + + + + + _e75de79f-e00c-48d9-a972-b4199e1f6042 + + + + + _a3970b22-a021-4b91-9b88-e343737458e9_CREATEDTHRU + + + _f7bfb4bb-6554-431c-b5ff-b4547a0a6924 + + + + + + + _822a3206-c701-4cfa-92db-acd9f5b82ce7 + + + + + _2b3294ed-876a-4ae6-bc7e-3dd51f27798b + + + + + _7235e3bf-c4b3-4ca7-b0cc-6aaf5c372974 + + + + + _822a3206-c701-4cfa-92db-acd9f5b82ce7 + + + + + _822a3206-c701-4cfa-92db-acd9f5b82ce7 + + + + + _132ba67c-2939-4b23-9cca-5f3503af70f2 + + + + + _9d5545c6-de3e-4099-9a3f-4ca45900a8f8 + + + + + _a3970b22-a021-4b91-9b88-e343737458e9_PICTURE + + + + + + + _822a3206-c701-4cfa-92db-acd9f5b82ce7 + + + + + _c353bebc-3341-473c-a6cd-9d1771becd34 + + + + + _01ddd33b-d2f5-447e-92c2-634d4b766357 + + + + + _132ba67c-2939-4b23-9cca-5f3503af70f2 + + + + + _b2ede47a-5f34-4f76-a005-dc0ac4af39bc + + + + + _822a3206-c701-4cfa-92db-acd9f5b82ce7 + + + + + _01ddd33b-d2f5-447e-92c2-634d4b766357 + + + + + _18cfbb86-dd63-417f-b419-cd9dab3f77c7 + + + + + _bde48e36-75a6-4ba6-b0c5-41650ff2e989 + + + _93f57381-bd97-42bd-9e1b-64f00089f54b + + + + + + + _e12e9510-336c-4859-a1a7-e7b4e23d5e0b + + + + + _939bc5fd-5a3f-4f9f-92a7-625369bff16f + + + + + _c353bebc-3341-473c-a6cd-9d1771becd34 + + + + + _9d5545c6-de3e-4099-9a3f-4ca45900a8f8 + + + + + _e12e9510-336c-4859-a1a7-e7b4e23d5e0b + + + + + _9d5545c6-de3e-4099-9a3f-4ca45900a8f8 + + + + + _e12e9510-336c-4859-a1a7-e7b4e23d5e0b + + + + + _9d5545c6-de3e-4099-9a3f-4ca45900a8f8 + + + + + _9d5545c6-de3e-4099-9a3f-4ca45900a8f8 + + + + + _9d5545c6-de3e-4099-9a3f-4ca45900a8f8 + + + + + _e12e9510-336c-4859-a1a7-e7b4e23d5e0b + + + + + _663bd2dc-4d74-42f1-b896-7d60a21baf1a + + + + + _a3970b22-a021-4b91-9b88-e343737458e9_TABLETYPE + + + _3f80b6ab-7190-46b9-94e2-4215fa8069cf + + + + + + + _132ba67c-2939-4b23-9cca-5f3503af70f2 + + + + + _ad920993-841c-4599-b028-588eb7c47b27 + + + + + _9d5545c6-de3e-4099-9a3f-4ca45900a8f8 + + + + + _4c305993-5d02-456c-a087-2e6efdfc864c + + + + + _5f3a1108-a1b2-4c42-9847-de4057a838ce + + + _0783c027-1db3-42ed-a5d2-d7dbf4247a9e + + + + + + + _9d5545c6-de3e-4099-9a3f-4ca45900a8f8 + + + + + + + + + _822a3206-c701-4cfa-92db-acd9f5b82ce7 + + + + + _2b3294ed-876a-4ae6-bc7e-3dd51f27798b + + + + + _822a3206-c701-4cfa-92db-acd9f5b82ce7 + + + + + _822a3206-c701-4cfa-92db-acd9f5b82ce7 + + + + + _2b3294ed-876a-4ae6-bc7e-3dd51f27798b + + + + + _822a3206-c701-4cfa-92db-acd9f5b82ce7 + + + + + _822a3206-c701-4cfa-92db-acd9f5b82ce7 + + + + + + + + + _8689901f-2fde-4a7c-8d37-e6b8fb2474c1 + + + + + _750bdaea-ecfc-4a18-93ce-3055aca07393 + + + + + _750bdaea-ecfc-4a18-93ce-3055aca07393 + + + + + _b8b152d1-15f4-4297-8507-09b6bb47a91f + + + -- + + + + + + + _b8360cf7-6726-43c4-ac88-d0e7787c041d + + + + + _3e5ba69a-f08a-4053-876e-cb1cf3c77d4d + + + + + _f19df108-7669-4395-a2bf-54d448cfb47b + + + + + _6255801f-091d-4354-a68f-89cb40fd8f41_CREATEDTHRU + + + _ac1f713e-52fd-4a0b-a2f2-1a710d7a45d8 + + + + + + + _750bdaea-ecfc-4a18-93ce-3055aca07393 + + + + + _1895597b-a109-442b-b9b1-affb84029717 + + + -- + + + + + + + _fe806ebd-7598-4db3-9a62-c80e259fc2ab + + + + + _3f4f691c-a3f8-4490-bcd2-d12c6548f917 + + + _8587664f-2478-4038-8868-1ab0bb21f375 + + + + + + + _f4da0c16-1ec4-485d-8f79-0fa7a107e1ef + + + + + _e51167a3-70ea-43a8-9c36-9e2ee1fc5d44 + + + _720a01a6-bf86-41bb-9254-e267863d5c12 + + + + + + + _b3a9c2d4-d305-4e34-a195-8a4ab3b2548d + + + + + _0bffcb42-ed13-4c96-8c8a-12200ba9f9e8 + + + _902ee09e-9b82-4c5f-abb4-332dbafd1636 + + + + + + + _3eeea3e9-a999-4e9a-a08d-051dab4d921d + + + + + _c620ff22-9fdd-4d71-862f-2cdfcac33246 + + + _532e432e-ac07-4a9d-841c-9f890d9ffe26 + + + + + + + _e8221a4a-a5e3-4ebe-b928-644a097751f0 + + + + + _c9bcd7cb-2d33-4dbb-9fdc-1e8c14d95267 + + + _a8a6d072-25e3-4764-a579-a4855d805899 + + + + + + + _b8360cf7-6726-43c4-ac88-d0e7787c041d + + + + + _3e5ba69a-f08a-4053-876e-cb1cf3c77d4d + + + + + _b8360cf7-6726-43c4-ac88-d0e7787c041d + + + + + _b8360cf7-6726-43c4-ac88-d0e7787c041d + + + + + _750bdaea-ecfc-4a18-93ce-3055aca07393 + + + + + _06b93fc4-accf-469f-8560-c02f9e10af88 + + + + + _5ad2ed4e-e7be-4b77-924c-d0c2976a4ef6 + + + _73cd3c0d-3a61-47aa-803a-d1d8e787eea8 + + + + + + + _80f34405-341c-43e1-b865-199baf35afdd + + + + + _b8360cf7-6726-43c4-ac88-d0e7787c041d + + + + + _fe806ebd-7598-4db3-9a62-c80e259fc2ab + + + + + _530bd0b2-8eab-48c5-8c76-8335819dbc08 + + + _8587664f-2478-4038-8868-1ab0bb21f375 + + + + + + + _b3a9c2d4-d305-4e34-a195-8a4ab3b2548d + + + + + _cd4f05b7-e36d-41d8-a1fe-58c4a69f9109 + + + _902ee09e-9b82-4c5f-abb4-332dbafd1636 + + + + + + + _f4da0c16-1ec4-485d-8f79-0fa7a107e1ef + + + + + _6c8c275f-8b83-4276-9790-1c2b044738b9 + + + _720a01a6-bf86-41bb-9254-e267863d5c12 + + + + + + + _3eeea3e9-a999-4e9a-a08d-051dab4d921d + + + + + _a48ef6f1-3fd5-4ffb-be32-27737bb80a4d + + + _532e432e-ac07-4a9d-841c-9f890d9ffe26 + + + + + + + _e8221a4a-a5e3-4ebe-b928-644a097751f0 + + + + + _d465000b-a5ef-4cdb-a702-a836d4827aa5 + + + _a8a6d072-25e3-4764-a579-a4855d805899 + + + + + + + _5a9493e2-9c89-4a31-823b-42b5b628ce44 + + + + + _b0f2ec2d-c2c4-4396-a682-6085f6623564 + + + _5f412e4d-a8be-4ee1-824c-2761e100726b + + + + + + + _3bbe546c-ecfe-442b-8afa-56564a275ae5 + + + + + _e8d47f65-c244-48f0-95c2-4a4baf2e49a3 + + + + + _8689901f-2fde-4a7c-8d37-e6b8fb2474c1 + + + + + _07b4e5ce-18ef-49bf-8bc3-40e6631f8add + + + + + _3bbe546c-ecfe-442b-8afa-56564a275ae5 + + + + + _07b4e5ce-18ef-49bf-8bc3-40e6631f8add + + + + + _3bbe546c-ecfe-442b-8afa-56564a275ae5 + + + + + _07b4e5ce-18ef-49bf-8bc3-40e6631f8add + + + + + _07b4e5ce-18ef-49bf-8bc3-40e6631f8add + + + + + _07b4e5ce-18ef-49bf-8bc3-40e6631f8add + + + + + _3bbe546c-ecfe-442b-8afa-56564a275ae5 + + + + + _88be8c31-4ca1-4f74-9d1a-588fd80b0ea1 + + + + + _6255801f-091d-4354-a68f-89cb40fd8f41_TABLETYPE + + + _005c348b-140e-42b6-ab6d-21995871f154 + + + + + + + _07b4e5ce-18ef-49bf-8bc3-40e6631f8add + + + + + + + + + _b8360cf7-6726-43c4-ac88-d0e7787c041d + + + + + _3e5ba69a-f08a-4053-876e-cb1cf3c77d4d + + + + + _b8360cf7-6726-43c4-ac88-d0e7787c041d + + + + + _b8360cf7-6726-43c4-ac88-d0e7787c041d + + + + + _3e5ba69a-f08a-4053-876e-cb1cf3c77d4d + + + + + _b8360cf7-6726-43c4-ac88-d0e7787c041d + + + + + _b8360cf7-6726-43c4-ac88-d0e7787c041d + + + + + + + + + _68eb82f0-f0cf-4206-8972-3136c1eacbfd + + + + + _236c70fe-82af-4234-808c-b864aed5cefe + + + + + _5b2fc301-28d1-44c5-a6e9-177f69f86a21 + + + + + _0bd3016d-daa6-4af1-b0d7-06fde0e3a45b + + + + + _9772572b-b9dd-4176-965d-2035109e5be7_CREATEDTHRU + + + _43589df7-6074-4cd6-a93d-cdbe91ea4601 + + + + + + + _236c70fe-82af-4234-808c-b864aed5cefe + + + + + _5b2fc301-28d1-44c5-a6e9-177f69f86a21 + + + + + _236c70fe-82af-4234-808c-b864aed5cefe + + + + + _236c70fe-82af-4234-808c-b864aed5cefe + + + + + _d55f50b0-710a-4dce-a837-4781e2d9da79 + + + + + _a82f72c6-0878-44af-9ec2-4d7fce535902 + + + + + + + + + _236c70fe-82af-4234-808c-b864aed5cefe + + + + + _5b2fc301-28d1-44c5-a6e9-177f69f86a21 + + + + + _236c70fe-82af-4234-808c-b864aed5cefe + + + + + _236c70fe-82af-4234-808c-b864aed5cefe + + + + + _5b2fc301-28d1-44c5-a6e9-177f69f86a21 + + + + + _236c70fe-82af-4234-808c-b864aed5cefe + + + + + _236c70fe-82af-4234-808c-b864aed5cefe + + + + + + + + + _32a00585-16ce-4f36-ab6b-aae8a6b5680f + + + + + _0c92237f-9811-4f55-b697-df3efa11cf51 + + + + + _8bfc3373-c05a-4ac9-9f3e-78cefe60bd01 + + + + + _721de354-f14e-4b14-b6df-0b142caeb7ce + + + + + _659b5d67-bd3e-4341-9c13-e0aab523b4ec_CREATEDTHRU + + + _56380d9b-b034-4bf2-98a2-2d6b7d6495d5 + + + + + + + _0c92237f-9811-4f55-b697-df3efa11cf51 + + + + + _0c92237f-9811-4f55-b697-df3efa11cf51 + + + + + _0c92237f-9811-4f55-b697-df3efa11cf51 + + + + + _0c92237f-9811-4f55-b697-df3efa11cf51 + + + + + _0c92237f-9811-4f55-b697-df3efa11cf51 + + + + + _8bfc3373-c05a-4ac9-9f3e-78cefe60bd01 + + + + + _0c92237f-9811-4f55-b697-df3efa11cf51 + + + + + _0c92237f-9811-4f55-b697-df3efa11cf51 + + + + + _df001e20-7249-4bc8-a771-ca979288e74f + + + + + _0c92237f-9811-4f55-b697-df3efa11cf51 + + + + + _0c92237f-9811-4f55-b697-df3efa11cf51 + + + + + _3cb3d477-79ee-4ba8-b1e4-b6a5595303aa + + + + + + + + + _0c92237f-9811-4f55-b697-df3efa11cf51 + + + + + _8bfc3373-c05a-4ac9-9f3e-78cefe60bd01 + + + + + _0c92237f-9811-4f55-b697-df3efa11cf51 + + + + + _0c92237f-9811-4f55-b697-df3efa11cf51 + + + + + _8bfc3373-c05a-4ac9-9f3e-78cefe60bd01 + + + + + _0c92237f-9811-4f55-b697-df3efa11cf51 + + + + + _0c92237f-9811-4f55-b697-df3efa11cf51 + + + + + _0c92237f-9811-4f55-b697-df3efa11cf51 + + + + + + + + + _af2c9e93-2dda-41c1-ab20-02445b26f694 + + + + + _1ee55e1e-51eb-45d0-9a36-b2a30c97bbca + + + + + _3bedac02-881a-4140-85b8-8b000f680c7d + + + + + _591e208d-2412-4eed-bf9b-0e4c16c0608a + + + + + _ce281e4e-7bb0-429d-a1de-f2e6233b86de_CREATEDTHRU + + + _85e4b47b-6aa0-4028-b5dd-400ff5880d14 + + + + + + + _1ee55e1e-51eb-45d0-9a36-b2a30c97bbca + + + + + _1ee55e1e-51eb-45d0-9a36-b2a30c97bbca + + + + + _1ee55e1e-51eb-45d0-9a36-b2a30c97bbca + + + + + _1ee55e1e-51eb-45d0-9a36-b2a30c97bbca + + + + + _1ee55e1e-51eb-45d0-9a36-b2a30c97bbca + + + + + _3bedac02-881a-4140-85b8-8b000f680c7d + + + + + _1ee55e1e-51eb-45d0-9a36-b2a30c97bbca + + + + + _1ee55e1e-51eb-45d0-9a36-b2a30c97bbca + + + + + _72a4cdd8-e9ab-45f9-96e7-9229807d32cd + + + + + _1ee55e1e-51eb-45d0-9a36-b2a30c97bbca + + + + + _1ee55e1e-51eb-45d0-9a36-b2a30c97bbca + + + + + _72a4cdd8-e9ab-45f9-96e7-9229807d32cd + + + + + _c77416b4-9cc0-42e1-92d0-01ecdc202016 + + + + + + + + + _1ee55e1e-51eb-45d0-9a36-b2a30c97bbca + + + + + _3bedac02-881a-4140-85b8-8b000f680c7d + + + + + _1ee55e1e-51eb-45d0-9a36-b2a30c97bbca + + + + + _1ee55e1e-51eb-45d0-9a36-b2a30c97bbca + + + + + _3bedac02-881a-4140-85b8-8b000f680c7d + + + + + _1ee55e1e-51eb-45d0-9a36-b2a30c97bbca + + + + + _1ee55e1e-51eb-45d0-9a36-b2a30c97bbca + + + + + _1ee55e1e-51eb-45d0-9a36-b2a30c97bbca + + + + + + + + + _9c5844f5-9138-48d0-a28a-3af5d894a98e + + + + + _33aca405-9cb8-43b4-9e43-26479cd7e7bd + + + + + _34c9fd07-f824-4184-9794-f51cde622d14 + + + + + _5c559e5d-93ca-4175-bc43-b730a51ede53 + + + + + _68ba0236-ffb5-4b62-825a-f55dae08b53f_CREATEDTHRU + + + _d728fb7a-b89c-4f7b-81e9-41402b1a59a9 + + + + + + + _33aca405-9cb8-43b4-9e43-26479cd7e7bd + + + + + _33aca405-9cb8-43b4-9e43-26479cd7e7bd + + + + + _33aca405-9cb8-43b4-9e43-26479cd7e7bd + + + + + _33aca405-9cb8-43b4-9e43-26479cd7e7bd + + + + + _33aca405-9cb8-43b4-9e43-26479cd7e7bd + + + + + _34c9fd07-f824-4184-9794-f51cde622d14 + + + + + _33aca405-9cb8-43b4-9e43-26479cd7e7bd + + + + + _33aca405-9cb8-43b4-9e43-26479cd7e7bd + + + + + _ff80ff06-2bb3-4a62-8fec-e2dbaeef1b7d + + + + + _33aca405-9cb8-43b4-9e43-26479cd7e7bd + + + + + _33aca405-9cb8-43b4-9e43-26479cd7e7bd + + + + + _33aca405-9cb8-43b4-9e43-26479cd7e7bd + + + + + _33aca405-9cb8-43b4-9e43-26479cd7e7bd + + + + + _e65e0dd4-628a-4d5a-b5fc-0729df606e02 + + + + + + + + + _33aca405-9cb8-43b4-9e43-26479cd7e7bd + + + + + _34c9fd07-f824-4184-9794-f51cde622d14 + + + + + _33aca405-9cb8-43b4-9e43-26479cd7e7bd + + + + + _33aca405-9cb8-43b4-9e43-26479cd7e7bd + + + + + _34c9fd07-f824-4184-9794-f51cde622d14 + + + + + _33aca405-9cb8-43b4-9e43-26479cd7e7bd + + + + + _33aca405-9cb8-43b4-9e43-26479cd7e7bd + + + + + _33aca405-9cb8-43b4-9e43-26479cd7e7bd + + + + + + + + + _c8b756ec-56d9-4f83-be4a-be20247b95a2 + + + + + _78bae8d6-f699-45af-bfcd-d664eced0af1 + + + + + _a4deeb85-0ff8-4ce1-b2a6-b4d4e6699e86 + + + + + _2ad86880-8af7-4140-85b0-4bf89db5fe2e + + + + + _6514bf1e-b7ac-416f-85ef-f8d06cffd1ab_CREATEDTHRU + + + _097a0755-1c07-4a3b-b8f4-011a7f43253f + + + + + + + _78bae8d6-f699-45af-bfcd-d664eced0af1 + + + + + _a4deeb85-0ff8-4ce1-b2a6-b4d4e6699e86 + + + + + _78bae8d6-f699-45af-bfcd-d664eced0af1 + + + + + _78bae8d6-f699-45af-bfcd-d664eced0af1 + + + + + _df0113d6-58d3-4031-80aa-d255d333ed38 + + + + + _b7c5a8f9-f343-4dc9-9e6a-d52d7471115f + + + + + + + + + _78bae8d6-f699-45af-bfcd-d664eced0af1 + + + + + _a4deeb85-0ff8-4ce1-b2a6-b4d4e6699e86 + + + + + _78bae8d6-f699-45af-bfcd-d664eced0af1 + + + + + _78bae8d6-f699-45af-bfcd-d664eced0af1 + + + + + _a4deeb85-0ff8-4ce1-b2a6-b4d4e6699e86 + + + + + _78bae8d6-f699-45af-bfcd-d664eced0af1 + + + + + _78bae8d6-f699-45af-bfcd-d664eced0af1 + + + + + + + + + _402cdd2b-9ca4-4cc1-a398-f9c091a5a0e2 + + + + + _16a261a3-1f4e-465c-9bc0-d66e0b4e7939 + + + + + _c5490f15-daa0-4e29-a3d4-7b4a0b171e82 + + + + + _f4116fd3-b7ef-46d1-afc1-2f3a3ce23d95 + + + + + _bfc1a44e-d113-440f-b9c5-17063276417d_CREATEDTHRU + + + _f1fcad3c-dd35-4ebb-80ae-f1d5e4830bae + + + + + + + _16a261a3-1f4e-465c-9bc0-d66e0b4e7939 + + + + + _16a261a3-1f4e-465c-9bc0-d66e0b4e7939 + + + + + _16a261a3-1f4e-465c-9bc0-d66e0b4e7939 + + + + + _16a261a3-1f4e-465c-9bc0-d66e0b4e7939 + + + + + _16a261a3-1f4e-465c-9bc0-d66e0b4e7939 + + + + + _c5490f15-daa0-4e29-a3d4-7b4a0b171e82 + + + + + _16a261a3-1f4e-465c-9bc0-d66e0b4e7939 + + + + + _16a261a3-1f4e-465c-9bc0-d66e0b4e7939 + + + + + _6f0a087d-fcb9-4779-ad47-c1fc42dd46a7 + + + + + _16a261a3-1f4e-465c-9bc0-d66e0b4e7939 + + + + + _16a261a3-1f4e-465c-9bc0-d66e0b4e7939 + + + + + _16a261a3-1f4e-465c-9bc0-d66e0b4e7939 + + + + + _16a261a3-1f4e-465c-9bc0-d66e0b4e7939 + + + + + _5a4c4e35-38e4-477f-bcdb-b5c19a47cc82 + + + + + + + + + _16a261a3-1f4e-465c-9bc0-d66e0b4e7939 + + + + + _c5490f15-daa0-4e29-a3d4-7b4a0b171e82 + + + + + _16a261a3-1f4e-465c-9bc0-d66e0b4e7939 + + + + + _16a261a3-1f4e-465c-9bc0-d66e0b4e7939 + + + + + _c5490f15-daa0-4e29-a3d4-7b4a0b171e82 + + + + + _16a261a3-1f4e-465c-9bc0-d66e0b4e7939 + + + + + _16a261a3-1f4e-465c-9bc0-d66e0b4e7939 + + + + + _16a261a3-1f4e-465c-9bc0-d66e0b4e7939 + + + + + + + + + _55c2126b-e2f4-47d3-b767-441cb966d163 + + + + + _36744c97-c0a6-4d37-816b-e7a4f17f2205 + + + + + _4642a0e3-6a03-46f5-a748-1fc10c9b3124 + + + + + _ec467a15-0877-4f50-9263-6824e5ad2f33 + + + + + _93fdcb78-c12f-4273-ab3c-650594472e96_CREATEDTHRU + + + _f918a8da-a8a1-4a9d-951c-72dac4a017fd + + + + + + + _36744c97-c0a6-4d37-816b-e7a4f17f2205 + + + + + _4642a0e3-6a03-46f5-a748-1fc10c9b3124 + + + + + _36744c97-c0a6-4d37-816b-e7a4f17f2205 + + + + + _36744c97-c0a6-4d37-816b-e7a4f17f2205 + + + + + _c345953e-3e17-4613-848a-1ef061d6db41 + + + + + _8b805239-c8de-4db6-b414-93337b563e08 + + + + + + + + + _36744c97-c0a6-4d37-816b-e7a4f17f2205 + + + + + _4642a0e3-6a03-46f5-a748-1fc10c9b3124 + + + + + _36744c97-c0a6-4d37-816b-e7a4f17f2205 + + + + + _36744c97-c0a6-4d37-816b-e7a4f17f2205 + + + + + _4642a0e3-6a03-46f5-a748-1fc10c9b3124 + + + + + _36744c97-c0a6-4d37-816b-e7a4f17f2205 + + + + + _36744c97-c0a6-4d37-816b-e7a4f17f2205 + + + + + + + + + _5f1deeab-8b0c-4f26-9846-f7b3dd72e173 + + + + + _98d41281-cdaa-4379-a3f1-2cd892ca062d + + + + + _02eafdfa-6a08-4811-a0ab-9d6884eafd53 + + + + + _0b6b54c1-bcc9-476e-9789-e46907ff741a + + + + + _387fb54a-f93f-455b-91e9-c34908303d73_CREATEDTHRU + + + _ce58b036-de59-41ac-bebe-469d84713a68 + + + + + + + _98d41281-cdaa-4379-a3f1-2cd892ca062d + + + + + _02eafdfa-6a08-4811-a0ab-9d6884eafd53 + + + + + _98d41281-cdaa-4379-a3f1-2cd892ca062d + + + + + _98d41281-cdaa-4379-a3f1-2cd892ca062d + + + + + _c8995aaf-652a-47ec-87e8-c4d98d33776a + + + + + _72afd989-a4ea-4be8-ba0a-f8fb0cd0aa86 + + + + + + + + + _98d41281-cdaa-4379-a3f1-2cd892ca062d + + + + + _02eafdfa-6a08-4811-a0ab-9d6884eafd53 + + + + + _98d41281-cdaa-4379-a3f1-2cd892ca062d + + + + + _98d41281-cdaa-4379-a3f1-2cd892ca062d + + + + + _02eafdfa-6a08-4811-a0ab-9d6884eafd53 + + + + + _98d41281-cdaa-4379-a3f1-2cd892ca062d + + + + + _98d41281-cdaa-4379-a3f1-2cd892ca062d + + + + + + + + + _b98067f1-55e4-44e2-8f4a-a37fc6f439d9 + + + + + _9725fb48-d8cb-4e7e-af2e-2c7eb740de2e + + + + + _19c25103-9f44-440d-9141-8f61e2349920 + + + + + _a85eb354-8dbe-47fa-85d3-bb4ad821fe39 + + + + + _417bdd8a-e990-4331-ba37-cc354b818bde_CREATEDTHRU + + + _891a2fcc-4f43-407f-80ef-e74ce06b1e8d + + + + + + + _9725fb48-d8cb-4e7e-af2e-2c7eb740de2e + + + + + _19c25103-9f44-440d-9141-8f61e2349920 + + + + + _9725fb48-d8cb-4e7e-af2e-2c7eb740de2e + + + + + _9725fb48-d8cb-4e7e-af2e-2c7eb740de2e + + + + + _b20ee3d8-42cb-4719-920f-ef831e55e8f8 + + + + + _fe902261-d5ab-49b3-b683-0b33914ee08f + + + + + + + + + _9725fb48-d8cb-4e7e-af2e-2c7eb740de2e + + + + + _19c25103-9f44-440d-9141-8f61e2349920 + + + + + _9725fb48-d8cb-4e7e-af2e-2c7eb740de2e + + + + + _9725fb48-d8cb-4e7e-af2e-2c7eb740de2e + + + + + _19c25103-9f44-440d-9141-8f61e2349920 + + + + + _9725fb48-d8cb-4e7e-af2e-2c7eb740de2e + + + + + _9725fb48-d8cb-4e7e-af2e-2c7eb740de2e + + + + + + + + + _a26d0227-f3c5-48d2-b688-edaa680c76b2 + + + + + _d73c6ac7-2049-4e66-a385-1b87f0f9d8d9 + + + + + _b1e2eeb4-d749-4b1f-a388-c0fd2f59a243 + + + + + _2c6d2533-9be2-4bb8-adef-65a72c76b0a4 + + + + + _7f123ed4-98dd-4eed-b96a-edc8828963a8_CREATEDTHRU + + + _3652b128-76e4-4e0e-aeec-1c284925f741 + + + + + + + _d73c6ac7-2049-4e66-a385-1b87f0f9d8d9 + + + + + _b1e2eeb4-d749-4b1f-a388-c0fd2f59a243 + + + + + _d73c6ac7-2049-4e66-a385-1b87f0f9d8d9 + + + + + _d73c6ac7-2049-4e66-a385-1b87f0f9d8d9 + + + + + _bde5b563-aea4-4b26-97d4-6bf29a833480 + + + + + _13260461-4efb-41d8-b34c-d96c4fa34c95 + + + + + + + + + _d73c6ac7-2049-4e66-a385-1b87f0f9d8d9 + + + + + _b1e2eeb4-d749-4b1f-a388-c0fd2f59a243 + + + + + _d73c6ac7-2049-4e66-a385-1b87f0f9d8d9 + + + + + _d73c6ac7-2049-4e66-a385-1b87f0f9d8d9 + + + + + _b1e2eeb4-d749-4b1f-a388-c0fd2f59a243 + + + + + _d73c6ac7-2049-4e66-a385-1b87f0f9d8d9 + + + + + _d73c6ac7-2049-4e66-a385-1b87f0f9d8d9 + + + + + + + + + _566a6afa-bfaf-4de8-8d74-58588b5bec6a + + + + + _1c9078ce-c7c5-4a66-b40c-2c8b8a525e9f + + + + + _317d8419-2449-42b6-b8d2-0bec2e758a51 + + + + + _0f09b17a-ccbf-4e76-bac9-93d04b295f05 + + + + + _f7e5ace6-b5b7-432f-a633-3d470ea4311e_CREATEDTHRU + + + _b31fbb88-9c63-45cf-874e-4cb954b92382 + + + + + + + _1c9078ce-c7c5-4a66-b40c-2c8b8a525e9f + + + + + _1c9078ce-c7c5-4a66-b40c-2c8b8a525e9f + + + + + _1c9078ce-c7c5-4a66-b40c-2c8b8a525e9f + + + + + _1c9078ce-c7c5-4a66-b40c-2c8b8a525e9f + + + + + _1c9078ce-c7c5-4a66-b40c-2c8b8a525e9f + + + + + _317d8419-2449-42b6-b8d2-0bec2e758a51 + + + + + _1c9078ce-c7c5-4a66-b40c-2c8b8a525e9f + + + + + _1c9078ce-c7c5-4a66-b40c-2c8b8a525e9f + + + + + _b609ee39-c017-4fe2-bdc4-7b7294accc33 + + + + + _1c9078ce-c7c5-4a66-b40c-2c8b8a525e9f + + + + + _1c9078ce-c7c5-4a66-b40c-2c8b8a525e9f + + + + + _1253c271-80ac-4e3b-b79e-f175f0576e87 + + + + + + + + + _1c9078ce-c7c5-4a66-b40c-2c8b8a525e9f + + + + + _317d8419-2449-42b6-b8d2-0bec2e758a51 + + + + + _1c9078ce-c7c5-4a66-b40c-2c8b8a525e9f + + + + + _1c9078ce-c7c5-4a66-b40c-2c8b8a525e9f + + + + + _317d8419-2449-42b6-b8d2-0bec2e758a51 + + + + + _1c9078ce-c7c5-4a66-b40c-2c8b8a525e9f + + + + + _1c9078ce-c7c5-4a66-b40c-2c8b8a525e9f + + + + + _1c9078ce-c7c5-4a66-b40c-2c8b8a525e9f + + + + + + + + + _7f123ed4-98dd-4eed-b96a-edc8828963a8 + + + + + _7f123ed4-98dd-4eed-b96a-edc8828963a8_ABSOLUTENUMBER + + + + + _7f123ed4-98dd-4eed-b96a-edc8828963a8_CREATEDBY + + + susan + + + + + _7f123ed4-98dd-4eed-b96a-edc8828963a8_CREATEDON + + + + + _7f123ed4-98dd-4eed-b96a-edc8828963a8_LASTMODIFIEDBY + + + susan + + + + + _7f123ed4-98dd-4eed-b96a-edc8828963a8_LASTMODIFIEDON + + + + + _7f123ed4-98dd-4eed-b96a-edc8828963a8_OBJECTHEADING + + + Carbon Trust Standard + + + + + + + _7f123ed4-98dd-4eed-b96a-edc8828963a8 + + + + + _7f123ed4-98dd-4eed-b96a-edc8828963a8_ABSOLUTENUMBER + + + + + _7f123ed4-98dd-4eed-b96a-edc8828963a8_CREATEDBY + + + susan + + + + + _7f123ed4-98dd-4eed-b96a-edc8828963a8_CREATEDON + + + + + _7f123ed4-98dd-4eed-b96a-edc8828963a8_LASTMODIFIEDBY + + + susan + + + + + _7f123ed4-98dd-4eed-b96a-edc8828963a8_LASTMODIFIEDON + + + + + _7f123ed4-98dd-4eed-b96a-edc8828963a8_OBJECTHEADING + + + CRC and CCA + + + + + + + _7f123ed4-98dd-4eed-b96a-edc8828963a8 + + + + + _7f123ed4-98dd-4eed-b96a-edc8828963a8_ABSOLUTENUMBER + + + + + _7f123ed4-98dd-4eed-b96a-edc8828963a8_CREATEDBY + + + susan + + + + + _7f123ed4-98dd-4eed-b96a-edc8828963a8_CREATEDON + + + + + _7f123ed4-98dd-4eed-b96a-edc8828963a8_LASTMODIFIEDBY + + + susan + + + + + _7f123ed4-98dd-4eed-b96a-edc8828963a8_LASTMODIFIEDON + + + + + _7f123ed4-98dd-4eed-b96a-edc8828963a8_OBJECTHEADING + + + Picture or Whitepaper + + + + + + + + + + + _22020a9d-bd6d-45e9-9303-69dc17cf7c97 + + + + + _7f123ed4-98dd-4eed-b96a-edc8828963a8_CREATEDBY-DOORS-MODULE + + + susan + + + + + _7f123ed4-98dd-4eed-b96a-edc8828963a8_CREATEDON-DOORS-MODULE + + + + + _22020a9d-bd6d-45e9-9303-69dc17cf7c97_DESCRIPTION-DOORS-MODULE + + + References to external governance standards + + + + + _7f123ed4-98dd-4eed-b96a-edc8828963a8_LASTMODIFIEDBY-DOORS-MODULE + + + susan + + + + + _7f123ed4-98dd-4eed-b96a-edc8828963a8_LASTMODIFIEDON-DOORS-MODULE + + + + + _22020a9d-bd6d-45e9-9303-69dc17cf7c97_NAME-DOORS-MODULE + + + AMR Standards Documents + + + + + _22020a9d-bd6d-45e9-9303-69dc17cf7c97_PREFIX-DOORS-MODULE + + + AMR-REF- + + + + + + + _1_01ea51ea-ed54-471e-8c08-19e093f930f7 + + + + + _2_7e1c200d-5c01-4b93-941d-95fadf8feb0c + + + + + _3_a4285dbc-8259-4577-a093-ffd735084332 + + + + + + + + + + + + diff --git a/tests/integration/examples/02_read_reqif/script.py b/tests/integration/examples/02_read_reqif/script.py new file mode 100644 index 0000000..3d05872 --- /dev/null +++ b/tests/integration/examples/02_read_reqif/script.py @@ -0,0 +1,13 @@ +# ruff: noqa: T201 +from reqif.parser import ReqIFParser + +input_file_path = "input.reqif" + +reqif_bundle = ReqIFParser.parse(input_file_path) +for specification in reqif_bundle.core_content.req_if_content.specifications: + print(specification.long_name) + + for current_hierarchy in reqif_bundle.iterate_specification_hierarchy( + specification + ): + print(current_hierarchy) diff --git a/tests/integration/examples/02_read_reqif/test.itest b/tests/integration/examples/02_read_reqif/test.itest new file mode 100644 index 0000000..ea542ae --- /dev/null +++ b/tests/integration/examples/02_read_reqif/test.itest @@ -0,0 +1 @@ +RUN: python %S/script.py diff --git a/tests/integration/examples/03_read_reqifz/input.reqifz b/tests/integration/examples/03_read_reqifz/input.reqifz new file mode 100644 index 0000000000000000000000000000000000000000..bd54d1738db4f0e378fe1633047fa4c70a5b6940 GIT binary patch literal 1834 zcmWIWW@Zs#-~d8_bh97^D45O1z`(&{;)2wYRH|p{?;X58U5%@d*aqhci${c7K}Z;T2=O>-QH5GO{)}^ z$Y^==y~wr5ytDq;qx>Q`dwGpbhI{vsmlikjz57Z%eM;77Oz%A1 z>D!(x6|0n4JVDm9Hb>xiv0~w`h;UI+M^?vBRgYZL{wQ{K-ld&&Sw{Qyt@rMoQ4z;) zHSOJZYX+vW%drv{CFdU3z7XH@a!MwH)x`q0>)kKRe@r<&t8dxEBG=1j7T5+Bb_9pgh z3I50Js#{;E%xU*L;V5J1t8&4ZiOKhN!R{TphHRlLWSpMP&{%QRWo`3gHm6tOuDO~# zALl(UTbTXj=D8_1+fK7gb-4e7vHHeaq1lxga-N^`%61Cu5u1}J-1T#b+xsulW}dsk zCb}x^EdScwmvpG8vhS?Me_4;_uc}wcO{mOt!BorRDAn4XBSh5 z%lnN>R2i;?*tsXkNVG6+L!bo>2ZO2TxZv> zg)3J45B%v6Vxer`P_{To#&LJ+^Pcn9H-|11us`T+@`&xN+Wtw#rcSE&6SrO7T%#jq zef3n@OR0UC@mH4Qx0^`0EuP&zz4u|){=PZenPw(EpMEKXRp^nXmg@dDO>Z~O70RFX zGFAD7=1ecQQ?pZo{x|x(F%3=dX_)#xaHDMb`OZ718!Vs73EY&ceXk$j&Ca1=>fUY0 z%)kK3Z~^eFSUUAv7%VHk2QoleF)}kRzA`Z{U9Y$-9h?>I+4rO@1mf91jFuHk`w#Lp z8Su2dw{s0%f52+_p)SwTk6bVDnpz78a`UyUT>EG1Y|~@zO{trf8s2AIu}Rh|`rv{A+h+(n{k(KS^EwD@x2l_ca-q+FDKR7~PFCM4&mtuN9IYBfzJs~OKgRf86 z2mY{*fCi=s63prX(uM{GVa%Bd^9yyE0}mLgsBj!&dTqgY#Q)+H1IMG`1_mqCoQ!v?b5l(wB%W-6i_;xmfcVEe4@&JUojyzP2vybnUEE zomsh($CK4^=22BPwr+`;k62}lyu7%&)_(cw&0X|KIQYvc(byJyS(hdWQ7!$la-8OP4(jkJxP?X}K#ZYS&At88dgink5k_ z@zQE$(+{PlE8ra I%?jcH05zn==Kufz literal 0 HcmV?d00001 diff --git a/tests/integration/examples/03_read_reqifz/script.py b/tests/integration/examples/03_read_reqifz/script.py new file mode 100644 index 0000000..ee58c10 --- /dev/null +++ b/tests/integration/examples/03_read_reqifz/script.py @@ -0,0 +1,15 @@ +# ruff: noqa: T201 +from reqif.parser import ReqIFZParser + +input_file_path = "input.reqifz" + +reqifz_bundle = ReqIFZParser.parse(input_file_path) +for reqif_bundle_file, reqif_bundle in reqifz_bundle.reqif_bundles.items(): + print(f"Bundle: {reqif_bundle_file} {reqif_bundle}") + for ( + specification + ) in reqif_bundle.core_content.req_if_content.specifications: + print(specification) + +for attachment in reqifz_bundle.attachments: + print(f"Attachment: {attachment}") diff --git a/tests/integration/examples/03_read_reqifz/test.itest b/tests/integration/examples/03_read_reqifz/test.itest new file mode 100644 index 0000000..ea542ae --- /dev/null +++ b/tests/integration/examples/03_read_reqifz/test.itest @@ -0,0 +1 @@ +RUN: python %S/script.py