From c139111f105df1d03d875b21e636d963590a09e1 Mon Sep 17 00:00:00 2001 From: Lukas Malte Monnerjahn <lukasmalte.monnerjahn@dataport.de> Date: Tue, 7 Jan 2025 14:42:08 +0100 Subject: [PATCH] keep formsolutions adapter --- .helmignore | 1 - .mvn/wrapper/MavenWrapperDownloader.java | 117 -- .mvn/wrapper/maven-wrapper.jar | Bin 50710 -> 0 bytes .mvn/wrapper/maven-wrapper.properties | 2 - Jenkinsfile | 472 ------ common/pom.xml | 89 -- .../java/de/ozgcloud/eingang/Application.java | 42 - .../eingang/EingangAspectPointcuts.java | 26 - .../eingang/EingangLoggingAspect.java | 25 - .../java/de/ozgcloud/eingang/LogRunner.java | 21 - .../errorhandling/FunctionalException.java | 33 - .../errorhandling/TechnicalException.java | 37 - .../common/formdata/Antragsteller.java | 53 - .../formdata/DeleteOnCloseInputStream.java | 56 - .../eingang/common/formdata/FormData.java | 87 -- .../common/formdata/FormDataUtils.java | 68 - .../eingang/common/formdata/FormHeader.java | 51 - .../eingang/common/formdata/FormMetaData.java | 19 - .../eingang/common/formdata/IncomingFile.java | 64 - .../common/formdata/IncomingFileGroup.java | 42 - .../formdata/PostfachAddressIdentifier.java | 5 - .../eingang/common/formdata/ServiceKonto.java | 49 - .../formdata/StringBasedIdentifier.java | 14 - .../common/formdata/ZustaendigeStelle.java | 44 - .../common/vorgang/VorgangNummerSupplier.java | 34 - ...itional-spring-configuration-metadata.json | 22 - common/src/main/resources/application-oc.yml | 2 - .../EingangAdapterApplicationTest.java | 35 - .../formdata/AntragstellerTestFactory.java | 89 -- .../DeleteOnCloseInputStreamTest.java | 32 - .../formdata/FormDataControlTestFactory.java | 23 - .../common/formdata/FormDataTestFactory.java | 89 -- .../formdata/FormHeaderTestFactory.java | 61 - .../formdata/FormMetaDataTestFactory.java | 36 - .../formdata/FormSolutionsTestFactory.java | 85 - .../IncomingFileGroupTestFactory.java | 56 - .../common/formdata/IncomingFileTest.java | 97 -- .../formdata/IncomingFileTestFactory.java | 68 - .../formdata/PostfachAddressTestFactory.java | 27 - .../formdata/ServiceKontoTestFactory.java | 18 - .../common/formdata/TrustLevelTest.java | 32 - .../ZustaendigeStelleTestFactory.java | 52 - .../vorgang/VorgangNummerSupplierTest.java | 106 -- common/src/test/resources/application.yml | 16 - .../org.mockito.plugins.MockMaker | 1 - dependency-check-supressions.xml | 6 - enterprise-adapter/pom.xml | 101 -- .../EnterpriseAdapterConfiguration.java | 19 - .../enterprise/entry/EntryController.java | 123 -- .../eingang/enterprise/entry/EntryData.java | 65 - .../enterprise/entry/EntryDataMapper.java | 34 - .../enterprise/entry/EntryFormDataField.java | 48 - .../enterprise/entry/EntryFormDataItem.java | 21 - .../entry/EntryFormDataSubForm.java | 28 - .../enterprise/entry/EntryResponse.java | 23 - .../enterprise/entry/FormDataMapper.java | 110 -- .../entry/ReadingRequestException.java | 14 - .../src/main/resources/application-local.yml | 24 - .../src/main/resources/application.yml | 44 - .../src/main/resources/log4j2-local.xml | 14 - .../entry/ControlDataTestFactory.java | 36 - .../entry/EnterpriseEntryITCase.java | 106 -- .../enterprise/entry/EntryControllerTest.java | 248 --- .../enterprise/entry/EntryDataMapperTest.java | 84 - .../entry/EntryDataTestFactory.java | 14 - .../entry/EntryFormDataTestFactory.java | 70 - .../entry/EntryResponseTestFactory.java | 16 - .../entry/FormDataControlTestFactory.java | 25 - .../enterprise/entry/FormDataMapperTest.java | 36 - .../entry/ResponseVorgangTestFactory.java | 24 - .../entry/ServicekontoTestFactory.java | 25 - .../org.junit.jupiter.api.extension.Extension | 1 - .../test/resources/junit-platform.properties | 1 - .../src/test/resources/request/a12_entry.json | 27 - .../test/resources/request/document_JaS.json | 99 -- .../jugendsozialarbeit_an_schulen-DM.json | 1279 --------------- .../src/test/resources/request/simple.json | 52 - fim-adapter/pom.xml | 62 - .../ozgcloud/eingang/fim/FimBasedAdapter.java | 96 -- .../ozgcloud/eingang/fim/FimDataMapper.java | 58 - .../eingang/fim/FimEngineBasedMapper.java | 7 - .../de/ozgcloud/eingang/fim/FimException.java | 9 - .../ozgcloud/eingang/fim/FimProperties.java | 25 - .../de/ozgcloud/eingang/fim/FimScheme.java | 42 - .../eingang/fim/FimSchemeAdapter.java | 39 - .../fim/FimSchemeAdapterCatalogue.java | 5 - .../eingang/fim/FimSchemeCatalogue.java | 6 - .../eingang/fim/FimSchemeIdentifier.java | 17 - .../de/ozgcloud/eingang/fim/FimService.java | 104 -- .../eingang/fim/UnknownSchemeAdapter.java | 20 - .../eingang/fim/ZustaendigeStelleMapper.java | 44 - .../src/main/resources/application-fim.yml | 3 - .../C17000420_genericode.xml | 1 - .../C17001208_genericode.xml | 1 - .../C17001209_genericode.xml | 1 - .../fim-s17000652_1.4/S17000652V1.4_xfall.xsd | 32 - .../eingang/fim/FimBasedAdapterTest.java | 46 - .../eingang/fim/FimServiceITCase.java | 199 --- .../ozgcloud/eingang/fim/FimTestConfig.java | 11 - .../eingang/fim/TestNonStandardAdapter.java | 23 - .../fim/ZustaendigeStelleMapperTest.java | 44 - .../test/resources/S17000652V1.4_test01.xml | 29 - .../src/test/resources/application-test.yml | 4 - fim-adapter/src/test/resources/test1.xml | 3 - fim-adapter/src/test/resources/test2.xml | 5 - .../src/test/resources/test2/test2.xsd | 9 - fim-adapter/src/test/resources/test3.xml | 5 - .../src/test/resources/test3/Antrag.xml | 29 - .../test/resources/test3/fim_xtaMetadata.xml | 49 - .../formcycle-adapter-impl/pom.xml | 135 -- .../formcycle/FormCycleFormDataMapper.java | 48 - .../FormCycleServiceKontoMapper.java | 40 - .../eingang/formcycle/FormDataController.java | 162 -- .../formcycle/FormDataHtmlCleaner.java | 71 - .../FormcycleAdapterApplication.java | 72 - .../FormcycleExceptionHandler.java | 74 - .../errorhandling/InternalExceptionDto.java | 12 - .../CustomProtobufHttpMessageConverter.java | 19 - .../src/main/resources/application-local.yml | 21 - .../src/main/resources/application.yml | 46 - .../src/main/resources/banner.txt | 6 - .../FormCycleAttachmentGroupTestFactory.java | 40 - .../FormCycleFormDataMapperTest.java | 69 - .../FormCycleFormDataTestFactory.java | 53 - .../FormCycleFormHeaderTestFactory.java | 46 - .../FormCyclePostfachAddressTestFactory.java | 22 - .../FormCycleServiceKontoMapperTest.java | 94 -- .../FormCycleServiceKontoTestFactory.java | 46 - .../formcycle/FormDataControllerITCase.java | 98 -- .../formcycle/FormDataControllerTest.java | 349 ----- .../formcycle/FormDataHtmlCleanerITCase.java | 89 -- .../formcycle/FormDataHtmlCleanerTest.java | 205 --- .../FormcycleAdapterApplicationTest.java | 38 - .../FormcycleExceptionHandlerTest.java | 126 -- .../InternalExceptionDtoTestFactory.java | 22 - .../org.junit.jupiter.api.extension.Extension | 1 - .../src/test/resources/application-itcase.yml | 4 - .../test/resources/junit-platform.properties | 1 - .../src/test/resources/log4j2.xml | 14 - .../formcycle-adapter-interface/pom.xml | 102 -- .../src/main/protobuf/form-data.model.proto | 68 - formcycle-adapter/pom.xml | 72 - formsolutions-adapter/pom.xml | 210 --- .../org.junit.jupiter.api.extension.Extension | 1 - .../test/resources/junit-platform.properties | 1 - forwarder/pom.xml | 102 -- .../eingang/forwarder/RouteCriteria.java | 38 - .../forwarder/RouteCriteriaMapper.java | 41 - .../forwarder/RouteForwardingGrpcService.java | 49 - .../forwarder/RouteForwardingService.java | 36 - .../forwarder/ForwarderApplicationTest.java | 37 - ...GrpcRouteForwardingRequestTestFactory.java | 38 - .../forwarder/RouteCriteriaTestFactory.java | 57 - .../RouteForwardingGrpcServiceTest.java | 89 -- .../org.junit.jupiter.api.extension.Extension | 1 - .../src/test/resources/application-itcase.yml | 3 - forwarder/src/test/resources/application.yml | 19 - .../test/resources/junit-platform.properties | 1 - intelliform-adapter/README.md | 4 - intelliform-adapter/pom.xml | 257 --- .../eingang/WebServiceConfiguration.java | 64 - .../intelliform/DepositDataMapper.java | 188 --- .../eingang/intelliform/FormDataEndpoint.java | 84 - .../src/main/resources/application-dev.yml | 13 - .../src/main/resources/application-local.yml | 26 - .../src/main/resources/application-test.yml | 20 - .../src/main/resources/application.yml | 50 - .../src/main/resources/banner.txt | 5 - .../intelliform/ApplicationService.wsdl | 67 - .../intelliform/ApplicationService.xsd | 134 -- .../src/main/resources/logback-spring.xml | 20 - .../src/main/scripts/create-demo-vorgang.sh | 45 - .../scripts/vorgang-A12-deutschlandticket.xml | 1379 ----------------- .../scripts/vorgang-Eingliederungshilfe.xml | 117 -- .../main/scripts/vorgang-GewerbeAnmeldung.xml | 30 - .../src/main/scripts/vorgang-Waffenschein.xml | 50 - .../src/main/scripts/vorgang-Wahlhelferin.xml | 59 - .../intelliform/AttachmentTestFactory.java | 205 --- .../intelliform/DepositDataMapperTest.java | 448 ------ .../intelliform/DepositDataTestFactory.java | 77 - .../intelliform/FormDataEndpointITCase.java | 579 ------- .../intelliform/FormDataEndpointTest.java | 80 - .../intelliform/GrpcFormFieldTestFactory.java | 10 - .../intelliform/XmlDaten1Container.java | 139 -- .../org.junit.jupiter.api.extension.Extension | 1 - .../test/resources/fileupload/testodt1.odt | Bin 9070 -> 0 bytes .../test/resources/fileupload/testpdf1.pdf | Bin 91543 -> 0 bytes .../resources/intelliform/XML-Daten-1.xml | 173 --- .../XML-Daten-complex.template.xml | 316 ---- .../intelliform/soaprequest-deposit.xml | 210 --- .../intelliform/soaprequest_other-name.xml | 35 - ...nfachesFormularZweiAnhaengeSoapRequest.xml | 158 -- ...mularZweiAnhaengeSoapRequest_XML-Daten.xml | 84 - ...fachesFormularZweiAnhaengeSoapResponse.xml | 1 - .../itcase/XML-Daten-1-SoapRequest.xml | 31 - .../XML-Daten-1-other_name_SoapRequest.xml | 30 - .../test/resources/junit-platform.properties | 1 - .../org.mockito.plugins.MockMaker | 1 - pom.xml | 421 ++--- release-erstellen.sh | 27 - release-startdev.sh | 63 - router/pom.xml | 113 -- .../common/zufi/OrganisationsEinheit.java | 16 - .../zufi/OrganisationsEinheitMapper.java | 11 - .../OrganisationsEinheitRemoteService.java | 24 - .../eingang/common/zufi/ZufiService.java | 16 - .../ozgcloud/eingang/router/CallContext.java | 41 - .../ozgcloud/eingang/router/ClosableStub.java | 44 - .../eingang/router/ConsistentStub.java | 20 - .../ozgcloud/eingang/router/FileIdMapper.java | 40 - .../eingang/router/GrpcClientsProperties.java | 54 - .../eingang/router/GrpcEingangMapper.java | 96 -- .../eingang/router/ManagableStub.java | 8 - .../eingang/router/ServiceKontoMapper.java | 54 - .../router/VorgangManagerListProperties.java | 147 -- .../router/VorgangManagerServerResolver.java | 190 --- .../eingang/router/VorgangRemoteService.java | 243 --- .../eingang/router/VorgangService.java | 123 -- .../AdapterConfigurationException.java | 33 - .../UnknownOrganisationseinheitException.java | 34 - .../main/resources/META-INF/spring/README.md | 6 - ...isationsEinheitGetResponseTestFactory.java | 15 - .../GrpcOrganisationsEinheitTestFactory.java | 18 - .../zufi/OrganisationsEinheitMapperTest.java | 20 - ...OrganisationsEinheitRemoteServiceTest.java | 70 - .../zufi/OrganisationsEinheitTestFactory.java | 27 - .../eingang/common/zufi/ZufiServiceTest.java | 46 - .../router/GrpcEingangHeaderTestFactory.java | 25 - .../router/GrpcEingangMapperITCase.java | 207 --- .../eingang/router/GrpcEingangMapperTest.java | 220 --- .../router/GrpcFormFieldTestFactory.java | 42 - .../GrpcIncomingFileGroupTestFactory.java | 43 - .../router/GrpcIncomingFileTestFactory.java | 53 - .../router/ServiceKontoMapperTest.java | 122 -- .../VorgangManagerListPropertiesTest.java | 171 -- ...rgangManagerListPropertiesTestFactory.java | 87 -- .../VorgangManagerServerResolverITCase.java | 61 - .../VorgangManagerServerResolverTest.java | 493 ------ ...rgangManagerServerResolverTestFactory.java | 63 - .../router/VorgangRemoteServiceTest.java | 581 ------- .../eingang/router/VorgangServiceTest.java | 349 ----- .../org.junit.jupiter.api.extension.Extension | 1 - .../test/resources/junit-platform.properties | 1 - .../org.mockito.plugins.MockMaker | 1 - run_filereader.sh | 36 - run_helm_test.sh | 7 - run_local.sh | 28 - semantik-adapter/pom.xml | 96 -- .../eingang/semantik/SemantikAdapter.java | 76 - .../semantik/common/ReadZipException.java | 12 - .../semantik/common/ServiceKontoFactory.java | 133 -- .../semantik/common/ZipAttachmentReader.java | 242 --- .../enginebased/EngineBasedMapper.java | 31 - .../EngineBasedSemantikAdapter.java | 36 - .../enginebased/FilesMapperHelper.java | 65 - .../semantik/enginebased/a12/A12Eingang.java | 15 - .../a12/A12EngineBasedAdapter.java | 24 - .../enginebased/a12/A12EngineBasedMapper.java | 7 - .../enginebased/a12/A12FormDataMapper.java | 79 - .../afm/AfmAntragstellerHeaderMapper.java | 69 - .../afm/AfmAntragstellerMapper.java | 166 -- .../afm/AfmEmpfangeneStelleMapper.java | 40 - .../afm/AfmEngineBasedAdapter.java | 66 - .../enginebased/afm/AfmEngineBasedMapper.java | 64 - .../afm/AfmErklaerungenMapper.java | 40 - .../enginebased/afm/AfmFileCountMapper.java | 42 - .../enginebased/afm/AfmHeaderMapper.java | 109 -- .../afm/AfmZustaendigeStelleMapper.java | 101 -- .../enginebased/afm/XmlMapperSupplier.java | 21 - .../afm/ZustaendigeStelleData.java | 43 - .../afm/ZustaendigeStelleMetadataMapper.java | 87 -- .../IntelliFormRepresentationAdapter.java | 145 -- .../afm/intelliform/JsonService.java | 35 - .../afm/intelliform/XmlToJavaMapsMapper.java | 187 --- ...erdermittelEngineBasedSemantikAdapter.java | 183 --- .../FormCycleEngineBasedAdapter.java | 47 - .../FormcycleAntragstellerMapper.java | 72 - .../formcycle/FormcycleEngineBasedMapper.java | 6 - .../FormSolutionsAntragstellerMapper.java | 63 - .../FormSolutionsEngineBasedAdapter.java | 64 - .../FormSolutionsEngineBasedMapper.java | 29 - .../FormSolutionsFilesMapper.java | 113 -- .../FormSolutionsHeaderMapper.java | 89 -- .../FormSolutionsPanelMapper.java | 94 -- .../FormSolutionsZustaendigeStelleMapper.java | 64 - .../formsolutions/IdentifierValueParser.java | 64 - .../semantik/formbased/AnliegenId.java | 39 - .../semantik/formbased/FormBasedMapper.java | 33 - .../formbased/FormBasedSemantikAdapter.java | 63 - .../MantelantragZustaendigeStelleMapper.java | 135 -- .../eingang/semantik/SemantikAdapterTest.java | 141 -- .../common/ServiceKontoFactoryTest.java | 303 ---- .../common/ZipAttachmentReaderTest.java | 320 ---- .../enginebased/FilesMapperHelperTest.java | 183 --- .../a12/A12FormDataMapperTest.java | 93 -- .../afm/AfmAntragstellerHeaderMapperTest.java | 243 --- .../afm/AfmAntragstellerMapperTest.java | 240 --- .../afm/AfmAntragstellerTestFactory.java | 138 -- .../afm/AfmEmpfangeneStelleMapperTest.java | 83 - .../afm/AfmEngineBasedAdapterTest.java | 105 -- .../afm/AfmErklaerungenMapperTest.java | 83 - .../afm/AfmFileCountMapperTest.java | 95 -- .../enginebased/afm/AfmHeaderMapperTest.java | 199 --- .../enginebased/afm/AfmHeaderTestFactory.java | 104 -- .../afm/AfmZustaendigeStelleMapperTest.java | 194 --- .../afm/AfmZustaendigeStelleTestFactory.java | 51 - .../afm/ZustaendigeStelleDataTestFactory.java | 62 - ...aendigeStelleMetadataFieldTestFactory.java | 20 - ...ZustaendigeStelleMetadataMapperITCase.java | 50 - .../ZustaendigeStelleMetadataMapperTest.java | 171 -- .../IntelliFormRepresentationAdapterTest.java | 456 ------ .../afm/intelliform/JsonServiceTest.java | 99 -- .../intelliform/XmlToJavaMapsMapperTest.java | 329 ---- ...rmittelEngineBasedSemantikAdapterTest.java | 340 ---- .../DFoerdermittelFormDataTestFactory.java | 75 - .../FormCycleEngineBasedAdapterTest.java | 70 - .../FormcycleAntragstellerMapperTest.java | 239 --- .../FormSolutionsAntragstellerMapperTest.java | 132 -- ...FormSolutionsEngineBasedAdapterITCase.java | 289 ---- .../FormSolutionsEngineBasedAdapterTest.java | 124 -- .../FormSolutionsFilesMapperTest.java | 204 --- .../FormSolutionsHeaderMapperTest.java | 141 -- .../FormSolutionsHeaderTestFactory.java | 52 - .../FormSolutionsPanelMapperTest.java | 187 --- .../FormSolutionsPanelTestFactory.java | 94 -- ...mSolutionsZustaendigeStelleMapperTest.java | 103 -- .../IdentifierValueParserTest.java | 78 - .../FormBasedSemantikAdapterTest.java | 90 -- .../mantelantrag/MantelantragITCase.java | 187 --- ...ntelantragZustaendigeStelleMapperTest.java | 381 ----- .../src/test/resources/A12/a12FormData.json | 16 - .../org.junit.jupiter.api.extension.Extension | 1 - .../src/test/resources/attachment-1file.zip | Bin 291 -> 0 bytes .../src/test/resources/attachment-2files.zip | Bin 3260 -> 0 bytes .../src/test/resources/attachment-empty.zip | Bin 174 -> 0 bytes .../test/resources/attachment-encrypted.zip | Bin 308 -> 0 bytes .../src/test/resources/behoerde_metadata.xml | 22 - .../src/test/resources/eingang.pdf | Bin 50962 -> 0 bytes .../formsolutions/attachment-2files.zip | Bin 3260 -> 0 bytes .../src/test/resources/formsolutions001.json | 211 --- ...EinfachesFormularZweiAnhaengeXmlDaten1.xml | 79 - ...mularZweiAnhaengeXmlDatenVerschachtelt.xml | 85 - ...larSoapRequest_WithContent_XML-Daten-1.xml | 194 --- .../SimpleFormDataMapperTestFile.xml | 60 - .../intelliform/XML-Daten-1-SoapRequest.xml | 30 - .../intelliform/XML-Daten_Gewerbe.xml | 241 --- ...Daten_Gewerbe_organisationseinheitenID.xml | 223 --- ...ationseinheitenID_und_zustaendigstelle.xml | 242 --- .../XML-Daten_Strassengefaelle.xml | 21 - .../resources/intelliform/XML-Keine_Daten.xml | 3 - .../intelliform/andererName-Daten.xml | 14 - .../test/resources/junit-platform.properties | 1 - ...7e4c494b9_Antrag_Max_Mustermann_SGBXII.xml | 253 --- ...021_Geschaeftsgang.Geschaeftsgang.0201.xml | 125 -- .../xta/Beispieldatensatz_Fachnachricht.xml | 32 - .../src/test/resources/zip-file-0.txt | 2 - .../src/test/resources/zip-file-1.txt | 796 ---------- .../zipbombs/filewithmanyfiles.dat.zip | Bin 17184 -> 0 bytes .../resources/zipbombs/filewithnulls.dat.zip | Bin 10374 -> 0 bytes sonar-project.properties | 19 +- src/main/helm/Chart.yaml | 31 - src/main/helm/README.md | 100 -- src/main/helm/templates/NOTES.txt | 24 - src/main/helm/templates/_helpers.tpl | 109 -- .../templates/bindings_type_configmap.yaml | 8 - src/main/helm/templates/deployment.yaml | 193 --- src/main/helm/templates/ingress.yaml | 67 - src/main/helm/templates/network_policy.yaml | 91 -- src/main/helm/templates/service.yaml | 45 - src/main/helm/templates/service_account.yaml | 31 - src/main/helm/templates/service_monitor.yaml | 43 - .../tests/test-ingress-connection.yaml | 39 - .../tests/test-service-connection.yaml | 39 - src/main/helm/values.yaml | 40 - .../FormSolutionsAttachmentsMapper.java | 0 .../formsolutions/FormSolutionsEingang.java | 0 .../FormSolutionsFileMapperUtils.java | 0 .../FormSolutionsRequestMapper.java | 0 .../SemantikAdapterConfiguration.java | 0 .../formsolutions/SendFormEndpoint.java | 0 .../WebServiceConfiguration.java | 0 .../main/resources/application-local.yml | 0 .../main/resources/application.yml | 0 .../src => src}/main/resources/banner.txt | 0 .../main/resources/formsolutions/formdata.xsd | 0 .../main/resources/wsdl/jsonWrap.wsdl | 0 .../main/resources/wsdl/jsonWrap.xsd | 0 src/test/helm-linter-values.yaml | 33 - src/test/helm/bindings_type_test.yaml | 46 - src/test/helm/deployment_63_chars_test.yaml | 56 - src/test/helm/deployment_bindings_test.yaml | 75 - ...yment_container_security_context_test.yaml | 89 -- ...yment_defaults_containers_health_test.yaml | 82 - .../helm/deployment_defaults_labels_test.yaml | 49 - ...loyment_defaults_spec_containers_test.yaml | 75 - ...faults_topologySpreadConstraints_test.yaml | 48 - .../helm/deployment_env_customList_test.yaml | 72 - .../helm/deployment_host_aliases_test.yaml | 54 - .../deployment_imagepull_secret_test.yaml | 44 - .../helm/deployment_liveness_probe_test.yaml | 51 - ...ployment_pod_default_spec_values_test.yaml | 50 - src/test/helm/deployment_resources_test.yaml | 61 - .../deployment_routing_strategy_env_test.yaml | 80 - .../helm/deployment_routing_zufi_test.yaml | 89 -- .../helm/deployment_service_account_test.yaml | 84 - .../deployment_springProfile_env_test.yaml | 50 - ...t_general_value_and_default_spec_test.yaml | 73 - src/test/helm/ingress_create_or_not_test.yaml | 49 - src/test/helm/ingress_nginx_test.yaml | 68 - src/test/helm/ingress_test.yaml | 147 -- src/test/helm/network_policy_test.yaml | 225 --- src/test/helm/realm_name_length_test.yaml | 41 - src/test/helm/service_account_test.yaml | 108 -- src/test/helm/service_monitor_test.yaml | 96 -- src/test/helm/service_test.yaml | 100 -- .../FormSolutionsAttachmentsMapperTest.java | 0 .../FormSolutionsEingangTestFactory.java | 0 .../FormSolutionsFileMapperUtilsTest.java | 0 .../FormSolutionsFilesTestFactory.java | 2 +- .../FormSolutionsRequestMapperITCase.java | 0 .../FormSolutionsRequestMapperTest.java | 0 .../FormsolutionsAdapterApplicationTest.java | 0 .../formsolutions/FormsolutionsITCase.java | 0 .../formsolutions/SendFormEndpointITCase.java | 0 .../formsolutions/SendFormEndpointTest.java | 0 .../org.junit.jupiter.api.extension.Extension | 0 .../resources/SimpleJsonWithAttachments.json | 0 .../test/resources/application-itcase.yml | 0 .../test/resources/application.yml | 0 .../formular/RequestJsonContent.json | 0 .../test/resources/junit-platform.properties | 0 ...ple-response-getmessages-items-pending.xml | 51 - ...onse-getmessages-no-messages-available.xml | 11 - xta-adapter/pom.xml | 194 --- xta-adapter/readme.md | 48 - xta-adapter/run_helm_test.sh | 7 - xta-adapter/src/main/helm/Chart.yaml | 31 - xta-adapter/src/main/helm/README.md | 35 - xta-adapter/src/main/helm/app-readme.md | 1 - .../src/main/helm/templates/_helpers.tpl | 79 - .../main/helm/templates/network_policy.yaml | 98 -- .../main/helm/templates/service_account.yaml | 31 - .../helm/templates/xta_adapter_cronjob.yaml | 179 --- .../xta_bindings_type_configmap.yaml | 10 - .../helm/templates/xta_keystore_secret.yaml | 36 - .../helm/templates/xta_root_ca_secret.yaml | 34 - xta-adapter/src/main/helm/values.yaml | 36 - .../de/ozgcloud/eingang/xdomea/XMLHelper.java | 63 - .../eingang/xdomea/XdomeaMessageData.java | 17 - .../xdomea/XdomeaMessageDataMapper.java | 152 -- .../eingang/xdomea/XdomeaXMLValueReader.java | 64 - .../MsgStatusListTypeAndHeaderResponse.java | 19 - .../xta/RepresentationsAttachmentsPair.java | 14 - .../xta/WsHeaderAddingInterceptor.java | 75 - .../xta/XtaCurrentIdentifierService.java | 28 - .../java/de/ozgcloud/eingang/xta/XtaFile.java | 14 - .../eingang/xta/XtaIncomingFilesMapper.java | 72 - .../ozgcloud/eingang/xta/XtaMapperHelper.java | 31 - .../de/ozgcloud/eingang/xta/XtaMessage.java | 19 - .../de/ozgcloud/eingang/xta/XtaMessageId.java | 14 - .../eingang/xta/XtaMessageMapper.java | 50 - .../eingang/xta/XtaMessageMetaData.java | 59 - .../eingang/xta/XtaMessageMetaDataMapper.java | 36 - .../xta/XtaMessageMetaDatasAndHeader.java | 15 - .../xta/XtaMessageMetadataRemoteIterator.java | 65 - .../ozgcloud/eingang/xta/XtaProperties.java | 85 - .../eingang/xta/XtaRemoteService.java | 296 ---- .../xta/XtaRemoteServiceConfiguration.java | 126 -- .../de/ozgcloud/eingang/xta/XtaRunner.java | 48 - .../de/ozgcloud/eingang/xta/XtaService.java | 152 -- .../eingang/xta/zip/LimitedInputStream.java | 42 - .../eingang/xta/zip/ReadableZipEntry.java | 28 - .../eingang/xta/zip/ZipFileExtractor.java | 119 -- xta-adapter/src/main/resources/XTA.wsdl | 620 -------- .../src/main/resources/application-local.yml | 18 - .../src/main/resources/application.yml | 19 - xta-adapter/src/main/wsdl/XTA-synchron.wsdl | 176 --- xta-adapter/src/main/xsd/OSCI2_02.xsd | 328 ---- .../main/xsd/OSCI_MessageMetaData_V2.02.xsd | 379 ----- .../main/xsd/XTA-Webservice-Datentypen.xsd | 544 ------- .../main/xsd/XTA-Webservice-Exceptions.xsd | 133 -- .../xsd/XTA-Webservice-Globale-Elemente.xsd | 137 -- ...oasis-200401-wss-wssecurity-secext-1.0.xsd | 195 --- ...asis-200401-wss-wssecurity-utility-1.0.xsd | 108 -- xta-adapter/src/main/xsd/soap-envelope.xsd | 127 -- xta-adapter/src/main/xsd/ws-addr-wsdl.xsd | 60 - xta-adapter/src/main/xsd/ws-addr.xsd | 126 -- xta-adapter/src/main/xsd/ws-policy.xsd | 141 -- xta-adapter/src/main/xsd/xenc-schema.xsd | 126 -- xta-adapter/src/main/xsd/xml.xsd | 145 -- .../src/main/xsd/xmldsig-core-schema.xsd | 308 ---- xta-adapter/src/main/xsd/xmlmime.xsd | 49 - .../src/main/xsd/xoev-basisdatentypen.xsd | 18 - .../src/main/xsd/xoev1_0-basisdatentypen.xsd | 32 - xta-adapter/src/test/helm-linter-values.yaml | 33 - .../src/test/helm/network_policy_test.yaml | 239 --- .../src/test/helm/service_account_test.yaml | 66 - .../test/helm/xta_adapter_63_chars_test.yaml | 56 - .../helm/xta_adapter_cronjob_basic_test.yaml | 148 -- .../xta_adapter_cronjob_bindings_test.yaml | 47 - ...xta_adapter_cronjob_dummy_probes_test.yaml | 85 - .../helm/xta_adapter_cronjob_env_test.yaml | 202 --- .../xta_adapter_cronjob_image_pull_test.yaml | 45 - .../xta_adapter_cronjob_resources_test.yaml | 56 - ...xta_adapter_cronjob_routing_zufi_test.yaml | 88 -- ..._adapter_cronjob_service_account_test.yaml | 55 - .../xta_adapter_cronjob_volumes_test.yaml | 93 -- .../src/test/helm/xta_bindings_type_test.yaml | 56 - .../test/helm/xta_keystore_secret_test.yaml | 64 - .../test/helm/xta_root_ca_secret_test.yaml | 58 - .../xdomea/XdomeaMessageDataMapperTest.java | 217 --- .../xdomea/XdomeaMessageDataTestFactory.java | 45 - .../xdomea/XdomeaXMLValueReaderTest.java | 59 - .../eingang/xta/FormDataTestFactory.java | 17 - .../eingang/xta/FormHeaderTestFactory.java | 27 - .../xta/MessageMetaDataTestFactory.java | 22 - ...sListTypeAndHeaderResponseTestFactory.java | 20 - .../xta/MsgStatusListTypeTestFactory.java | 13 - ...esentationsAttachmentsPairTestFactory.java | 31 - .../eingang/xta/XtaApplicationTest.java | 21 - .../xta/XtaCurrentIdentifierServiceTest.java | 44 - .../eingang/xta/XtaFileTestFactory.java | 47 - .../de/ozgcloud/eingang/xta/XtaITCase.java | 327 ---- .../xta/XtaIncomingFilesMapperTest.java | 139 -- .../eingang/xta/XtaMessageMapperTest.java | 125 -- .../xta/XtaMessageMetaDataMapperTest.java | 39 - .../xta/XtaMessageMetaDataTestFactory.java | 39 - ...aMessageMetaDatasAndHeaderTestFactory.java | 21 - .../XtaMessageMetadataRemoteIteratorTest.java | 120 -- .../eingang/xta/XtaMessageTestFactory.java | 21 - .../eingang/xta/XtaPropertiesTestFactory.java | 29 - .../XtaRemoteServiceConfigurationTest.java | 22 - .../xta/XtaRemoteServiceFunctionalCase.java | 71 - .../eingang/xta/XtaRemoteServiceTest.java | 146 -- .../eingang/xta/XtaResponseTestFactory.java | 140 -- .../ozgcloud/eingang/xta/XtaRunnerTest.java | 57 - .../ozgcloud/eingang/xta/XtaServiceTest.java | 471 ------ .../xta/zip/LimitedInputStreamTest.java | 141 -- .../eingang/xta/zip/ReadableZipEntryTest.java | 80 - .../eingang/xta/zip/TestZipFileFactory.java | 113 -- .../eingang/xta/zip/ZipFileExtractorTest.java | 371 ----- .../org.junit.jupiter.api.extension.Extension | 1 - .../src/test/resources/application-itcase.yml | 22 - .../test/resources/junit-platform.properties | 1 - ...2d00-4cb0-8318-e3422ab27b86_PDF-Antrag.pdf | Bin 50962 -> 0 bytes ...-7b60-4322-81fa-cf928d1a22e5_00TESTPDF.pdf | Bin 6649 -> 0 bytes ...e03_Geschaeftsgang.Geschaeftsgang.0201.xml | 107 -- ...-c97b-4823-bad1-60401b112a9f_XML-Daten.xml | 89 -- ...27e_Geschaeftsgang.Geschaeftsgang.0201.xml | 89 -- ...baf4-424d-8c69-a8e7f7470d68_PDF-Antrag.pdf | Bin 50962 -> 0 bytes ...-9984-43ba-8dda-b81aa3d92f95_XML-Daten.xml | 3 - ...g-01f903b0-c61e-429d-807f-5011d180c073.pdf | Bin 54283 -> 0 bytes ...a22a-9d20-4507-aa5e-b764bb5642f0_Admin.png | Bin 64973 -> 0 bytes ...2-499a-9be8-ce8b9d8c8714_Fachnachricht.xml | 32 - ...b95_Geschaeftsgang.Geschaeftsgang.0201.xml | 128 -- ...2-45b8-9bd2-db840b8322bf_Fachnachricht.xml | 32 - ...4d94-afdf-62c89b9e1557_Zusammenfassung.pdf | Bin 51229 -> 0 bytes ...345_Geschaeftsgang.Geschaeftsgang.0201.xml | 111 -- ...fcb21f610f_Antrag_Max_Mustermann_SGBIX.pdf | Bin 39794 -> 0 bytes ...a22a-9d20-4507-aa5e-b764bb5642f0_Admin.png | Bin 64973 -> 0 bytes ...400cc0301a_Antrag_Max_Mustermann_SGBIX.xml | 229 --- ...ef2_Geschaeftsgang.Geschaeftsgang.0201.xml | 123 -- ...fcb21f610f_Antrag_Max_Mustermann_SGBIX.pdf | Bin 39794 -> 0 bytes ...400cc0301a_Antrag_Max_Mustermann_SGBIX.xml | 229 --- ...ef2_Geschaeftsgang.Geschaeftsgang.0201.xml | 101 -- ...-4aec-4253-bb2c-9788823ff9b1_XML-Daten.xml | 132 -- ...4d2_Geschaeftsgang.Geschaeftsgang.0201.xml | 79 - .../versammlungsanzeige.xml | 1 - ...tel_Geschaeftsgang.Geschaeftsgang.0201.xml | 138 -- ...rag_Geschaeftsgang.Geschaeftsgang.0201.xml | 132 -- .../src/test/resources/xtaTestStore.p12 | Bin 2768 -> 0 bytes 571 files changed, 246 insertions(+), 46729 deletions(-) delete mode 100644 .helmignore delete mode 100644 .mvn/wrapper/MavenWrapperDownloader.java delete mode 100644 .mvn/wrapper/maven-wrapper.jar delete mode 100644 .mvn/wrapper/maven-wrapper.properties delete mode 100644 Jenkinsfile delete mode 100644 common/pom.xml delete mode 100644 common/src/main/java/de/ozgcloud/eingang/Application.java delete mode 100644 common/src/main/java/de/ozgcloud/eingang/EingangAspectPointcuts.java delete mode 100644 common/src/main/java/de/ozgcloud/eingang/EingangLoggingAspect.java delete mode 100644 common/src/main/java/de/ozgcloud/eingang/LogRunner.java delete mode 100644 common/src/main/java/de/ozgcloud/eingang/common/errorhandling/FunctionalException.java delete mode 100644 common/src/main/java/de/ozgcloud/eingang/common/errorhandling/TechnicalException.java delete mode 100644 common/src/main/java/de/ozgcloud/eingang/common/formdata/Antragsteller.java delete mode 100644 common/src/main/java/de/ozgcloud/eingang/common/formdata/DeleteOnCloseInputStream.java delete mode 100644 common/src/main/java/de/ozgcloud/eingang/common/formdata/FormData.java delete mode 100644 common/src/main/java/de/ozgcloud/eingang/common/formdata/FormDataUtils.java delete mode 100644 common/src/main/java/de/ozgcloud/eingang/common/formdata/FormHeader.java delete mode 100644 common/src/main/java/de/ozgcloud/eingang/common/formdata/FormMetaData.java delete mode 100644 common/src/main/java/de/ozgcloud/eingang/common/formdata/IncomingFile.java delete mode 100644 common/src/main/java/de/ozgcloud/eingang/common/formdata/IncomingFileGroup.java delete mode 100644 common/src/main/java/de/ozgcloud/eingang/common/formdata/PostfachAddressIdentifier.java delete mode 100644 common/src/main/java/de/ozgcloud/eingang/common/formdata/ServiceKonto.java delete mode 100644 common/src/main/java/de/ozgcloud/eingang/common/formdata/StringBasedIdentifier.java delete mode 100644 common/src/main/java/de/ozgcloud/eingang/common/formdata/ZustaendigeStelle.java delete mode 100644 common/src/main/java/de/ozgcloud/eingang/common/vorgang/VorgangNummerSupplier.java delete mode 100644 common/src/main/resources/META-INF/additional-spring-configuration-metadata.json delete mode 100644 common/src/main/resources/application-oc.yml delete mode 100644 common/src/test/java/de/ozgcloud/eingang/EingangAdapterApplicationTest.java delete mode 100644 common/src/test/java/de/ozgcloud/eingang/common/formdata/AntragstellerTestFactory.java delete mode 100644 common/src/test/java/de/ozgcloud/eingang/common/formdata/DeleteOnCloseInputStreamTest.java delete mode 100644 common/src/test/java/de/ozgcloud/eingang/common/formdata/FormDataControlTestFactory.java delete mode 100644 common/src/test/java/de/ozgcloud/eingang/common/formdata/FormDataTestFactory.java delete mode 100644 common/src/test/java/de/ozgcloud/eingang/common/formdata/FormHeaderTestFactory.java delete mode 100644 common/src/test/java/de/ozgcloud/eingang/common/formdata/FormMetaDataTestFactory.java delete mode 100644 common/src/test/java/de/ozgcloud/eingang/common/formdata/FormSolutionsTestFactory.java delete mode 100644 common/src/test/java/de/ozgcloud/eingang/common/formdata/IncomingFileGroupTestFactory.java delete mode 100644 common/src/test/java/de/ozgcloud/eingang/common/formdata/IncomingFileTest.java delete mode 100644 common/src/test/java/de/ozgcloud/eingang/common/formdata/IncomingFileTestFactory.java delete mode 100644 common/src/test/java/de/ozgcloud/eingang/common/formdata/PostfachAddressTestFactory.java delete mode 100644 common/src/test/java/de/ozgcloud/eingang/common/formdata/ServiceKontoTestFactory.java delete mode 100644 common/src/test/java/de/ozgcloud/eingang/common/formdata/TrustLevelTest.java delete mode 100644 common/src/test/java/de/ozgcloud/eingang/common/formdata/ZustaendigeStelleTestFactory.java delete mode 100644 common/src/test/java/de/ozgcloud/eingang/common/vorgang/VorgangNummerSupplierTest.java delete mode 100644 common/src/test/resources/application.yml delete mode 100644 common/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker delete mode 100644 dependency-check-supressions.xml delete mode 100644 enterprise-adapter/pom.xml delete mode 100644 enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/EnterpriseAdapterConfiguration.java delete mode 100644 enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryController.java delete mode 100644 enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryData.java delete mode 100644 enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryDataMapper.java delete mode 100644 enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryFormDataField.java delete mode 100644 enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryFormDataItem.java delete mode 100644 enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryFormDataSubForm.java delete mode 100644 enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryResponse.java delete mode 100644 enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/FormDataMapper.java delete mode 100644 enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/ReadingRequestException.java delete mode 100644 enterprise-adapter/src/main/resources/application-local.yml delete mode 100644 enterprise-adapter/src/main/resources/application.yml delete mode 100644 enterprise-adapter/src/main/resources/log4j2-local.xml delete mode 100644 enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/ControlDataTestFactory.java delete mode 100644 enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EnterpriseEntryITCase.java delete mode 100644 enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryControllerTest.java delete mode 100644 enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryDataMapperTest.java delete mode 100644 enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryDataTestFactory.java delete mode 100644 enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryFormDataTestFactory.java delete mode 100644 enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryResponseTestFactory.java delete mode 100644 enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/FormDataControlTestFactory.java delete mode 100644 enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/FormDataMapperTest.java delete mode 100644 enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/ResponseVorgangTestFactory.java delete mode 100644 enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/ServicekontoTestFactory.java delete mode 100644 enterprise-adapter/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension delete mode 100644 enterprise-adapter/src/test/resources/junit-platform.properties delete mode 100644 enterprise-adapter/src/test/resources/request/a12_entry.json delete mode 100644 enterprise-adapter/src/test/resources/request/document_JaS.json delete mode 100644 enterprise-adapter/src/test/resources/request/jugendsozialarbeit_an_schulen-DM.json delete mode 100644 enterprise-adapter/src/test/resources/request/simple.json delete mode 100644 fim-adapter/pom.xml delete mode 100644 fim-adapter/src/main/java/de/ozgcloud/eingang/fim/FimBasedAdapter.java delete mode 100644 fim-adapter/src/main/java/de/ozgcloud/eingang/fim/FimDataMapper.java delete mode 100644 fim-adapter/src/main/java/de/ozgcloud/eingang/fim/FimEngineBasedMapper.java delete mode 100644 fim-adapter/src/main/java/de/ozgcloud/eingang/fim/FimException.java delete mode 100644 fim-adapter/src/main/java/de/ozgcloud/eingang/fim/FimProperties.java delete mode 100644 fim-adapter/src/main/java/de/ozgcloud/eingang/fim/FimScheme.java delete mode 100644 fim-adapter/src/main/java/de/ozgcloud/eingang/fim/FimSchemeAdapter.java delete mode 100644 fim-adapter/src/main/java/de/ozgcloud/eingang/fim/FimSchemeAdapterCatalogue.java delete mode 100644 fim-adapter/src/main/java/de/ozgcloud/eingang/fim/FimSchemeCatalogue.java delete mode 100644 fim-adapter/src/main/java/de/ozgcloud/eingang/fim/FimSchemeIdentifier.java delete mode 100644 fim-adapter/src/main/java/de/ozgcloud/eingang/fim/FimService.java delete mode 100644 fim-adapter/src/main/java/de/ozgcloud/eingang/fim/UnknownSchemeAdapter.java delete mode 100644 fim-adapter/src/main/java/de/ozgcloud/eingang/fim/ZustaendigeStelleMapper.java delete mode 100644 fim-adapter/src/main/resources/application-fim.yml delete mode 100644 fim-adapter/src/main/resources/fim-s17000652_1.4/C17000420_genericode.xml delete mode 100644 fim-adapter/src/main/resources/fim-s17000652_1.4/C17001208_genericode.xml delete mode 100644 fim-adapter/src/main/resources/fim-s17000652_1.4/C17001209_genericode.xml delete mode 100644 fim-adapter/src/main/resources/fim-s17000652_1.4/S17000652V1.4_xfall.xsd delete mode 100644 fim-adapter/src/test/java/de/ozgcloud/eingang/fim/FimBasedAdapterTest.java delete mode 100644 fim-adapter/src/test/java/de/ozgcloud/eingang/fim/FimServiceITCase.java delete mode 100644 fim-adapter/src/test/java/de/ozgcloud/eingang/fim/FimTestConfig.java delete mode 100644 fim-adapter/src/test/java/de/ozgcloud/eingang/fim/TestNonStandardAdapter.java delete mode 100644 fim-adapter/src/test/java/de/ozgcloud/eingang/fim/ZustaendigeStelleMapperTest.java delete mode 100644 fim-adapter/src/test/resources/S17000652V1.4_test01.xml delete mode 100644 fim-adapter/src/test/resources/application-test.yml delete mode 100644 fim-adapter/src/test/resources/test1.xml delete mode 100644 fim-adapter/src/test/resources/test2.xml delete mode 100644 fim-adapter/src/test/resources/test2/test2.xsd delete mode 100644 fim-adapter/src/test/resources/test3.xml delete mode 100644 fim-adapter/src/test/resources/test3/Antrag.xml delete mode 100644 fim-adapter/src/test/resources/test3/fim_xtaMetadata.xml delete mode 100644 formcycle-adapter/formcycle-adapter-impl/pom.xml delete mode 100644 formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormCycleFormDataMapper.java delete mode 100644 formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormCycleServiceKontoMapper.java delete mode 100644 formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormDataController.java delete mode 100644 formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormDataHtmlCleaner.java delete mode 100644 formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormcycleAdapterApplication.java delete mode 100644 formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/common/errorhandling/FormcycleExceptionHandler.java delete mode 100644 formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/common/errorhandling/InternalExceptionDto.java delete mode 100644 formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/common/protobuf/CustomProtobufHttpMessageConverter.java delete mode 100644 formcycle-adapter/formcycle-adapter-impl/src/main/resources/application-local.yml delete mode 100644 formcycle-adapter/formcycle-adapter-impl/src/main/resources/application.yml delete mode 100644 formcycle-adapter/formcycle-adapter-impl/src/main/resources/banner.txt delete mode 100644 formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleAttachmentGroupTestFactory.java delete mode 100644 formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleFormDataMapperTest.java delete mode 100644 formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleFormDataTestFactory.java delete mode 100644 formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleFormHeaderTestFactory.java delete mode 100644 formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCyclePostfachAddressTestFactory.java delete mode 100644 formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleServiceKontoMapperTest.java delete mode 100644 formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleServiceKontoTestFactory.java delete mode 100644 formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormDataControllerITCase.java delete mode 100644 formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormDataControllerTest.java delete mode 100644 formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormDataHtmlCleanerITCase.java delete mode 100644 formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormDataHtmlCleanerTest.java delete mode 100644 formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormcycleAdapterApplicationTest.java delete mode 100644 formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/common/errorhandling/FormcycleExceptionHandlerTest.java delete mode 100644 formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/common/errorhandling/InternalExceptionDtoTestFactory.java delete mode 100644 formcycle-adapter/formcycle-adapter-impl/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension delete mode 100644 formcycle-adapter/formcycle-adapter-impl/src/test/resources/application-itcase.yml delete mode 100644 formcycle-adapter/formcycle-adapter-impl/src/test/resources/junit-platform.properties delete mode 100644 formcycle-adapter/formcycle-adapter-impl/src/test/resources/log4j2.xml delete mode 100644 formcycle-adapter/formcycle-adapter-interface/pom.xml delete mode 100644 formcycle-adapter/formcycle-adapter-interface/src/main/protobuf/form-data.model.proto delete mode 100644 formcycle-adapter/pom.xml delete mode 100644 formsolutions-adapter/pom.xml delete mode 100644 formsolutions-adapter/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension delete mode 100644 formsolutions-adapter/src/test/resources/junit-platform.properties delete mode 100644 forwarder/pom.xml delete mode 100644 forwarder/src/main/java/de/ozgcloud/eingang/forwarder/RouteCriteria.java delete mode 100644 forwarder/src/main/java/de/ozgcloud/eingang/forwarder/RouteCriteriaMapper.java delete mode 100644 forwarder/src/main/java/de/ozgcloud/eingang/forwarder/RouteForwardingGrpcService.java delete mode 100644 forwarder/src/main/java/de/ozgcloud/eingang/forwarder/RouteForwardingService.java delete mode 100644 forwarder/src/test/java/de/ozgcloud/eingang/forwarder/ForwarderApplicationTest.java delete mode 100644 forwarder/src/test/java/de/ozgcloud/eingang/forwarder/GrpcRouteForwardingRequestTestFactory.java delete mode 100644 forwarder/src/test/java/de/ozgcloud/eingang/forwarder/RouteCriteriaTestFactory.java delete mode 100644 forwarder/src/test/java/de/ozgcloud/eingang/forwarder/RouteForwardingGrpcServiceTest.java delete mode 100644 forwarder/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension delete mode 100644 forwarder/src/test/resources/application-itcase.yml delete mode 100644 forwarder/src/test/resources/application.yml delete mode 100644 forwarder/src/test/resources/junit-platform.properties delete mode 100644 intelliform-adapter/README.md delete mode 100644 intelliform-adapter/pom.xml delete mode 100644 intelliform-adapter/src/main/java/de/ozgcloud/eingang/WebServiceConfiguration.java delete mode 100644 intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/DepositDataMapper.java delete mode 100644 intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/FormDataEndpoint.java delete mode 100644 intelliform-adapter/src/main/resources/application-dev.yml delete mode 100644 intelliform-adapter/src/main/resources/application-local.yml delete mode 100644 intelliform-adapter/src/main/resources/application-test.yml delete mode 100644 intelliform-adapter/src/main/resources/application.yml delete mode 100644 intelliform-adapter/src/main/resources/banner.txt delete mode 100644 intelliform-adapter/src/main/resources/intelliform/ApplicationService.wsdl delete mode 100644 intelliform-adapter/src/main/resources/intelliform/ApplicationService.xsd delete mode 100644 intelliform-adapter/src/main/resources/logback-spring.xml delete mode 100755 intelliform-adapter/src/main/scripts/create-demo-vorgang.sh delete mode 100644 intelliform-adapter/src/main/scripts/vorgang-A12-deutschlandticket.xml delete mode 100644 intelliform-adapter/src/main/scripts/vorgang-Eingliederungshilfe.xml delete mode 100644 intelliform-adapter/src/main/scripts/vorgang-GewerbeAnmeldung.xml delete mode 100644 intelliform-adapter/src/main/scripts/vorgang-Waffenschein.xml delete mode 100644 intelliform-adapter/src/main/scripts/vorgang-Wahlhelferin.xml delete mode 100644 intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/AttachmentTestFactory.java delete mode 100644 intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/DepositDataMapperTest.java delete mode 100644 intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/DepositDataTestFactory.java delete mode 100644 intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/FormDataEndpointITCase.java delete mode 100644 intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/FormDataEndpointTest.java delete mode 100644 intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/GrpcFormFieldTestFactory.java delete mode 100644 intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/XmlDaten1Container.java delete mode 100644 intelliform-adapter/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension delete mode 100644 intelliform-adapter/src/test/resources/fileupload/testodt1.odt delete mode 100644 intelliform-adapter/src/test/resources/fileupload/testpdf1.pdf delete mode 100644 intelliform-adapter/src/test/resources/intelliform/XML-Daten-1.xml delete mode 100644 intelliform-adapter/src/test/resources/intelliform/XML-Daten-complex.template.xml delete mode 100644 intelliform-adapter/src/test/resources/intelliform/soaprequest-deposit.xml delete mode 100644 intelliform-adapter/src/test/resources/intelliform/soaprequest_other-name.xml delete mode 100644 intelliform-adapter/src/test/resources/itcase/EinfachesFormularZweiAnhaengeSoapRequest.xml delete mode 100644 intelliform-adapter/src/test/resources/itcase/EinfachesFormularZweiAnhaengeSoapRequest_XML-Daten.xml delete mode 100644 intelliform-adapter/src/test/resources/itcase/EinfachesFormularZweiAnhaengeSoapResponse.xml delete mode 100644 intelliform-adapter/src/test/resources/itcase/XML-Daten-1-SoapRequest.xml delete mode 100644 intelliform-adapter/src/test/resources/itcase/XML-Daten-1-other_name_SoapRequest.xml delete mode 100644 intelliform-adapter/src/test/resources/junit-platform.properties delete mode 100644 intelliform-adapter/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker delete mode 100755 release-erstellen.sh delete mode 100755 release-startdev.sh delete mode 100644 router/pom.xml delete mode 100644 router/src/main/java/de/ozgcloud/eingang/common/zufi/OrganisationsEinheit.java delete mode 100644 router/src/main/java/de/ozgcloud/eingang/common/zufi/OrganisationsEinheitMapper.java delete mode 100644 router/src/main/java/de/ozgcloud/eingang/common/zufi/OrganisationsEinheitRemoteService.java delete mode 100644 router/src/main/java/de/ozgcloud/eingang/common/zufi/ZufiService.java delete mode 100644 router/src/main/java/de/ozgcloud/eingang/router/CallContext.java delete mode 100644 router/src/main/java/de/ozgcloud/eingang/router/ClosableStub.java delete mode 100644 router/src/main/java/de/ozgcloud/eingang/router/ConsistentStub.java delete mode 100644 router/src/main/java/de/ozgcloud/eingang/router/FileIdMapper.java delete mode 100644 router/src/main/java/de/ozgcloud/eingang/router/GrpcClientsProperties.java delete mode 100644 router/src/main/java/de/ozgcloud/eingang/router/GrpcEingangMapper.java delete mode 100644 router/src/main/java/de/ozgcloud/eingang/router/ManagableStub.java delete mode 100644 router/src/main/java/de/ozgcloud/eingang/router/ServiceKontoMapper.java delete mode 100644 router/src/main/java/de/ozgcloud/eingang/router/VorgangManagerListProperties.java delete mode 100644 router/src/main/java/de/ozgcloud/eingang/router/VorgangManagerServerResolver.java delete mode 100644 router/src/main/java/de/ozgcloud/eingang/router/VorgangRemoteService.java delete mode 100644 router/src/main/java/de/ozgcloud/eingang/router/VorgangService.java delete mode 100644 router/src/main/java/de/ozgcloud/eingang/router/errorhandling/AdapterConfigurationException.java delete mode 100644 router/src/main/java/de/ozgcloud/eingang/router/errorhandling/UnknownOrganisationseinheitException.java delete mode 100644 router/src/main/resources/META-INF/spring/README.md delete mode 100644 router/src/test/java/de/ozgcloud/eingang/common/zufi/GrpcOrganisationsEinheitGetResponseTestFactory.java delete mode 100644 router/src/test/java/de/ozgcloud/eingang/common/zufi/GrpcOrganisationsEinheitTestFactory.java delete mode 100644 router/src/test/java/de/ozgcloud/eingang/common/zufi/OrganisationsEinheitMapperTest.java delete mode 100644 router/src/test/java/de/ozgcloud/eingang/common/zufi/OrganisationsEinheitRemoteServiceTest.java delete mode 100644 router/src/test/java/de/ozgcloud/eingang/common/zufi/OrganisationsEinheitTestFactory.java delete mode 100644 router/src/test/java/de/ozgcloud/eingang/common/zufi/ZufiServiceTest.java delete mode 100644 router/src/test/java/de/ozgcloud/eingang/router/GrpcEingangHeaderTestFactory.java delete mode 100644 router/src/test/java/de/ozgcloud/eingang/router/GrpcEingangMapperITCase.java delete mode 100644 router/src/test/java/de/ozgcloud/eingang/router/GrpcEingangMapperTest.java delete mode 100644 router/src/test/java/de/ozgcloud/eingang/router/GrpcFormFieldTestFactory.java delete mode 100644 router/src/test/java/de/ozgcloud/eingang/router/GrpcIncomingFileGroupTestFactory.java delete mode 100644 router/src/test/java/de/ozgcloud/eingang/router/GrpcIncomingFileTestFactory.java delete mode 100644 router/src/test/java/de/ozgcloud/eingang/router/ServiceKontoMapperTest.java delete mode 100644 router/src/test/java/de/ozgcloud/eingang/router/VorgangManagerListPropertiesTest.java delete mode 100644 router/src/test/java/de/ozgcloud/eingang/router/VorgangManagerListPropertiesTestFactory.java delete mode 100644 router/src/test/java/de/ozgcloud/eingang/router/VorgangManagerServerResolverITCase.java delete mode 100644 router/src/test/java/de/ozgcloud/eingang/router/VorgangManagerServerResolverTest.java delete mode 100644 router/src/test/java/de/ozgcloud/eingang/router/VorgangManagerServerResolverTestFactory.java delete mode 100644 router/src/test/java/de/ozgcloud/eingang/router/VorgangRemoteServiceTest.java delete mode 100644 router/src/test/java/de/ozgcloud/eingang/router/VorgangServiceTest.java delete mode 100644 router/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension delete mode 100644 router/src/test/resources/junit-platform.properties delete mode 100644 router/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker delete mode 100755 run_filereader.sh delete mode 100755 run_helm_test.sh delete mode 100755 run_local.sh delete mode 100644 semantik-adapter/pom.xml delete mode 100644 semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/SemantikAdapter.java delete mode 100644 semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/common/ReadZipException.java delete mode 100644 semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/common/ServiceKontoFactory.java delete mode 100644 semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/common/ZipAttachmentReader.java delete mode 100644 semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/EngineBasedMapper.java delete mode 100644 semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/EngineBasedSemantikAdapter.java delete mode 100644 semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/FilesMapperHelper.java delete mode 100644 semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/a12/A12Eingang.java delete mode 100644 semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/a12/A12EngineBasedAdapter.java delete mode 100644 semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/a12/A12EngineBasedMapper.java delete mode 100644 semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/a12/A12FormDataMapper.java delete mode 100644 semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerHeaderMapper.java delete mode 100644 semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerMapper.java delete mode 100644 semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmEmpfangeneStelleMapper.java delete mode 100644 semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmEngineBasedAdapter.java delete mode 100644 semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmEngineBasedMapper.java delete mode 100644 semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmErklaerungenMapper.java delete mode 100644 semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmFileCountMapper.java delete mode 100644 semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmHeaderMapper.java delete mode 100644 semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmZustaendigeStelleMapper.java delete mode 100644 semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/XmlMapperSupplier.java delete mode 100644 semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleData.java delete mode 100644 semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleMetadataMapper.java delete mode 100644 semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/intelliform/IntelliFormRepresentationAdapter.java delete mode 100644 semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/intelliform/JsonService.java delete mode 100644 semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/intelliform/XmlToJavaMapsMapper.java delete mode 100644 semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelEngineBasedSemantikAdapter.java delete mode 100644 semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormCycleEngineBasedAdapter.java delete mode 100644 semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormcycleAntragstellerMapper.java delete mode 100644 semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormcycleEngineBasedMapper.java delete mode 100644 semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsAntragstellerMapper.java delete mode 100644 semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsEngineBasedAdapter.java delete mode 100644 semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsEngineBasedMapper.java delete mode 100644 semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsFilesMapper.java delete mode 100644 semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsHeaderMapper.java delete mode 100644 semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsPanelMapper.java delete mode 100644 semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsZustaendigeStelleMapper.java delete mode 100644 semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/IdentifierValueParser.java delete mode 100644 semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/formbased/AnliegenId.java delete mode 100644 semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/formbased/FormBasedMapper.java delete mode 100644 semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/formbased/FormBasedSemantikAdapter.java delete mode 100644 semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/formbased/mantelantrag/MantelantragZustaendigeStelleMapper.java delete mode 100644 semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/SemantikAdapterTest.java delete mode 100644 semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/common/ServiceKontoFactoryTest.java delete mode 100644 semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/common/ZipAttachmentReaderTest.java delete mode 100644 semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/FilesMapperHelperTest.java delete mode 100644 semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/a12/A12FormDataMapperTest.java delete mode 100644 semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerHeaderMapperTest.java delete mode 100644 semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerMapperTest.java delete mode 100644 semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerTestFactory.java delete mode 100644 semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmEmpfangeneStelleMapperTest.java delete mode 100644 semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmEngineBasedAdapterTest.java delete mode 100644 semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmErklaerungenMapperTest.java delete mode 100644 semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmFileCountMapperTest.java delete mode 100644 semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmHeaderMapperTest.java delete mode 100644 semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmHeaderTestFactory.java delete mode 100644 semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmZustaendigeStelleMapperTest.java delete mode 100644 semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmZustaendigeStelleTestFactory.java delete mode 100644 semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleDataTestFactory.java delete mode 100644 semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleMetadataFieldTestFactory.java delete mode 100644 semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleMetadataMapperITCase.java delete mode 100644 semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleMetadataMapperTest.java delete mode 100644 semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/intelliform/IntelliFormRepresentationAdapterTest.java delete mode 100644 semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/intelliform/JsonServiceTest.java delete mode 100644 semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/intelliform/XmlToJavaMapsMapperTest.java delete mode 100644 semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelEngineBasedSemantikAdapterTest.java delete mode 100644 semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelFormDataTestFactory.java delete mode 100644 semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormCycleEngineBasedAdapterTest.java delete mode 100644 semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormcycleAntragstellerMapperTest.java delete mode 100644 semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsAntragstellerMapperTest.java delete mode 100644 semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsEngineBasedAdapterITCase.java delete mode 100644 semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsEngineBasedAdapterTest.java delete mode 100644 semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsFilesMapperTest.java delete mode 100644 semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsHeaderMapperTest.java delete mode 100644 semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsHeaderTestFactory.java delete mode 100644 semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsPanelMapperTest.java delete mode 100644 semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsPanelTestFactory.java delete mode 100644 semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsZustaendigeStelleMapperTest.java delete mode 100644 semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/IdentifierValueParserTest.java delete mode 100644 semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/formbased/FormBasedSemantikAdapterTest.java delete mode 100644 semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/formbased/mantelantrag/MantelantragITCase.java delete mode 100644 semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/formbased/mantelantrag/MantelantragZustaendigeStelleMapperTest.java delete mode 100644 semantik-adapter/src/test/resources/A12/a12FormData.json delete mode 100644 semantik-adapter/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension delete mode 100644 semantik-adapter/src/test/resources/attachment-1file.zip delete mode 100644 semantik-adapter/src/test/resources/attachment-2files.zip delete mode 100644 semantik-adapter/src/test/resources/attachment-empty.zip delete mode 100644 semantik-adapter/src/test/resources/attachment-encrypted.zip delete mode 100644 semantik-adapter/src/test/resources/behoerde_metadata.xml delete mode 100644 semantik-adapter/src/test/resources/eingang.pdf delete mode 100644 semantik-adapter/src/test/resources/formsolutions/attachment-2files.zip delete mode 100644 semantik-adapter/src/test/resources/formsolutions001.json delete mode 100644 semantik-adapter/src/test/resources/intelliform/EinfachesFormularZweiAnhaengeXmlDaten1.xml delete mode 100644 semantik-adapter/src/test/resources/intelliform/EinfachesFormularZweiAnhaengeXmlDatenVerschachtelt.xml delete mode 100644 semantik-adapter/src/test/resources/intelliform/FormularSoapRequest_WithContent_XML-Daten-1.xml delete mode 100644 semantik-adapter/src/test/resources/intelliform/SimpleFormDataMapperTestFile.xml delete mode 100644 semantik-adapter/src/test/resources/intelliform/XML-Daten-1-SoapRequest.xml delete mode 100644 semantik-adapter/src/test/resources/intelliform/XML-Daten_Gewerbe.xml delete mode 100644 semantik-adapter/src/test/resources/intelliform/XML-Daten_Gewerbe_organisationseinheitenID.xml delete mode 100644 semantik-adapter/src/test/resources/intelliform/XML-Daten_Gewerbe_organisationseinheitenID_und_zustaendigstelle.xml delete mode 100644 semantik-adapter/src/test/resources/intelliform/XML-Daten_Strassengefaelle.xml delete mode 100644 semantik-adapter/src/test/resources/intelliform/XML-Keine_Daten.xml delete mode 100644 semantik-adapter/src/test/resources/intelliform/andererName-Daten.xml delete mode 100644 semantik-adapter/src/test/resources/junit-platform.properties delete mode 100644 semantik-adapter/src/test/resources/mantelantrag/4620-EH6C_7d703670-15b6-42b2-8cd1-88a7e4c494b9_Antrag_Max_Mustermann_SGBXII.xml delete mode 100644 semantik-adapter/src/test/resources/mantelantrag/4620-EH6C_b3c9168a-6ae9-4361-8b2f-6837bb341021_Geschaeftsgang.Geschaeftsgang.0201.xml delete mode 100644 semantik-adapter/src/test/resources/xta/Beispieldatensatz_Fachnachricht.xml delete mode 100644 semantik-adapter/src/test/resources/zip-file-0.txt delete mode 100644 semantik-adapter/src/test/resources/zip-file-1.txt delete mode 100644 semantik-adapter/src/test/resources/zipbombs/filewithmanyfiles.dat.zip delete mode 100644 semantik-adapter/src/test/resources/zipbombs/filewithnulls.dat.zip delete mode 100644 src/main/helm/Chart.yaml delete mode 100644 src/main/helm/README.md delete mode 100644 src/main/helm/templates/NOTES.txt delete mode 100644 src/main/helm/templates/_helpers.tpl delete mode 100644 src/main/helm/templates/bindings_type_configmap.yaml delete mode 100644 src/main/helm/templates/deployment.yaml delete mode 100644 src/main/helm/templates/ingress.yaml delete mode 100644 src/main/helm/templates/network_policy.yaml delete mode 100644 src/main/helm/templates/service.yaml delete mode 100644 src/main/helm/templates/service_account.yaml delete mode 100644 src/main/helm/templates/service_monitor.yaml delete mode 100644 src/main/helm/templates/tests/test-ingress-connection.yaml delete mode 100644 src/main/helm/templates/tests/test-service-connection.yaml delete mode 100644 src/main/helm/values.yaml rename {formsolutions-adapter/src => src}/main/java/de/ozgcloud/eingang/formsolutions/FormSolutionsAttachmentsMapper.java (100%) rename {formsolutions-adapter/src => src}/main/java/de/ozgcloud/eingang/formsolutions/FormSolutionsEingang.java (100%) rename {formsolutions-adapter/src => src}/main/java/de/ozgcloud/eingang/formsolutions/FormSolutionsFileMapperUtils.java (100%) rename {formsolutions-adapter/src => src}/main/java/de/ozgcloud/eingang/formsolutions/FormSolutionsRequestMapper.java (100%) rename {formsolutions-adapter/src => src}/main/java/de/ozgcloud/eingang/formsolutions/SemantikAdapterConfiguration.java (100%) rename {formsolutions-adapter/src => src}/main/java/de/ozgcloud/eingang/formsolutions/SendFormEndpoint.java (100%) rename {formsolutions-adapter/src => src}/main/java/de/ozgcloud/eingang/formsolutions/WebServiceConfiguration.java (100%) rename {formsolutions-adapter/src => src}/main/resources/application-local.yml (100%) rename {formsolutions-adapter/src => src}/main/resources/application.yml (100%) rename {formsolutions-adapter/src => src}/main/resources/banner.txt (100%) rename {formsolutions-adapter/src => src}/main/resources/formsolutions/formdata.xsd (100%) rename {formsolutions-adapter/src => src}/main/resources/wsdl/jsonWrap.wsdl (100%) rename {formsolutions-adapter/src => src}/main/resources/wsdl/jsonWrap.xsd (100%) delete mode 100644 src/test/helm-linter-values.yaml delete mode 100644 src/test/helm/bindings_type_test.yaml delete mode 100644 src/test/helm/deployment_63_chars_test.yaml delete mode 100644 src/test/helm/deployment_bindings_test.yaml delete mode 100644 src/test/helm/deployment_container_security_context_test.yaml delete mode 100644 src/test/helm/deployment_defaults_containers_health_test.yaml delete mode 100644 src/test/helm/deployment_defaults_labels_test.yaml delete mode 100644 src/test/helm/deployment_defaults_spec_containers_test.yaml delete mode 100644 src/test/helm/deployment_defaults_topologySpreadConstraints_test.yaml delete mode 100644 src/test/helm/deployment_env_customList_test.yaml delete mode 100644 src/test/helm/deployment_host_aliases_test.yaml delete mode 100644 src/test/helm/deployment_imagepull_secret_test.yaml delete mode 100644 src/test/helm/deployment_liveness_probe_test.yaml delete mode 100644 src/test/helm/deployment_pod_default_spec_values_test.yaml delete mode 100644 src/test/helm/deployment_resources_test.yaml delete mode 100644 src/test/helm/deployment_routing_strategy_env_test.yaml delete mode 100644 src/test/helm/deployment_routing_zufi_test.yaml delete mode 100644 src/test/helm/deployment_service_account_test.yaml delete mode 100644 src/test/helm/deployment_springProfile_env_test.yaml delete mode 100644 src/test/helm/deyploment_general_value_and_default_spec_test.yaml delete mode 100644 src/test/helm/ingress_create_or_not_test.yaml delete mode 100644 src/test/helm/ingress_nginx_test.yaml delete mode 100644 src/test/helm/ingress_test.yaml delete mode 100644 src/test/helm/network_policy_test.yaml delete mode 100644 src/test/helm/realm_name_length_test.yaml delete mode 100644 src/test/helm/service_account_test.yaml delete mode 100644 src/test/helm/service_monitor_test.yaml delete mode 100644 src/test/helm/service_test.yaml rename {formsolutions-adapter/src => src}/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsAttachmentsMapperTest.java (100%) rename {formsolutions-adapter/src => src}/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsEingangTestFactory.java (100%) rename {formsolutions-adapter/src => src}/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsFileMapperUtilsTest.java (100%) rename {formsolutions-adapter/src => src}/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsFilesTestFactory.java (51%) rename {formsolutions-adapter/src => src}/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsRequestMapperITCase.java (100%) rename {formsolutions-adapter/src => src}/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsRequestMapperTest.java (100%) rename {formsolutions-adapter/src => src}/test/java/de/ozgcloud/eingang/formsolutions/FormsolutionsAdapterApplicationTest.java (100%) rename {formsolutions-adapter/src => src}/test/java/de/ozgcloud/eingang/formsolutions/FormsolutionsITCase.java (100%) rename {formsolutions-adapter/src => src}/test/java/de/ozgcloud/eingang/formsolutions/SendFormEndpointITCase.java (100%) rename {formsolutions-adapter/src => src}/test/java/de/ozgcloud/eingang/formsolutions/SendFormEndpointTest.java (100%) rename {common/src => src}/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension (100%) rename {formsolutions-adapter/src => src}/test/resources/SimpleJsonWithAttachments.json (100%) rename {formsolutions-adapter/src => src}/test/resources/application-itcase.yml (100%) rename {formsolutions-adapter/src => src}/test/resources/application.yml (100%) rename {formsolutions-adapter/src => src}/test/resources/formular/RequestJsonContent.json (100%) rename {common/src => src}/test/resources/junit-platform.properties (100%) delete mode 100644 xta-adapter/doc/example-response-getmessages-items-pending.xml delete mode 100644 xta-adapter/doc/example-response-getmessages-no-messages-available.xml delete mode 100644 xta-adapter/pom.xml delete mode 100644 xta-adapter/readme.md delete mode 100755 xta-adapter/run_helm_test.sh delete mode 100644 xta-adapter/src/main/helm/Chart.yaml delete mode 100644 xta-adapter/src/main/helm/README.md delete mode 100644 xta-adapter/src/main/helm/app-readme.md delete mode 100644 xta-adapter/src/main/helm/templates/_helpers.tpl delete mode 100644 xta-adapter/src/main/helm/templates/network_policy.yaml delete mode 100644 xta-adapter/src/main/helm/templates/service_account.yaml delete mode 100644 xta-adapter/src/main/helm/templates/xta_adapter_cronjob.yaml delete mode 100644 xta-adapter/src/main/helm/templates/xta_bindings_type_configmap.yaml delete mode 100644 xta-adapter/src/main/helm/templates/xta_keystore_secret.yaml delete mode 100644 xta-adapter/src/main/helm/templates/xta_root_ca_secret.yaml delete mode 100644 xta-adapter/src/main/helm/values.yaml delete mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xdomea/XMLHelper.java delete mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xdomea/XdomeaMessageData.java delete mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xdomea/XdomeaMessageDataMapper.java delete mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xdomea/XdomeaXMLValueReader.java delete mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xta/MsgStatusListTypeAndHeaderResponse.java delete mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xta/RepresentationsAttachmentsPair.java delete mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xta/WsHeaderAddingInterceptor.java delete mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaCurrentIdentifierService.java delete mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaFile.java delete mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaIncomingFilesMapper.java delete mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMapperHelper.java delete mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessage.java delete mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageId.java delete mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMapper.java delete mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMetaData.java delete mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMetaDataMapper.java delete mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMetaDatasAndHeader.java delete mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMetadataRemoteIterator.java delete mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaProperties.java delete mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaRemoteService.java delete mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaRemoteServiceConfiguration.java delete mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaRunner.java delete mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaService.java delete mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xta/zip/LimitedInputStream.java delete mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xta/zip/ReadableZipEntry.java delete mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xta/zip/ZipFileExtractor.java delete mode 100644 xta-adapter/src/main/resources/XTA.wsdl delete mode 100644 xta-adapter/src/main/resources/application-local.yml delete mode 100644 xta-adapter/src/main/resources/application.yml delete mode 100644 xta-adapter/src/main/wsdl/XTA-synchron.wsdl delete mode 100644 xta-adapter/src/main/xsd/OSCI2_02.xsd delete mode 100644 xta-adapter/src/main/xsd/OSCI_MessageMetaData_V2.02.xsd delete mode 100644 xta-adapter/src/main/xsd/XTA-Webservice-Datentypen.xsd delete mode 100644 xta-adapter/src/main/xsd/XTA-Webservice-Exceptions.xsd delete mode 100644 xta-adapter/src/main/xsd/XTA-Webservice-Globale-Elemente.xsd delete mode 100644 xta-adapter/src/main/xsd/oasis-200401-wss-wssecurity-secext-1.0.xsd delete mode 100644 xta-adapter/src/main/xsd/oasis-200401-wss-wssecurity-utility-1.0.xsd delete mode 100644 xta-adapter/src/main/xsd/soap-envelope.xsd delete mode 100644 xta-adapter/src/main/xsd/ws-addr-wsdl.xsd delete mode 100644 xta-adapter/src/main/xsd/ws-addr.xsd delete mode 100644 xta-adapter/src/main/xsd/ws-policy.xsd delete mode 100644 xta-adapter/src/main/xsd/xenc-schema.xsd delete mode 100644 xta-adapter/src/main/xsd/xml.xsd delete mode 100644 xta-adapter/src/main/xsd/xmldsig-core-schema.xsd delete mode 100644 xta-adapter/src/main/xsd/xmlmime.xsd delete mode 100644 xta-adapter/src/main/xsd/xoev-basisdatentypen.xsd delete mode 100644 xta-adapter/src/main/xsd/xoev1_0-basisdatentypen.xsd delete mode 100644 xta-adapter/src/test/helm-linter-values.yaml delete mode 100644 xta-adapter/src/test/helm/network_policy_test.yaml delete mode 100644 xta-adapter/src/test/helm/service_account_test.yaml delete mode 100644 xta-adapter/src/test/helm/xta_adapter_63_chars_test.yaml delete mode 100644 xta-adapter/src/test/helm/xta_adapter_cronjob_basic_test.yaml delete mode 100644 xta-adapter/src/test/helm/xta_adapter_cronjob_bindings_test.yaml delete mode 100644 xta-adapter/src/test/helm/xta_adapter_cronjob_dummy_probes_test.yaml delete mode 100644 xta-adapter/src/test/helm/xta_adapter_cronjob_env_test.yaml delete mode 100644 xta-adapter/src/test/helm/xta_adapter_cronjob_image_pull_test.yaml delete mode 100644 xta-adapter/src/test/helm/xta_adapter_cronjob_resources_test.yaml delete mode 100644 xta-adapter/src/test/helm/xta_adapter_cronjob_routing_zufi_test.yaml delete mode 100644 xta-adapter/src/test/helm/xta_adapter_cronjob_service_account_test.yaml delete mode 100644 xta-adapter/src/test/helm/xta_adapter_cronjob_volumes_test.yaml delete mode 100644 xta-adapter/src/test/helm/xta_bindings_type_test.yaml delete mode 100644 xta-adapter/src/test/helm/xta_keystore_secret_test.yaml delete mode 100644 xta-adapter/src/test/helm/xta_root_ca_secret_test.yaml delete mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xdomea/XdomeaMessageDataMapperTest.java delete mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xdomea/XdomeaMessageDataTestFactory.java delete mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xdomea/XdomeaXMLValueReaderTest.java delete mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/FormDataTestFactory.java delete mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/FormHeaderTestFactory.java delete mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/MessageMetaDataTestFactory.java delete mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/MsgStatusListTypeAndHeaderResponseTestFactory.java delete mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/MsgStatusListTypeTestFactory.java delete mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/RepresentationsAttachmentsPairTestFactory.java delete mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaApplicationTest.java delete mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaCurrentIdentifierServiceTest.java delete mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaFileTestFactory.java delete mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaITCase.java delete mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaIncomingFilesMapperTest.java delete mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMapperTest.java delete mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetaDataMapperTest.java delete mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetaDataTestFactory.java delete mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetaDatasAndHeaderTestFactory.java delete mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetadataRemoteIteratorTest.java delete mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageTestFactory.java delete mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaPropertiesTestFactory.java delete mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRemoteServiceConfigurationTest.java delete mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRemoteServiceFunctionalCase.java delete mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRemoteServiceTest.java delete mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaResponseTestFactory.java delete mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRunnerTest.java delete mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaServiceTest.java delete mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/zip/LimitedInputStreamTest.java delete mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/zip/ReadableZipEntryTest.java delete mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/zip/TestZipFileFactory.java delete mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/zip/ZipFileExtractorTest.java delete mode 100644 xta-adapter/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension delete mode 100644 xta-adapter/src/test/resources/application-itcase.yml delete mode 100644 xta-adapter/src/test/resources/junit-platform.properties delete mode 100644 xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/brauchtumsfeuer_with_anlage/2ef19b50-2d00-4cb0-8318-e3422ab27b86_PDF-Antrag.pdf delete mode 100644 xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/brauchtumsfeuer_with_anlage/4bb895cc-7b60-4322-81fa-cf928d1a22e5_00TESTPDF.pdf delete mode 100644 xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/brauchtumsfeuer_with_anlage/60b6753a-23a8-4552-ae82-36ed96f63e03_Geschaeftsgang.Geschaeftsgang.0201.xml delete mode 100644 xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/brauchtumsfeuer_with_anlage/73927734-c97b-4823-bad1-60401b112a9f_XML-Daten.xml delete mode 100644 xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/brauchtumsfeuer_without_anlage/0cec5d74-5ac3-4ff3-9a6f-69007ff3f27e_Geschaeftsgang.Geschaeftsgang.0201.xml delete mode 100644 xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/brauchtumsfeuer_without_anlage/3a41cc59-baf4-424d-8c69-a8e7f7470d68_PDF-Antrag.pdf delete mode 100644 xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/brauchtumsfeuer_without_anlage/758ae7f9-9984-43ba-8dda-b81aa3d92f95_XML-Daten.xml delete mode 100644 xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/dfoerdermittel_with_anlage/06d36643-2883-4b74-9231-8dc7f2693af2_Zusammenfassung-01f903b0-c61e-429d-807f-5011d180c073.pdf delete mode 100644 xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/dfoerdermittel_with_anlage/1d8ca22a-9d20-4507-aa5e-b764bb5642f0_Admin.png delete mode 100644 xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/dfoerdermittel_with_anlage/3ecc7e49-5dc2-499a-9be8-ce8b9d8c8714_Fachnachricht.xml delete mode 100644 xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/dfoerdermittel_with_anlage/b29d45cc-9aac-4452-ad08-60f5ab3bab95_Geschaeftsgang.Geschaeftsgang.0201.xml delete mode 100644 xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/dfoerdermittel_without_anlage/269562a3-9142-45b8-9bd2-db840b8322bf_Fachnachricht.xml delete mode 100644 xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/dfoerdermittel_without_anlage/c2170d27-7a58-4d94-afdf-62c89b9e1557_Zusammenfassung.pdf delete mode 100644 xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/dfoerdermittel_without_anlage/d5be7468-e620-4126-a40e-61a7f9b46345_Geschaeftsgang.Geschaeftsgang.0201.xml delete mode 100644 xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/mantelantrag_with_anlage/03d5bd15-2c1a-4c50-809c-0efcb21f610f_Antrag_Max_Mustermann_SGBIX.pdf delete mode 100644 xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/mantelantrag_with_anlage/1d8ca22a-9d20-4507-aa5e-b764bb5642f0_Admin.png delete mode 100644 xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/mantelantrag_with_anlage/6082c5f7-61ab-4746-a482-0a400cc0301a_Antrag_Max_Mustermann_SGBIX.xml delete mode 100644 xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/mantelantrag_with_anlage/9f1b47d4-d6bf-4ec4-b0ff-1e30bee42ef2_Geschaeftsgang.Geschaeftsgang.0201.xml delete mode 100644 xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/mantelantrag_without_anlage/03d5bd15-2c1a-4c50-809c-0efcb21f610f_Antrag_Max_Mustermann_SGBIX.pdf delete mode 100644 xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/mantelantrag_without_anlage/6082c5f7-61ab-4746-a482-0a400cc0301a_Antrag_Max_Mustermann_SGBIX.xml delete mode 100644 xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/mantelantrag_without_anlage/9f1b47d4-d6bf-4ec4-b0ff-1e30bee42ef2_Geschaeftsgang.Geschaeftsgang.0201.xml delete mode 100644 xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/waffenschein/8248e115-4aec-4253-bb2c-9788823ff9b1_XML-Daten.xml delete mode 100644 xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/waffenschein/d254806f-abf4-4e4c-ae74-ea03460f34d2_Geschaeftsgang.Geschaeftsgang.0201.xml delete mode 100644 xta-adapter/src/test/resources/mock-responses/getMessage/fim.S17000652.17000652001004/versammlungsanzeige.xml delete mode 100644 xta-adapter/src/test/resources/xdomea/dfoerdermittel_Geschaeftsgang.Geschaeftsgang.0201.xml delete mode 100644 xta-adapter/src/test/resources/xdomea/mantelantrag_Geschaeftsgang.Geschaeftsgang.0201.xml delete mode 100644 xta-adapter/src/test/resources/xtaTestStore.p12 diff --git a/.helmignore b/.helmignore deleted file mode 100644 index f7ccba73..00000000 --- a/.helmignore +++ /dev/null @@ -1 +0,0 @@ -unit-tests/ \ No newline at end of file diff --git a/.mvn/wrapper/MavenWrapperDownloader.java b/.mvn/wrapper/MavenWrapperDownloader.java deleted file mode 100644 index e76d1f32..00000000 --- a/.mvn/wrapper/MavenWrapperDownloader.java +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Copyright 2007-present the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import java.net.*; -import java.io.*; -import java.nio.channels.*; -import java.util.Properties; - -public class MavenWrapperDownloader { - - private static final String WRAPPER_VERSION = "0.5.6"; - /** - * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided. - */ - private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/" - + WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar"; - - /** - * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to - * use instead of the default one. - */ - private static final String MAVEN_WRAPPER_PROPERTIES_PATH = - ".mvn/wrapper/maven-wrapper.properties"; - - /** - * Path where the maven-wrapper.jar will be saved to. - */ - private static final String MAVEN_WRAPPER_JAR_PATH = - ".mvn/wrapper/maven-wrapper.jar"; - - /** - * Name of the property which should be used to override the default download url for the wrapper. - */ - private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl"; - - public static void main(String args[]) { - System.out.println("- Downloader started"); - File baseDirectory = new File(args[0]); - System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath()); - - // If the maven-wrapper.properties exists, read it and check if it contains a custom - // wrapperUrl parameter. - File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH); - String url = DEFAULT_DOWNLOAD_URL; - if(mavenWrapperPropertyFile.exists()) { - FileInputStream mavenWrapperPropertyFileInputStream = null; - try { - mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile); - Properties mavenWrapperProperties = new Properties(); - mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream); - url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url); - } catch (IOException e) { - System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'"); - } finally { - try { - if(mavenWrapperPropertyFileInputStream != null) { - mavenWrapperPropertyFileInputStream.close(); - } - } catch (IOException e) { - // Ignore ... - } - } - } - System.out.println("- Downloading from: " + url); - - File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH); - if(!outputFile.getParentFile().exists()) { - if(!outputFile.getParentFile().mkdirs()) { - System.out.println( - "- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'"); - } - } - System.out.println("- Downloading to: " + outputFile.getAbsolutePath()); - try { - downloadFileFromURL(url, outputFile); - System.out.println("Done"); - System.exit(0); - } catch (Throwable e) { - System.out.println("- Error downloading"); - e.printStackTrace(); - System.exit(1); - } - } - - private static void downloadFileFromURL(String urlString, File destination) throws Exception { - if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) { - String username = System.getenv("MVNW_USERNAME"); - char[] password = System.getenv("MVNW_PASSWORD").toCharArray(); - Authenticator.setDefault(new Authenticator() { - @Override - protected PasswordAuthentication getPasswordAuthentication() { - return new PasswordAuthentication(username, password); - } - }); - } - URL website = new URL(urlString); - ReadableByteChannel rbc; - rbc = Channels.newChannel(website.openStream()); - FileOutputStream fos = new FileOutputStream(destination); - fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE); - fos.close(); - rbc.close(); - } - -} diff --git a/.mvn/wrapper/maven-wrapper.jar b/.mvn/wrapper/maven-wrapper.jar deleted file mode 100644 index 2cc7d4a55c0cd0092912bf49ae38b3a9e3fd0054..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50710 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 diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties deleted file mode 100644 index 642d572c..00000000 --- a/.mvn/wrapper/maven-wrapper.properties +++ /dev/null @@ -1,2 +0,0 @@ -distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.3/apache-maven-3.6.3-bin.zip -wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar diff --git a/Jenkinsfile b/Jenkinsfile deleted file mode 100644 index 6956b9f9..00000000 --- a/Jenkinsfile +++ /dev/null @@ -1,472 +0,0 @@ -pipeline { - agent { - node { - label 'ozgcloud-jenkins-build-agent-jdk21' - } - } - - environment { - BLUE_OCEAN_URL = "https://jenkins.infra.ozg-cloud.systems/job/intelliform-adapter/job/${env.BRANCH_NAME}/${env.BUILD_NUMBER}/" - RELEASE_REGEX = /\d+.\d+.\d+/ - SNAPSHOT_REGEX = /\d+.\d+.\d+-SNAPSHOT/ - FAILED_STAGE = "" - SH_SUCCESS_STATUS_CODE = 0 - } - - options { - timeout(time: 1, unit: 'HOURS') - disableConcurrentBuilds() - buildDiscarder(logRotator(numToKeepStr: '5')) - } - - stages { - stage('Check Version') { - steps { - script { - FAILED_STAGE = env.STAGE_NAME - def rootPom = readMavenPom file: 'pom.xml' - def rootVersion = rootPom.version - def vorgangManagerVersion = rootPom.properties['vorgang-manager.version'] - - def commonVersion = getParentPomVersion('common/pom.xml') - def routerVersion = getParentPomVersion('router/pom.xml') - def ifAdapterVersion = getParentPomVersion('intelliform-adapter/pom.xml') - def fsAdapterVersion = getParentPomVersion('formsolutions-adapter/pom.xml') - def formCycleAdapterVersion = getParentPomVersion('formcycle-adapter/pom.xml') - def xtaAdapterVersion = getParentPomVersion('xta-adapter/pom.xml') - def enterpriseAdapterVersion = getParentPomVersion('enterprise-adapter/pom.xml') - - if(env.BRANCH_NAME == 'release'){ - if ( !isReleaseVersion([rootVersion, vorgangManagerVersion, commonVersion, routerVersion, ifAdapterVersion, fsAdapterVersion, formCycleAdapterVersion, xtaAdapterVersion, enterpriseAdapterVersion])) { - error("Keine Release Version für Branch ${env.BRANCH_NAME}.") - } - } else { - if ( !isSnapshotVersion([rootVersion, commonVersion, routerVersion, ifAdapterVersion, fsAdapterVersion, formCycleAdapterVersion, xtaAdapterVersion, enterpriseAdapterVersion])) { - error("Keine Snapshot Version für Branch ${env.BRANCH_NAME}.") - } - } - - if ( !isSameVersion([commonVersion, routerVersion, ifAdapterVersion, fsAdapterVersion, formCycleAdapterVersion, xtaAdapterVersion, enterpriseAdapterVersion], rootVersion)) { - error("Versionen sind nicht identisch") - } - } - } - } - stage('Set Version') { - when { - not { - anyOf { - branch 'master' - branch 'release' - } - } - } - steps { - script { - FAILED_STAGE=env.STAGE_NAME - JAR_TAG = getPomVersion('pom.xml').replace("SNAPSHOT", "${env.BRANCH_NAME}-SNAPSHOT") - } - configFileProvider([configFile(fileId: 'maven-settings', variable: 'MAVEN_SETTINGS')]) { - sh "mvn -s $MAVEN_SETTINGS versions:set -DnewVersion=${JAR_TAG} -DprocessAllModules=true" - - } - } - } - stage('Build Eingang-Adapter') { - steps { - script { - FAILED_STAGE=env.STAGE_NAME - } - configFileProvider([configFile(fileId: 'maven-settings', variable: 'MAVEN_SETTINGS')]) { - sh 'mvn --version' - sh 'mvn -s $MAVEN_SETTINGS -P ci-build clean install -Dmaven.wagon.http.retryHandler.count=3' - - script { - try { - if (env.BRANCH_NAME == 'master') { - withSonarQubeEnv('sonarqube-ozg-sh'){ - sh 'mvn -s $MAVEN_SETTINGS sonar:sonar' - } - } - } catch (Exception e) { - unstable("SonarQube failed") - } - } - } - } - post { - always{ - junit testResults: '**/target/surefire-reports/*.xml', skipPublishingChecks: true - } - } - } - - stage('Deploy Eingang-Adapter to Nexus'){ - steps { - script { - FAILED_STAGE = env.STAGE_NAME - } - configFileProvider([configFile(fileId: 'maven-settings', variable: 'MAVEN_SETTINGS')]) { - sh 'mvn -s $MAVEN_SETTINGS -DskipTests deploy' - sh "mvn -s $MAVEN_SETTINGS versions:revert" - } - } - } - - stage('Tag and Push Docker image') { - steps { - script { - FAILED_STAGE=env.STAGE_NAME - IMAGE_TAG = generateImageTag() - - tagAndPushDockerImage('intelliform-adapter', IMAGE_TAG) - tagAndPushDockerImage('formsolutions-adapter', IMAGE_TAG) - tagAndPushDockerImage('formcycle-adapter', IMAGE_TAG) - tagAndPushDockerImage('xta-adapter', IMAGE_TAG) - tagAndPushDockerImage('enterprise-adapter', IMAGE_TAG) - - if (env.BRANCH_NAME == 'master') { - tagAndPushDockerImage('intelliform-adapter', 'snapshot-latest') - tagAndPushDockerImage('formsolutions-adapter', 'snapshot-latest') - tagAndPushDockerImage('formcycle-adapter', 'snapshot-latest') - tagAndPushDockerImage('xta-adapter', 'snapshot-latest') - tagAndPushDockerImage('enterprise-adapter', 'snapshot-latest') - } - else if (env.BRANCH_NAME == 'release') { - tagAndPushDockerImage('intelliform-adapter', 'latest') - tagAndPushDockerImage('formsolutions-adapter', 'latest') - tagAndPushDockerImage('formcycle-adapter', 'latest') - tagAndPushDockerImage('xta-adapter', 'latest') - tagAndPushDockerImage('enterprise-adapter', 'latest') - } - } - } - } - - stage('Test, build and deploy Intelliform-Adapter Helm Chart') { - steps { - script { - FAILED_STAGE=env.STAGE_NAME - HELM_CHART_VERSION = generateHelmChartVersion() - - sh "./run_helm_test.sh" - - dir('src/main/helm') { - sh "helm package --version=${HELM_CHART_VERSION} ." - - deployHelmChart("Intelliform-Adapter", HELM_CHART_VERSION) - } - } - } - } - - stage('Test, build and deploy Xta-Adapter Helm Chart') { - steps { - script { - FAILED_STAGE=env.STAGE_NAME - HELM_CHART_VERSION = generateHelmChartVersion() - - dir('xta-adapter') { - sh "./run_helm_test.sh" - } - - dir('xta-adapter/src/main/helm') { - sh "helm package --version=${HELM_CHART_VERSION} ." - - deployHelmChart("xta-adapter", HELM_CHART_VERSION) - } - } - } - } - - stage('Trigger Dev rollout') { - when { - branch 'master' - } - steps { - script { - FAILED_STAGE = env.STAGE_NAME - - cloneGitopsRepo() - - setNewDevAdapterVersion() - - pushNewDevVersion() - } - } - } - stage('Trigger Test rollout') { - when { - branch 'release' - } - - steps { - script { - FAILED_STAGE = env.STAGE_NAME - - cloneGitopsRepo() - - setNewTestAdapterVersion() - - pushNewTestVersion() - } - } - } - - stage ('Deploy SBOM to DependencyTrack') { - steps { - script { - IMAGE_TAG = generateImageTag() - - configFileProvider([configFile(fileId: 'maven-settings', variable: 'MAVEN_SETTINGS')]) { - withCredentials([string(credentialsId: 'dependency-track-api-key', variable: 'API_KEY')]) { - - catchError(buildResult: 'UNSTABLE', stageResult: 'FAILURE') { - sh "mvn --no-transfer-progress -s $MAVEN_SETTINGS io.github.pmckeown:dependency-track-maven-plugin:upload-bom -Ddependency-track.apiKey=$API_KEY -Ddependency-track.projectVersion=${IMAGE_TAG} -Ddependency-track.dependencyTrackBaseUrl=https://dependency-track.ozg-sh.de" - } - } - } - } - } - } - - } - post { - failure { - script { - if (env.BRANCH_NAME == 'master' || env.BRANCH_NAME == 'release') { - sendFailureMessage() - } - } - } - } -} - -Void deployHelmChart(String helmChartName, String helmChartVersion) { - withCredentials([usernamePassword(credentialsId: 'jenkins-nexus-login', usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD')]){ - if (env.BRANCH_NAME == 'release') { - result = sh script: '''curl -u $USERNAME:$PASSWORD https://nexus.ozg-sh.de/service/rest/v1/components?repository=ozg-base-apps -F file=@'''+helmChartName+'''-'''+helmChartVersion+'''.tgz''', returnStdout: true - } - else { - result = sh script: '''curl -u $USERNAME:$PASSWORD https://nexus.ozg-sh.de/service/rest/v1/components?repository=ozg-base-apps-snapshot -F file=@'''+helmChartName+'''-'''+helmChartVersion+'''.tgz''', returnStdout: true - } - - if (result != '') { - error(result) - } - } -} - -String generateHelmChartVersion() { - def chartVersion = getPomVersion('pom.xml') - - if (env.BRANCH_NAME == 'master') { - chartVersion += "-${env.GIT_COMMIT.take(7)}" - } - else if (env.BRANCH_NAME != 'release') { - chartVersion += "-${env.BRANCH_NAME}" - } - - return chartVersion.replaceAll("_", "-") -} - -Void sendFailureMessage() { - def room = '' - def data = """{"msgtype":"m.text", \ - "body":"Eingang-Manager: Build Failed. Stage: ${FAILED_STAGE} Build-ID: ${env.BUILD_NUMBER} Link: ${BLUE_OCEAN_URL}", \ - "format": "org.matrix.custom.html", \ - "formatted_body":"Eingang-Manager: Build Failed. Stage: ${FAILED_STAGE} Build-ID: <a href='${BLUE_OCEAN_URL}'>${env.BUILD_NUMBER}</a>"}""" - - if (env.BRANCH_NAME == 'master') { - room = "!GjqhmouBtnDbwUkAjx:matrix.ozg-sh.de" - } - else if (env.BRANCH_NAME == 'release') { - room = "!oWZpUGTFsxkJIYNfYg:matrix.ozg-sh.de" - } - - sh "curl -XPOST -H 'authorization: Bearer ${getElementAccessToken()}' -d '${data}' https://matrix.ozg-sh.de/_matrix/client/v3/rooms/$room/send/m.room.message" -} - -String getElementAccessToken() { - withCredentials([string(credentialsId: 'element-login-json', variable: 'LOGIN_JSON')]) { - return readJSON ( text: sh (script: '''curl -XPOST -d \"$LOGIN_JSON\" https://matrix.ozg-sh.de/_matrix/client/v3/login''', returnStdout: true)).access_token - } -} - -Void setNewDevAdapterVersion() { - setNewAfmAdapterVersion('dev') - setNewFsAdapterVersion('dev') - setNewFormcycleAdapterVersion('dev') - setNewXtaAdapterVersion('dev') - setNewEnterpriseAdapterVersion('dev') -} - -Void setNewTestAdapterVersion() { - setNewAfmAdapterVersion('test') - setNewFsAdapterVersion('test') - setNewFormcycleAdapterVersion('test') - setNewEnterpriseAdapterVersion('test') -} - -Void setNewAfmAdapterVersion(String environment) { - dir("gitops") { - def envFile = "${environment}/application/values/afm-adapter-values.yaml" - def envVersions = readYaml file: envFile - - envVersions.afm_adapter.image.tag = IMAGE_TAG - envVersions.afm_adapter.helm.version = HELM_CHART_VERSION - - writeYaml file: envFile, data: envVersions, overwrite: true - } -} - -Void setNewFsAdapterVersion(String environment) { - dir("gitops") { - def envFile = "${environment}/application/values/fs-adapter-values.yaml" - def envVersions = readYaml file: envFile - - envVersions.fs_adapter.image.tag = IMAGE_TAG - envVersions.fs_adapter.helm.version = HELM_CHART_VERSION - - writeYaml file: envFile, data: envVersions, overwrite: true - } -} - -Void setNewFormcycleAdapterVersion(String environment) { - dir("gitops") { - def envFile = "${environment}/application/values/formcycle-adapter-values.yaml" - def envVersions = readYaml file: envFile - - envVersions.formcycle_adapter.image.tag = IMAGE_TAG - envVersions.formcycle_adapter.helm.version = HELM_CHART_VERSION - - writeYaml file: envFile, data: envVersions, overwrite: true - } -} - -Void setNewXtaAdapterVersion(String environment) { - dir("gitops") { - def envFile = "${environment}/application/values/xta-adapter-values.yaml" - def envVersions = readYaml file: envFile - - envVersions.xta_adapter.image.tag = IMAGE_TAG - envVersions.xta_adapter.helm.version = HELM_CHART_VERSION - - writeYaml file: envFile, data: envVersions, overwrite: true - } -} - -Void setNewEnterpriseAdapterVersion(String environment) { - dir("gitops") { - def envFile = "${environment}/application/values/enterprise-adapter-values.yaml" - def envVersions = readYaml file: envFile - - envVersions.enterprise_adapter.image.tag = IMAGE_TAG - envVersions.enterprise_adapter.helm.version = HELM_CHART_VERSION - - writeYaml file: envFile, data: envVersions, overwrite: true - } -} - -Void pushNewDevVersion() { - pushNewGitopsVersion('dev') -} - -Void pushNewTestVersion() { - pushNewGitopsVersion('test') -} - -Void pushNewGitopsVersion(String environment) { - dir('gitops') { - if (!hasAdapterValuesFileChanged(environment)) { - return - } - - withCredentials([usernamePassword(credentialsId: 'jenkins-gitea-access-token', passwordVariable: 'TOKEN', usernameVariable: 'USER')]) { - sh "git add ${environment}/application/values/*-adapter-values.yaml" - - sh "git commit -m 'jenkins rollout ${environment} afm-adapter fs-adapter version ${IMAGE_TAG}'" - sh 'git push https://${USER}:${TOKEN}@git.ozg-sh.de/ozgcloud-devops/gitops.git' - } - } -} - -Boolean hasAdapterValuesFileChanged(String environment) { - return sh (script: "git status | grep '${environment}/application/values/.*-adapter-values.yaml'", returnStatus: true) == env.SH_SUCCESS_STATUS_CODE as Integer -} - -Void configureGit() { - final email = "jenkins@ozg-sh.de" - final name = "jenkins" - - dir("gitops") { - sh "git config user.email '${email}'" - sh "git config user.name '${name}'" - } -} - -Void cloneGitopsRepo() { - withCredentials([usernamePassword(credentialsId: 'jenkins-gitea-access-token', passwordVariable: 'TOKEN', usernameVariable: 'USER')]) { - sh 'git clone https://${USER}:${TOKEN}@git.ozg-sh.de/ozgcloud-devops/gitops.git' - } - - configureGit() -} - -Void tagAndPushDockerImage(String imageName, String newTag){ - withCredentials([usernamePassword(credentialsId: 'jenkins-nexus-login', usernameVariable: 'USER', passwordVariable: 'PASSWORD')]) { - sh 'docker login docker.ozg-sh.de -u ${USER} -p ${PASSWORD}' - - sh "docker tag docker.ozg-sh.de/${imageName}:build-latest docker.ozg-sh.de/${imageName}:${newTag}" - sh "docker push docker.ozg-sh.de/${imageName}:${newTag}" - } -} - -String getPomVersion(String pomFile){ - def pom = readMavenPom file: pomFile - - return pom.version -} - -String generateImageTag() { - def imageTag = "${env.BRANCH_NAME}-${getPomVersion('pom.xml')}" - - if (env.BRANCH_NAME == 'master') { - imageTag += "-${env.GIT_COMMIT.take(7)}" - } - - return imageTag -} - -String getParentPomVersion(String filePath) { - def pom = readMavenPom file: filePath - return pom.parent.version -} - -Boolean isReleaseVersion(List versions) { - return matchRegexVersion(versions, RELEASE_REGEX) -} - -Boolean isSnapshotVersion(List versions) { - return matchRegexVersion(versions, SNAPSHOT_REGEX) -} - -Boolean matchRegexVersion(List versions, String regex) { - for (version in versions) { - if ( !(version ==~ regex) ) { - return false - } - } - - return true -} - -Boolean isSameVersion(List versions, String expectedVersion) { - for (version in versions) { - if ( version != expectedVersion ) { - return false - } - } - - return true -} diff --git a/common/pom.xml b/common/pom.xml deleted file mode 100644 index 5c0eb988..00000000 --- a/common/pom.xml +++ /dev/null @@ -1,89 +0,0 @@ -<?xml version="1.0"?> -<!-- - - Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - Ministerpräsidenten des Landes Schleswig-Holstein - Staatskanzlei - Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - - Lizenziert unter der EUPL, Version 1.2 oder - sobald - diese von der Europäischen Kommission genehmigt wurden - - Folgeversionen der EUPL ("Lizenz"); - Sie dürfen dieses Werk ausschließlich gemäß - dieser Lizenz nutzen. - Eine Kopie der Lizenz finden Sie hier: - - https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - - Sofern nicht durch anwendbare Rechtsvorschriften - gefordert oder in schriftlicher Form vereinbart, wird - die unter der Lizenz verbreitete Software "so wie sie - ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - ausdrücklich oder stillschweigend - verbreitet. - Die sprachspezifischen Genehmigungen und Beschränkungen - unter der Lizenz sind dem Lizenztext zu entnehmen. - ---> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> - - <modelVersion>4.0.0</modelVersion> - - <parent> - <groupId>de.ozgcloud.eingang</groupId> - <artifactId>eingang-manager</artifactId> - <version>2.16.0-SNAPSHOT</version> - <relativePath>../</relativePath> - </parent> - <artifactId>common</artifactId> - <name>Eingangs Adapter - Common</name> - - <dependencies> - <!-- spring --> - <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-web</artifactId> - </dependency> - <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-validation</artifactId> - </dependency> - - <!-- Dev --> - <dependency> - <groupId>org.projectlombok</groupId> - <artifactId>lombok</artifactId> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-jar-plugin</artifactId> - <executions> - <execution> - <goals> - <goal>test-jar</goal> - </goals> - </execution> - </executions> - </plugin> - - <plugin> - <groupId>org.jacoco</groupId> - <artifactId>jacoco-maven-plugin</artifactId> - </plugin> - - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-surefire-plugin</artifactId> - </plugin> - - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-failsafe-plugin</artifactId> - </plugin> - </plugins> - </build> - -</project> diff --git a/common/src/main/java/de/ozgcloud/eingang/Application.java b/common/src/main/java/de/ozgcloud/eingang/Application.java deleted file mode 100644 index b4ea3d5e..00000000 --- a/common/src/main/java/de/ozgcloud/eingang/Application.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang; - -import java.util.TimeZone; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.scheduling.annotation.EnableScheduling; - -@SpringBootApplication(scanBasePackages = { "de.ozgcloud" }) -@EnableScheduling -public class Application { - - public static final String ZUFI_MANAGER_GRPC_CLIENT = "zufi-manager"; - - public static void main(String[] args) { - TimeZone.setDefault(TimeZone.getTimeZone("UTC")); - SpringApplication.run(Application.class, args); - } -} diff --git a/common/src/main/java/de/ozgcloud/eingang/EingangAspectPointcuts.java b/common/src/main/java/de/ozgcloud/eingang/EingangAspectPointcuts.java deleted file mode 100644 index 5a4eafc3..00000000 --- a/common/src/main/java/de/ozgcloud/eingang/EingangAspectPointcuts.java +++ /dev/null @@ -1,26 +0,0 @@ -package de.ozgcloud.eingang; - -import org.aspectj.lang.annotation.Pointcut; - -public class EingangAspectPointcuts { - - @Pointcut("execution(public * *(..))") - void anyPublicMethods() { - // aspect pointcut - no implementation needed - } - - @Pointcut("within(de.ozgcloud..*)") - void anythingInOzgCloud() { - // aspect pointcut - no implementation needed - } - - @Pointcut("anyPublicMethods() && anythingInOzgCloud()") - void anyPublicMethodInOzgCloud() { - // aspect pointcut - no implementation needed - } - - @Pointcut("anyPublicMethodInOzgCloud() && target(de.ozgcloud.eingang.semantik.enginebased.EngineBasedMapper)") - void publicMethodInEngineBasedMapper() { - // aspect pointcut - no implementation needed - } -} diff --git a/common/src/main/java/de/ozgcloud/eingang/EingangLoggingAspect.java b/common/src/main/java/de/ozgcloud/eingang/EingangLoggingAspect.java deleted file mode 100644 index 584acf3a..00000000 --- a/common/src/main/java/de/ozgcloud/eingang/EingangLoggingAspect.java +++ /dev/null @@ -1,25 +0,0 @@ -package de.ozgcloud.eingang; - -import org.aspectj.lang.JoinPoint; -import org.aspectj.lang.annotation.AfterReturning; -import org.aspectj.lang.annotation.Aspect; -import org.aspectj.lang.annotation.Before; -import org.springframework.stereotype.Component; - -import de.ozgcloud.common.logging.AspectLoggingUtils; - -@Aspect -@Component -public class EingangLoggingAspect extends EingangAspectPointcuts { - - @Before("publicMethodInEngineBasedMapper()") - public void onEngineBasedMapper(JoinPoint joinPoint) { - AspectLoggingUtils.log(joinPoint); - } - - @AfterReturning(pointcut = "publicMethodInEngineBasedMapper()", returning = "returnValue") - public void afterServiceMethod(JoinPoint joinPoint, Object returnValue) { - AspectLoggingUtils.logReturnValue(joinPoint, returnValue); - } - -} diff --git a/common/src/main/java/de/ozgcloud/eingang/LogRunner.java b/common/src/main/java/de/ozgcloud/eingang/LogRunner.java deleted file mode 100644 index 642b7c4c..00000000 --- a/common/src/main/java/de/ozgcloud/eingang/LogRunner.java +++ /dev/null @@ -1,21 +0,0 @@ -package de.ozgcloud.eingang; - -import java.nio.charset.Charset; - -import org.springframework.context.ApplicationListener; -import org.springframework.context.event.ContextRefreshedEvent; -import org.springframework.stereotype.Component; - -import lombok.extern.log4j.Log4j2; - -@Log4j2 -@Component -class LogRunner implements ApplicationListener<ContextRefreshedEvent> { - - @Override - public void onApplicationEvent(ContextRefreshedEvent event) { - LOG.info("Standard Charset: " + Charset.defaultCharset()); - - } - -} diff --git a/common/src/main/java/de/ozgcloud/eingang/common/errorhandling/FunctionalException.java b/common/src/main/java/de/ozgcloud/eingang/common/errorhandling/FunctionalException.java deleted file mode 100644 index 23d3d1ed..00000000 --- a/common/src/main/java/de/ozgcloud/eingang/common/errorhandling/FunctionalException.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.common.errorhandling; - -public class FunctionalException extends RuntimeException { - - private static final long serialVersionUID = 1L; - - public FunctionalException(String message, Throwable cause) { - super(message, cause); - } -} diff --git a/common/src/main/java/de/ozgcloud/eingang/common/errorhandling/TechnicalException.java b/common/src/main/java/de/ozgcloud/eingang/common/errorhandling/TechnicalException.java deleted file mode 100644 index e27ecc57..00000000 --- a/common/src/main/java/de/ozgcloud/eingang/common/errorhandling/TechnicalException.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.common.errorhandling; - -public class TechnicalException extends RuntimeException { - - private static final long serialVersionUID = 1L; - - public TechnicalException(String message, Throwable cause) { - super(message, cause); - } - - public TechnicalException(String message) { - super(message); - } -} diff --git a/common/src/main/java/de/ozgcloud/eingang/common/formdata/Antragsteller.java b/common/src/main/java/de/ozgcloud/eingang/common/formdata/Antragsteller.java deleted file mode 100644 index 81826cff..00000000 --- a/common/src/main/java/de/ozgcloud/eingang/common/formdata/Antragsteller.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.common.formdata; - -import java.util.Map; - -import lombok.Builder; -import lombok.Getter; - -@Getter -@Builder -public class Antragsteller { - - private String anrede; - private String firmaName; - private String vorname; - private String nachname; - private String geburtsname; - private String geburtsdatum; - private String geburtsort; - private String email; - private String telefon; - private String strasse; - private String hausnummer; - private String plz; - private String ort; - - @Deprecated - private String postfachId; - - private Map<String, Object> data; -} diff --git a/common/src/main/java/de/ozgcloud/eingang/common/formdata/DeleteOnCloseInputStream.java b/common/src/main/java/de/ozgcloud/eingang/common/formdata/DeleteOnCloseInputStream.java deleted file mode 100644 index 2f2bd49a..00000000 --- a/common/src/main/java/de/ozgcloud/eingang/common/formdata/DeleteOnCloseInputStream.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.common.formdata; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.nio.file.Files; - -import de.ozgcloud.common.errorhandling.TechnicalException; - -public class DeleteOnCloseInputStream extends FileInputStream { - - private final File file; - - public DeleteOnCloseInputStream(File file) throws FileNotFoundException { - super(file); - this.file = file; - } - - public static DeleteOnCloseInputStream from(File file) { - try { - return new DeleteOnCloseInputStream(file); - } catch (FileNotFoundException e) { - throw new TechnicalException("Error opening file " + file.getName(), e); - } - } - - @Override - public void close() throws IOException { - super.close(); - Files.deleteIfExists(file.toPath()); - } -} diff --git a/common/src/main/java/de/ozgcloud/eingang/common/formdata/FormData.java b/common/src/main/java/de/ozgcloud/eingang/common/formdata/FormData.java deleted file mode 100644 index 26ff0c88..00000000 --- a/common/src/main/java/de/ozgcloud/eingang/common/formdata/FormData.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.common.formdata; - -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.Optional; -import java.util.UUID; - -import jakarta.validation.constraints.NotNull; - -import lombok.Builder; -import lombok.Getter; -import lombok.Singular; -import lombok.ToString; - -@Getter -@Builder(toBuilder = true) -@ToString -public class FormData { - - @NotNull - @Builder.Default - private String id = UUID.randomUUID().toString(); - - @Builder.Default - private FormHeader header = FormHeader.builder().build(); - - @Singular - private List<ZustaendigeStelle> zustaendigeStelles; - @ToString.Exclude - private Antragsteller antragsteller; - @ToString.Exclude - @Builder.Default - private Map<String, Object> formData = Collections.emptyMap(); - - private int numberOfAttachments; - @Singular - private List<IncomingFileGroup> attachments; - - private int numberOfRepresentations; - @Singular - private List<IncomingFile> representations; - - @Builder.Default - private FormDataControl control = FormDataControl.builder().build(); - - @Getter - @Builder(toBuilder = true) - @ToString - public static class FormDataControl { - @Builder.Default - private Optional<Representations> representations = Optional.empty(); - @Builder.Default - private Optional<FormMetaData> metaData = Optional.empty(); - } - - @Getter - @Builder(toBuilder = true) - public static class Representations { - private String primaryFormDataRepresentation; - private String primaryFormDataPdfRepresentation; - private String formDataModell; - } -} diff --git a/common/src/main/java/de/ozgcloud/eingang/common/formdata/FormDataUtils.java b/common/src/main/java/de/ozgcloud/eingang/common/formdata/FormDataUtils.java deleted file mode 100644 index f15aaa0e..00000000 --- a/common/src/main/java/de/ozgcloud/eingang/common/formdata/FormDataUtils.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.common.formdata; - -import java.util.Collections; -import java.util.LinkedHashMap; -import java.util.Map; - -import lombok.NonNull; - -public class FormDataUtils { - - final FormData baseFormData; - final Map<String, Object> modifieableData; - - private FormDataUtils(FormData formData) { - baseFormData = formData; - modifieableData = new LinkedHashMap<>(formData.getFormData()); - } - - public static FormDataUtils from(FormData formData) { - return new FormDataUtils(formData); - } - - public FormDataUtils remove(String key) { - modifieableData.remove(key); - return this; - } - - public FormDataUtils put(@NonNull String key, Object value) { - modifieableData.put(key, value); - return this; - } - - public FormData.FormDataBuilder builder() { - return baseFormData.toBuilder().formData(Collections.unmodifiableMap(modifieableData)); - } - - public FormData build() { - return builder().build(); - } - - @SuppressWarnings("unchecked") - public static Map<String, Object> getSubMap(FormData formData, String key) { - return (Map<String, Object>) formData.getFormData().getOrDefault(key, Map.of()); - } -} diff --git a/common/src/main/java/de/ozgcloud/eingang/common/formdata/FormHeader.java b/common/src/main/java/de/ozgcloud/eingang/common/formdata/FormHeader.java deleted file mode 100644 index 868b83b0..00000000 --- a/common/src/main/java/de/ozgcloud/eingang/common/formdata/FormHeader.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.common.formdata; - -import java.time.ZonedDateTime; - -import lombok.Builder; -import lombok.Getter; -import lombok.Setter; -import lombok.ToString; - -@Getter -@Setter -@Builder(toBuilder = true) -@ToString -public class FormHeader { - - private String requestId; - private String vorgangNummer; - @Builder.Default - private ZonedDateTime createdAt = ZonedDateTime.now(); - private String formId; - private String formName; - private String sender; - - private String channel; - private String formEngineName; - - private ServiceKonto serviceKonto; -} diff --git a/common/src/main/java/de/ozgcloud/eingang/common/formdata/FormMetaData.java b/common/src/main/java/de/ozgcloud/eingang/common/formdata/FormMetaData.java deleted file mode 100644 index c84b8b63..00000000 --- a/common/src/main/java/de/ozgcloud/eingang/common/formdata/FormMetaData.java +++ /dev/null @@ -1,19 +0,0 @@ -package de.ozgcloud.eingang.common.formdata; - -import java.time.ZonedDateTime; - -public interface FormMetaData { - - ZonedDateTime getOrigin(); - ZonedDateTime getDelivery(); - - /** - * Returns the value of the Entry, or null if this MetaData contains no Entry - * for the name. - * - * @param name Name of the requested Entry - * @return Value of the Entry - */ - String getEntry(String name); - -} diff --git a/common/src/main/java/de/ozgcloud/eingang/common/formdata/IncomingFile.java b/common/src/main/java/de/ozgcloud/eingang/common/formdata/IncomingFile.java deleted file mode 100644 index c5e9b9db..00000000 --- a/common/src/main/java/de/ozgcloud/eingang/common/formdata/IncomingFile.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.common.formdata; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.InputStream; - -import de.ozgcloud.common.errorhandling.TechnicalException; -import lombok.Builder; -import lombok.Getter; -import lombok.ToString; - -@Builder(toBuilder = true) -@Getter -@ToString -public class IncomingFile { - - public static final String TMP_FILE_PREFIX = "filecached-inputstream"; - public static final String TMP_FILE_SUFFIX = ".ozg-cloud.tmp"; - - private String id; - private String vendorId; - private String name; - private String contentType; - private long size; - - private File file; - - public InputStream getContentStream() { - try { - return new FileInputStream(file); - } catch (FileNotFoundException e) { - throw new TechnicalException("Error opening file " + file.getName(), e); - } - } - - public InputStream getContentStreamForFinalRead() { - return DeleteOnCloseInputStream.from(file); - } - -} diff --git a/common/src/main/java/de/ozgcloud/eingang/common/formdata/IncomingFileGroup.java b/common/src/main/java/de/ozgcloud/eingang/common/formdata/IncomingFileGroup.java deleted file mode 100644 index 16f8726e..00000000 --- a/common/src/main/java/de/ozgcloud/eingang/common/formdata/IncomingFileGroup.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.common.formdata; - -import java.util.List; - -import lombok.Builder; -import lombok.Getter; -import lombok.Singular; -import lombok.ToString; - -@Builder(toBuilder = true) -@Getter -@ToString -public class IncomingFileGroup { - - private String name; - - @Singular - private List<IncomingFile> files; -} diff --git a/common/src/main/java/de/ozgcloud/eingang/common/formdata/PostfachAddressIdentifier.java b/common/src/main/java/de/ozgcloud/eingang/common/formdata/PostfachAddressIdentifier.java deleted file mode 100644 index 5b30bbf8..00000000 --- a/common/src/main/java/de/ozgcloud/eingang/common/formdata/PostfachAddressIdentifier.java +++ /dev/null @@ -1,5 +0,0 @@ -package de.ozgcloud.eingang.common.formdata; - -public interface PostfachAddressIdentifier { - -} diff --git a/common/src/main/java/de/ozgcloud/eingang/common/formdata/ServiceKonto.java b/common/src/main/java/de/ozgcloud/eingang/common/formdata/ServiceKonto.java deleted file mode 100644 index 6cce21a2..00000000 --- a/common/src/main/java/de/ozgcloud/eingang/common/formdata/ServiceKonto.java +++ /dev/null @@ -1,49 +0,0 @@ -package de.ozgcloud.eingang.common.formdata; - -import java.util.EnumSet; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; - -import lombok.AccessLevel; -import lombok.Builder; -import lombok.Getter; -import lombok.RequiredArgsConstructor; -import lombok.Singular; - -@Getter -@Builder -public class ServiceKonto { - - private String type; - @Singular - private List<PostfachAddress> postfachAddresses; - private String trustLevel; - - @Getter - @Builder - public static class PostfachAddress { - private int type; - private String version; - private PostfachAddressIdentifier identifier; - } - - @RequiredArgsConstructor(access = AccessLevel.PRIVATE) - public enum TrustLevel { - - LEVEL_1("STORK-QAA-Level-1"), - LEVEL_2("STORK-QAA-Level-2"), - LEVEL_3("STORK-QAA-Level-3"), - LEVEL_4("STORK-QAA-Level-4"); - - private final String value; - - public static boolean exists(String trustLevelValue) { - if (StringUtils.isBlank(trustLevelValue)) { - return false; - } - return EnumSet.allOf(TrustLevel.class).stream().map(trustLevel -> trustLevel.value).anyMatch(trustLevelValue::equalsIgnoreCase); - } - } - -} \ No newline at end of file diff --git a/common/src/main/java/de/ozgcloud/eingang/common/formdata/StringBasedIdentifier.java b/common/src/main/java/de/ozgcloud/eingang/common/formdata/StringBasedIdentifier.java deleted file mode 100644 index f4d3eb31..00000000 --- a/common/src/main/java/de/ozgcloud/eingang/common/formdata/StringBasedIdentifier.java +++ /dev/null @@ -1,14 +0,0 @@ -package de.ozgcloud.eingang.common.formdata; - -import lombok.Builder; -import lombok.Getter; - -@Getter -@Builder -public class StringBasedIdentifier implements PostfachAddressIdentifier { - - public static final String POSTFACH_ID_FIELD = "postfachId"; - - private String postfachId; - -} \ No newline at end of file diff --git a/common/src/main/java/de/ozgcloud/eingang/common/formdata/ZustaendigeStelle.java b/common/src/main/java/de/ozgcloud/eingang/common/formdata/ZustaendigeStelle.java deleted file mode 100644 index 19d6b1b3..00000000 --- a/common/src/main/java/de/ozgcloud/eingang/common/formdata/ZustaendigeStelle.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.common.formdata; - -import lombok.Builder; -import lombok.Getter; -import lombok.ToString; - -@Getter -@Builder(toBuilder = true) -@ToString -public class ZustaendigeStelle { - - private String organisationseinheitenId; - private String bezeichnung; - private String email; - private String gemeindeSchluessel; - private String amtlicherRegionalSchluessel; - private String hausanschriftStrasse; - private String hausanschriftPlz; - private String hausanschriftOrt; - private String telefon; -} diff --git a/common/src/main/java/de/ozgcloud/eingang/common/vorgang/VorgangNummerSupplier.java b/common/src/main/java/de/ozgcloud/eingang/common/vorgang/VorgangNummerSupplier.java deleted file mode 100644 index 29b9ca97..00000000 --- a/common/src/main/java/de/ozgcloud/eingang/common/vorgang/VorgangNummerSupplier.java +++ /dev/null @@ -1,34 +0,0 @@ -package de.ozgcloud.eingang.common.vorgang; - -import java.time.LocalDate; - -import org.apache.commons.lang3.RandomStringUtils; -import org.springframework.stereotype.Component; - -import de.ozgcloud.common.errorhandling.TechnicalException; -import lombok.RequiredArgsConstructor; - -@Component -@RequiredArgsConstructor -public class VorgangNummerSupplier { - - static final String VORGANGNUMMER_TEMPLATE = "%d%X%02d-%s"; - static final char[] BASE30_ALPHABET = { '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'M', - 'N', 'P', 'Q', 'R', 'S', 'T', 'V', 'W', 'X', 'Y', 'Z' }; - static final int SUFFIX_LENGTH = 6; - - public String get() { - return get(SUFFIX_LENGTH); - } - - public String get(int suffixLength) { - if (suffixLength <1){ - throw new TechnicalException("Suffix length must be at least 1"); - } - var today = LocalDate.now(); - var lastYearNumber = today.getYear() % 10; - return VORGANGNUMMER_TEMPLATE.formatted(lastYearNumber, today.getMonthValue(), today.getDayOfMonth(), - RandomStringUtils.random(suffixLength, BASE30_ALPHABET)); - } - -} diff --git a/common/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/common/src/main/resources/META-INF/additional-spring-configuration-metadata.json deleted file mode 100644 index 625980f8..00000000 --- a/common/src/main/resources/META-INF/additional-spring-configuration-metadata.json +++ /dev/null @@ -1,22 +0,0 @@ -{"properties": [ - { - "name": "ozgcloud.xta.actions.status-list", - "type": "java.lang.String", - "description": "A description for 'ozgcloud.xta.actions.status-list'" - }, - { - "name": "ozgcloud.xta.identifier", - "type": "java.lang.String", - "description": "XTA Identifier for SOAP Request Header (f.e. 'gae:firstname.lastname@mgm-tp.com')" - }, - { - "name": "ozgcloud.xta.keystore.file", - "type": "java.lang.String", - "description": "Location of the keyfile for xta accesss" - }, - { - "name": "ozgcloud.xta.keystore.password", - "type": "java.lang.String", - "description": "Password of the keyfile for xta accesss" - } -]} \ No newline at end of file diff --git a/common/src/main/resources/application-oc.yml b/common/src/main/resources/application-oc.yml deleted file mode 100644 index 47fbb02d..00000000 --- a/common/src/main/resources/application-oc.yml +++ /dev/null @@ -1,2 +0,0 @@ -server: - port: 8080 \ No newline at end of file diff --git a/common/src/test/java/de/ozgcloud/eingang/EingangAdapterApplicationTest.java b/common/src/test/java/de/ozgcloud/eingang/EingangAdapterApplicationTest.java deleted file mode 100644 index 95b9b771..00000000 --- a/common/src/test/java/de/ozgcloud/eingang/EingangAdapterApplicationTest.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang; - -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.context.SpringBootTest; - -@SpringBootTest -class EingangAdapterApplicationTest { - - @Test - void contextLoads() { // NOSONAR nothing to check - it it starts it is fine - } -} diff --git a/common/src/test/java/de/ozgcloud/eingang/common/formdata/AntragstellerTestFactory.java b/common/src/test/java/de/ozgcloud/eingang/common/formdata/AntragstellerTestFactory.java deleted file mode 100644 index b14de310..00000000 --- a/common/src/test/java/de/ozgcloud/eingang/common/formdata/AntragstellerTestFactory.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.common.formdata; - -import java.util.Map; -import java.util.UUID; - -public class AntragstellerTestFactory { - - public static final String ANREDE = "Herr"; - - public static final String FIRMA_NAME = "Firma X"; - public static final String GEBIET_BEZEICHNUNG_KEY = "GebietBEZEICHNUNG"; - public static final String GEBIET_BEZEICHNUNG_VALUE = "Schleswig"; - - public static final String SUB_PERSOENLICHE_EIGNUNG = "persoenlicheEignung"; - public static final String SUB_VERBOTENE_VEREINIGUNG_KEY = "MitgliedschaftInVerboternerVereinigung"; - public static final String SUB_VERBOTENE_VEREINIGUNG_VALUE = "true"; - - public static final String VORNAME = "Theo"; - public static final String NACHNAME = "Test"; - public static final String GEBURTSNAME = "Toast"; - public static final String GEBURTSDATUM = "30.8.1955"; - public static final String GEBURTSORT = "Mülheim an der Ruhr"; - public static final String EMAIL = "noreply@ozg-sh.de"; - public static final String STRASSE = "Musterstraße"; - public static final String HAUSNUMMER = "1"; - public static final String PLZ = "12345"; - public static final String ORT = "Musterstadt"; - public static final String TELEFON = "+ 0176 888 666 222XX"; - public static final String POSTFACH_ID = UUID.randomUUID().toString(); - - public static Antragsteller create() { - return createBuilder().build(); - } - - public static Antragsteller createFirm() { - return createFirmBuilder().build(); - } - - public static Antragsteller.AntragstellerBuilder createFirmBuilder() { - return createBuilder() - .firmaName(FIRMA_NAME) - .geburtsname(null) - .geburtsdatum(null) - .geburtsort(null); - } - - public static Antragsteller.AntragstellerBuilder createBuilder() { - return Antragsteller.builder() - .anrede(ANREDE) - .vorname(VORNAME) - .nachname(NACHNAME) - .geburtsname(GEBURTSNAME) - .geburtsdatum(GEBURTSDATUM) - .geburtsort(GEBURTSORT) - .email(EMAIL) - .telefon(TELEFON) - .strasse(STRASSE) - .hausnummer(HAUSNUMMER) - .plz(PLZ) - .ort(ORT) - .postfachId(POSTFACH_ID) - .data(Map.of(GEBIET_BEZEICHNUNG_KEY, GEBIET_BEZEICHNUNG_VALUE, - SUB_PERSOENLICHE_EIGNUNG, - Map.of(SUB_VERBOTENE_VEREINIGUNG_KEY, SUB_VERBOTENE_VEREINIGUNG_VALUE))); - } -} diff --git a/common/src/test/java/de/ozgcloud/eingang/common/formdata/DeleteOnCloseInputStreamTest.java b/common/src/test/java/de/ozgcloud/eingang/common/formdata/DeleteOnCloseInputStreamTest.java deleted file mode 100644 index 253b1496..00000000 --- a/common/src/test/java/de/ozgcloud/eingang/common/formdata/DeleteOnCloseInputStreamTest.java +++ /dev/null @@ -1,32 +0,0 @@ -package de.ozgcloud.eingang.common.formdata; - -import static org.assertj.core.api.Assertions.*; - -import java.io.File; -import java.io.IOException; - -import org.junit.jupiter.api.Test; - -import de.ozgcloud.common.errorhandling.TechnicalException; - -class DeleteOnCloseInputStreamTest { - - private DeleteOnCloseInputStream stream; - - @Test - void shouldDeleteFileOnClose() throws IOException { - File file = File.createTempFile("Test", "test"); - stream = new DeleteOnCloseInputStream(file); - - stream.close(); - - assertThat(file).doesNotExist(); - } - - @Test - void shouldThrowException() { - var notExists = new File("notExists"); - - assertThatThrownBy(() -> DeleteOnCloseInputStream.from(notExists)).isInstanceOf(TechnicalException.class); - } -} diff --git a/common/src/test/java/de/ozgcloud/eingang/common/formdata/FormDataControlTestFactory.java b/common/src/test/java/de/ozgcloud/eingang/common/formdata/FormDataControlTestFactory.java deleted file mode 100644 index e95c1e0f..00000000 --- a/common/src/test/java/de/ozgcloud/eingang/common/formdata/FormDataControlTestFactory.java +++ /dev/null @@ -1,23 +0,0 @@ -package de.ozgcloud.eingang.common.formdata; - -import java.util.Optional; - -import de.ozgcloud.eingang.common.formdata.FormData.FormDataControl; -import de.ozgcloud.eingang.common.formdata.FormData.Representations; - -public class FormDataControlTestFactory { - - public static String PRIMARY_FORM_DATA_REPRESENTATION = "Antrag.xml"; - - public static FormDataControl create() { - return createBuilder().build(); - } - - public static FormDataControl.FormDataControlBuilder createBuilder() { - return FormDataControl.builder() - .representations(Optional.of(Representations.builder() - .primaryFormDataRepresentation(PRIMARY_FORM_DATA_REPRESENTATION) - .build())) - .metaData(Optional.of(FormMetaDataTestFactory.create())); - } -} diff --git a/common/src/test/java/de/ozgcloud/eingang/common/formdata/FormDataTestFactory.java b/common/src/test/java/de/ozgcloud/eingang/common/formdata/FormDataTestFactory.java deleted file mode 100644 index 52dcddea..00000000 --- a/common/src/test/java/de/ozgcloud/eingang/common/formdata/FormDataTestFactory.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.common.formdata; - -import java.util.Arrays; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -public class FormDataTestFactory { - - public static final String SIMPLE_VALUE_KEY = "kontaktsystemtypid"; - public static final String SIMPLE_VALUE = "233034600"; - - public static final String SUBFORM_KEY = "zustaendigestelle"; - public static final String SUBKEY2 = "OrganisationseinheitenAuswahl"; - public static final String SUBVALUE2 = "9535669"; - public static final Map<String, String> SUBFORM_VALUE = Map.of(SUBKEY2, SUBVALUE2); - - public static final String NESTED_LIST_WITH_STRINGS_KEY = "nestedlist"; - public static final String NESTED_LIST_STRING_ELEMENT_1 = "n1"; - public static final String NESTED_LIST_STRING_ELEMENT_2 = "n2"; - public static final List<String> NESTED_LIST_WITH_STRINGS = List.of(NESTED_LIST_STRING_ELEMENT_1, NESTED_LIST_STRING_ELEMENT_2); - - public static final String NESTED_LIST_WITH_OBJECTS_KEY = "nestedlistwithobjects"; - public static final Map<String, Object> NESTED_LIST_OBJECTS_ELEMENT_1 = Map.of("o1", "o2"); - public static final Map<String, Object> NESTED_LIST_OBJECTS_ELEMENT_2 = Map.of("o3", "o4"); - public static final List<Map<String, Object>> NESTED_LIST_WITH_OBJECTS = List.of(NESTED_LIST_OBJECTS_ELEMENT_1, NESTED_LIST_OBJECTS_ELEMENT_2); - - public static final String ATTACHMENT_GROUP_2 = "FileGroup2"; - - public static final String VORGANG_ID = "vorgangId"; - - public static FormData create() { - return createBuilder().build(); - } - - public static FormData.FormDataBuilder createBuilder() { - return FormData.builder() - .header(FormHeaderTestFactory.create()) - .antragsteller(AntragstellerTestFactory.create()) - .zustaendigeStelle(ZustaendigeStelleTestFactory.create()) - .control(FormDataControlTestFactory.create()) - .formData(Map.of( - SIMPLE_VALUE_KEY, SIMPLE_VALUE, - SUBFORM_KEY, SUBFORM_VALUE, - NESTED_LIST_WITH_STRINGS_KEY, NESTED_LIST_WITH_STRINGS, - NESTED_LIST_WITH_OBJECTS_KEY, NESTED_LIST_WITH_OBJECTS)) - // TODO nach entfernen des zweiten Attachments den Wert auf 1 setzen - .numberOfAttachments(2) - // TODO zweites Attachment aus der TestFactory entfernen und die entsprechenden - // Tests anpassen - .attachments(List.of(IncomingFileGroupTestFactory.create(), - IncomingFileGroupTestFactory.createBuilder().name(ATTACHMENT_GROUP_2).build())) - .numberOfRepresentations(1) - .representations(List.of(IncomingFileTestFactory.create())); - } - - @SafeVarargs - public static FormData withFormDataMaps(Map<String, Object>... maps) { - Map<String, Object> formData = new HashMap<>(); - - Arrays.stream(maps).forEach(formData::putAll); - - return createBuilder().formData(Collections.unmodifiableMap(formData)).build(); - } -} diff --git a/common/src/test/java/de/ozgcloud/eingang/common/formdata/FormHeaderTestFactory.java b/common/src/test/java/de/ozgcloud/eingang/common/formdata/FormHeaderTestFactory.java deleted file mode 100644 index 0a371946..00000000 --- a/common/src/test/java/de/ozgcloud/eingang/common/formdata/FormHeaderTestFactory.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.common.formdata; - -import java.time.ZonedDateTime; - -public class FormHeaderTestFactory { - - public static final String CLIENT_ID = "clientId"; -// public static final String CLIENT = "client"; - public static final String CUSTOMER_ID = "customerId"; - public static final String CUSTOMER = "customer"; - public static final String SENDER = "sender"; - public static final String FORM_ENGINE_NAME = "TB3000"; - public static final String FORM_NAME = "formName"; - public static final String FORM_ID = "formId"; - public static final String REQUEST_ID = "requestId"; - public static final String VORGANG_NUMMER = "ABCD-1234"; - public static final String CREATED_AT_STR = "2024-04-01T01:00:30Z"; - public static final ZonedDateTime CREATED_AT = ZonedDateTime.parse(CREATED_AT_STR); - - public static final ServiceKonto SERVICE_KONTO = ServiceKontoTestFactory.create(); - - public static FormHeader create() { - return createBuilder().build(); - } - - public static FormHeader.FormHeaderBuilder createBuilder() { - return FormHeader.builder() - .requestId(REQUEST_ID) - .vorgangNummer(VORGANG_NUMMER) - .createdAt(CREATED_AT) - .formEngineName(FORM_ENGINE_NAME) - .formId(FORM_ID) - .formName(FORM_NAME) - .sender(SENDER) - .serviceKonto(SERVICE_KONTO); - } - -} diff --git a/common/src/test/java/de/ozgcloud/eingang/common/formdata/FormMetaDataTestFactory.java b/common/src/test/java/de/ozgcloud/eingang/common/formdata/FormMetaDataTestFactory.java deleted file mode 100644 index 987fef7d..00000000 --- a/common/src/test/java/de/ozgcloud/eingang/common/formdata/FormMetaDataTestFactory.java +++ /dev/null @@ -1,36 +0,0 @@ -package de.ozgcloud.eingang.common.formdata; - -import java.time.ZonedDateTime; - -public class FormMetaDataTestFactory { - - public static final String XTA_IDENTIFIER_ENTRY_NAME = "xtaIdentifier"; - - public static final String XTA_IDENTIFIER = "vbe:010550120100"; - public static final String OE_ID = "010550120100"; - - public static FormMetaData create() { - return new FormMetaData() { - - @Override - public ZonedDateTime getOrigin() { - return ZonedDateTime.now(); - } - - @Override - public ZonedDateTime getDelivery() { - return ZonedDateTime.now(); - } - - @Override - public String getEntry(String name) { - switch (name) { - case XTA_IDENTIFIER_ENTRY_NAME: - return XTA_IDENTIFIER; - } - return null; - } - - }; - } -} diff --git a/common/src/test/java/de/ozgcloud/eingang/common/formdata/FormSolutionsTestFactory.java b/common/src/test/java/de/ozgcloud/eingang/common/formdata/FormSolutionsTestFactory.java deleted file mode 100644 index ebe4063d..00000000 --- a/common/src/test/java/de/ozgcloud/eingang/common/formdata/FormSolutionsTestFactory.java +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.common.formdata; - -import java.util.List; - -public class FormSolutionsTestFactory { - - public static final String ORGANISATIONSEINHEITEN_ID = "5678"; - public static final String POSTFACH_ID = "51522620-03d2-4507-b1f0-08d86920efed"; - public static final String OBJEKTGRUPPE_0 = "Objektgruppe[0]"; - public static final String PANEL_ID = "Panel_0_1"; - public static final String DECODED_CONTENT = "Lorem ipsum"; - public static final String IDENTIFIER_VALUE = "AS_123"; - public static final String FIM_ID = "S12345678"; - public static final List<String> LEIKA_IDS = List.of("123456890", "223456890"); - public static final String VORGANG_NUMMER = "KFAS_KOP_TEST-yCkgCdqG"; - public static final String COMPONENT_ID = "Textfeld (einzeilig)"; - public static final String COMPONENT_VALUE = "kfjhkfjhk"; - public static final String DATE_COMPONENT_ID = "Datums- / Uhrzeitfeld"; - public static final String DATE_COMPONENT_VALUE = "22.05.1996"; - public static final String ZIP_VALUE = "TG9yZW0gaXBzdW0="; - public static final String ZIP_VALUE_DECODED = "Lorem ipsum"; - public static final String PDF_VALUE = "TG9yZW0gaXBzdW0="; - public static final String PDF_VALUE_DECODED = "Lorem ipsum"; - public static final String ZUSTAENDIGE_STELLE_VALUE = "zustaendigeStelle"; - public static final String ZUSTAENDIGE_STELLE = "5678"; - public static final String POSTFACH_ID_STELLE = "51522620-03d2-4507-b1f0-08d86920efed"; - public static final String FORM_ID_VALUE = "KFAS_KOP_TEST-yCkgCdqG"; - // TODO vereinfachen und in Dateien packen - public static final String SIMPLE_JSON_DATA = "{\"assistant\": " - + "{\"identifier\":\"" + IDENTIFIER_VALUE + "\",\n" - + "\"panels\": [{\"identifier\":\"" + PANEL_ID + "\",\n" - + "\"components\": [" - + "{\"identifier\": \"" + COMPONENT_ID + "\",\"needed\": true,\"stringValue\": \"" + COMPONENT_VALUE + "\"}," - + "{\"identifier\": \"" + DATE_COMPONENT_ID + "\",\"needed\": true,\"stringValue\": \"" + DATE_COMPONENT_VALUE + "\"}\n" - + "]}],\n" - + "\"ozgContainer\": {\"fimId\": \"S12345678\",\"leikaIds\": [\"123456890\",\"223456890\"]}},\n" - + "\"zustaendigeStelle\": \"5678\",\n" - + "\"postkorbhandle\": \"" + POSTFACH_ID_STELLE + "\",\n" - + "\"transactionId\": \"" + FORM_ID_VALUE + "\"\n" - + "}"; - public static final String NESTED_COMPONENTS_JSON = "{\"assistant\":" - + "{\"identifier\": \"" + IDENTIFIER_VALUE + "\",\n" - + "\"panels\": [{\"identifier\": \"" + COMPONENT_ID + "\",\n" - + "\"components\": [" - + "{\"identifier\": \"" + OBJEKTGRUPPE_0 + "\",\"needed\": true,\n" - + "\"components\": [" - + "{\"identifier\": \"" + DATE_COMPONENT_ID + "\",\"needed\": true,\"stringValue\": \"" + DATE_COMPONENT_VALUE + "\"\n" - + "}]}]\n" - + "}]}\n" - + "}"; - private static final String TOP = "{\"assistant\":{\"identifier\": \"" + IDENTIFIER_VALUE + "\",\"panels\": " - + "[{\"identifier\": \"" + COMPONENT_ID + "\",\"components\": " - + "[{\"identifier\": \"" + OBJEKTGRUPPE_0 + "\",\"needed\": true,\"components\": " - + "[{\"identifier\": \"" + DATE_COMPONENT_ID + "\",\"needed\": true,\"stringValue\": \"" + DATE_COMPONENT_VALUE + "\"}]" - + "}]}]},"; - private static final String ZIP = "\"zip\":\"" + ZIP_VALUE + "\""; - private static final String PDF = "\"pdf\":\"" + PDF_VALUE + "\""; - private static final String END = "}"; - public static final String PDF_REPRESENTATION_JSON = TOP + PDF + END; - public static final String ZIP_ATTACHMENT_JSON = TOP + ZIP + END; - public static final String ATTACHMENTS_JSON = TOP + PDF + "," + ZIP + END; -} diff --git a/common/src/test/java/de/ozgcloud/eingang/common/formdata/IncomingFileGroupTestFactory.java b/common/src/test/java/de/ozgcloud/eingang/common/formdata/IncomingFileGroupTestFactory.java deleted file mode 100644 index cc2845a3..00000000 --- a/common/src/test/java/de/ozgcloud/eingang/common/formdata/IncomingFileGroupTestFactory.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.common.formdata; - -import java.util.List; - -public class IncomingFileGroupTestFactory { - public static final String XDOMEA_XML_NAME = "xdomea.xml"; - public static final String REPR_XML_NAME = "repr.xml"; - public static final String REPR_PDF_NAME = "repr.pdf"; - public static final String ATTATCHMENT_XML_NAME = "att.xml"; - public static final String ATTATCHMENT_PNG_NAME = "att.png"; - public static final String ATTATCHMENT_PDF_NAME = "att.pdf"; - - public static final String INCOMING_FILE_ID = "xxx"; - public static final String ID = "id"; - public static final String FILE_REF1 = "FileRef1"; - public static final String VENDOR_ID_XXX = "vendorId:xxx"; - - public static final String NAME = "Ausweis"; - - public static final IncomingFile INCOMING_FILE = IncomingFile.builder().id(INCOMING_FILE_ID).vendorId(VENDOR_ID_XXX).build(); - public static final List<IncomingFileGroup> FILE_GROUPS = List.of(IncomingFileGroup.builder().files(List.of(INCOMING_FILE)).build()); - - public static IncomingFileGroup create() { - return createBuilder().build(); - } - - public static IncomingFileGroup.IncomingFileGroupBuilder createBuilder() { - return IncomingFileGroup.builder() - .name(NAME) - .files(List.of(IncomingFileTestFactory.create())); - } - -} diff --git a/common/src/test/java/de/ozgcloud/eingang/common/formdata/IncomingFileTest.java b/common/src/test/java/de/ozgcloud/eingang/common/formdata/IncomingFileTest.java deleted file mode 100644 index 7d23dfe3..00000000 --- a/common/src/test/java/de/ozgcloud/eingang/common/formdata/IncomingFileTest.java +++ /dev/null @@ -1,97 +0,0 @@ -package de.ozgcloud.eingang.common.formdata; - -import static de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory.*; -import static org.assertj.core.api.Assertions.*; - -import java.io.File; -import java.io.InputStream; -import java.nio.file.Files; -import java.nio.file.Path; -import java.util.function.Predicate; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; - -import lombok.SneakyThrows; - -class IncomingFileTest { - - private static final String TMP_DIRECTORY_PATH = System.getProperty("java.io.tmpdir"); - - private static final Predicate<Path> hasNameSuffix = path -> path.getFileName().toString().endsWith(IncomingFile.TMP_FILE_SUFFIX); - - @Nested - class TestTmpFile { - - @BeforeEach - void init() { - cleanupTempFiles(); - } - - @Test - void shouldCreateTmpFile() { - IncomingFileTestFactory.create().getContentStream(); - - assertThat(noFilesWithSuffixInTempDirectory()).isFalse(); - } - - @Test - void shouldCreateDeleteOnCloseInputStream() { - var file = IncomingFileTestFactory.create(); - file.getContentStream(); - InputStream newStream = file.getContentStreamForFinalRead(); - - assertThat(newStream).isInstanceOf(DeleteOnCloseInputStream.class); - } - - @Test - void validateInputStreamContent() { - InputStream newStream = IncomingFileTestFactory.create().getContentStream(); - - byte[] text = read(newStream); - - assertThat(text).isEqualTo(CONTENT); - } - - @Test - void shouldReturnNewInputStreamOnEveryRequest() { - IncomingFile incomingFile = IncomingFileTestFactory.create(); - - InputStream stream1 = incomingFile.getContentStream(); - InputStream stream2 = incomingFile.getContentStream(); - - assertThat(stream1).isNotSameAs(stream2); - } - - @Test - void contentStreamShouldBeMultipleReadable() { - IncomingFile incomingFile = IncomingFileTestFactory.create(); - - InputStream stream1 = incomingFile.getContentStream(); - InputStream stream2 = incomingFile.getContentStream(); - - assertThat(read(stream1)).isEqualTo(CONTENT); - assertThat(read(stream2)).isEqualTo(CONTENT); - - InputStream stream3 = incomingFile.getContentStream(); - assertThat(read(stream3)).isEqualTo(CONTENT); - } - - @SneakyThrows - private byte[] read(InputStream stream) { - return stream.readAllBytes(); - } - } - - @SneakyThrows - private static void cleanupTempFiles() { - Files.walk(Path.of(TMP_DIRECTORY_PATH), 1).filter(hasNameSuffix).map(Path::toFile).forEach(File::delete); - } - - @SneakyThrows - private static boolean noFilesWithSuffixInTempDirectory() { - return Files.walk(Path.of(TMP_DIRECTORY_PATH), 1).noneMatch(hasNameSuffix); - } - -} diff --git a/common/src/test/java/de/ozgcloud/eingang/common/formdata/IncomingFileTestFactory.java b/common/src/test/java/de/ozgcloud/eingang/common/formdata/IncomingFileTestFactory.java deleted file mode 100644 index 40e803fe..00000000 --- a/common/src/test/java/de/ozgcloud/eingang/common/formdata/IncomingFileTestFactory.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.common.formdata; - -import java.util.UUID; - -import org.springframework.http.MediaType; -import org.springframework.mock.web.MockMultipartFile; - -import de.ozgcloud.common.binaryfile.TempFileUtils; -import de.ozgcloud.eingang.common.formdata.IncomingFile.IncomingFileBuilder; -import lombok.SneakyThrows; - -public class IncomingFileTestFactory { - - public static final String ID = UUID.randomUUID().toString(); - public static final String VENDOR_ID = IncomingFileGroupTestFactory.VENDOR_ID_XXX; - public static final String NAME = "XML-Daten.xml"; - public static final String CONTENT_TYPE = "application/xml"; - public static final String PDF_CONTENT_TYPE = MediaType.APPLICATION_PDF_VALUE; - public static final String JSON_CONTENT_TYPE = MediaType.APPLICATION_JSON_VALUE; - public static final byte[] CONTENT = "TESTCONTENT1".getBytes(); - public static final long SIZE = 12; - - public static IncomingFile create() { - return createBuilder().build(); - } - - public static IncomingFileBuilder createBuilder() { - return IncomingFile.builder() - .id(ID) - .vendorId(VENDOR_ID) - .name(NAME) - .contentType(CONTENT_TYPE) - .file(TempFileUtils.writeTmpFile(CONTENT)) - .size(SIZE); - } - - public static MockMultipartFile asMultipartFile(String multipartName) { - return asMultipartFile(multipartName, create()); - } - - @SneakyThrows - public static MockMultipartFile asMultipartFile(String multipartName, IncomingFile file) { - return new MockMultipartFile(multipartName, file.getName(), file.getContentType(), file.getContentStream().readAllBytes()); - } -} diff --git a/common/src/test/java/de/ozgcloud/eingang/common/formdata/PostfachAddressTestFactory.java b/common/src/test/java/de/ozgcloud/eingang/common/formdata/PostfachAddressTestFactory.java deleted file mode 100644 index 2d25ee58..00000000 --- a/common/src/test/java/de/ozgcloud/eingang/common/formdata/PostfachAddressTestFactory.java +++ /dev/null @@ -1,27 +0,0 @@ -package de.ozgcloud.eingang.common.formdata; - -import java.util.UUID; - -import de.ozgcloud.eingang.common.formdata.ServiceKonto.PostfachAddress; - -public class PostfachAddressTestFactory { - - public static final int POSTFACH_ADDRESS_TYPE = 1; - public static final String VERSION = "1.0"; - public static final String POSTFACH_ID = UUID.randomUUID().toString(); - - public static PostfachAddress create() { - return createBuilder().build(); - } - - private static PostfachAddress.PostfachAddressBuilder createBuilder() { - return PostfachAddress.builder() - .type(POSTFACH_ADDRESS_TYPE) - .version(VERSION) - .identifier(createStringBasedIdentifier()); - } - - private static PostfachAddressIdentifier createStringBasedIdentifier() { - return StringBasedIdentifier.builder().postfachId(POSTFACH_ID).build(); - } -} \ No newline at end of file diff --git a/common/src/test/java/de/ozgcloud/eingang/common/formdata/ServiceKontoTestFactory.java b/common/src/test/java/de/ozgcloud/eingang/common/formdata/ServiceKontoTestFactory.java deleted file mode 100644 index 9cc248f5..00000000 --- a/common/src/test/java/de/ozgcloud/eingang/common/formdata/ServiceKontoTestFactory.java +++ /dev/null @@ -1,18 +0,0 @@ -package de.ozgcloud.eingang.common.formdata; - -public class ServiceKontoTestFactory { - - public static final String TYPE = "OSI"; - public static final String TRUST_LEVEL = "STORK-QAA-Level-2"; - - public static ServiceKonto create() { - return createBuilder().build(); - } - - public static ServiceKonto.ServiceKontoBuilder createBuilder() { - return ServiceKonto.builder() - .type(TYPE) - .trustLevel(TRUST_LEVEL) - .postfachAddress(PostfachAddressTestFactory.create()); - } -} diff --git a/common/src/test/java/de/ozgcloud/eingang/common/formdata/TrustLevelTest.java b/common/src/test/java/de/ozgcloud/eingang/common/formdata/TrustLevelTest.java deleted file mode 100644 index 93c12966..00000000 --- a/common/src/test/java/de/ozgcloud/eingang/common/formdata/TrustLevelTest.java +++ /dev/null @@ -1,32 +0,0 @@ -package de.ozgcloud.eingang.common.formdata; - -import static org.assertj.core.api.Assertions.*; - -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.NullAndEmptySource; -import org.junit.jupiter.params.provider.ValueSource; - -import de.ozgcloud.eingang.common.formdata.ServiceKonto.TrustLevel; - -class TrustLevelTest { - - @DisplayName("should return true when") - @ParameterizedTest(name = "trust level is {0}") - @ValueSource(strings = {"STORK-QAA-Level-1", "STORK-QAA-Level-2", "STORK-QAA-Level-3", "STORK-QAA-Level-4"}) - void shouldReturnTrue(String trustLevel) { - var isValid = TrustLevel.exists(trustLevel); - - assertThat(isValid).isTrue(); - } - - @DisplayName("should return false when") - @ParameterizedTest(name = "trust level is \"{0}\"") - @NullAndEmptySource - @ValueSource(strings = {"STORK-QAA-Level-0", "unexpected"}) - void shouldReturnFalse(String trustLevel) { - var isValid = TrustLevel.exists(trustLevel); - - assertThat(isValid).isFalse(); - } -} \ No newline at end of file diff --git a/common/src/test/java/de/ozgcloud/eingang/common/formdata/ZustaendigeStelleTestFactory.java b/common/src/test/java/de/ozgcloud/eingang/common/formdata/ZustaendigeStelleTestFactory.java deleted file mode 100644 index fe990b8f..00000000 --- a/common/src/test/java/de/ozgcloud/eingang/common/formdata/ZustaendigeStelleTestFactory.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.common.formdata; - -public class ZustaendigeStelleTestFactory { - - public static final String ORGANISATIONSEINHEIT_ID = "08150815"; - public static final String EMAIL = "hase@loewenkaefig.de"; - public static final String GEMEINDE_SCHLUESSEL = "1234567"; - public static final String AMTLICHER_REGIONAL_SCHLUESSEL = "regional-schluessel"; - public static final String HAUSANSCHRIFT_STRASSE = "Musterstraße"; - public static final String HAUSANSCHRIFT_PLZ = "12345"; - public static final String HAUSANSCHRIFT_ORT = "Musterort"; - public static final String TELEFON = "0123456789"; - - public static ZustaendigeStelle create() { - return createBuilder().build(); - } - - public static ZustaendigeStelle.ZustaendigeStelleBuilder createBuilder() { - return ZustaendigeStelle.builder() // - .organisationseinheitenId(ORGANISATIONSEINHEIT_ID) - .email(EMAIL) - .gemeindeSchluessel(GEMEINDE_SCHLUESSEL) - .amtlicherRegionalSchluessel(AMTLICHER_REGIONAL_SCHLUESSEL) - .hausanschriftStrasse(HAUSANSCHRIFT_STRASSE) - .hausanschriftPlz(HAUSANSCHRIFT_PLZ) - .hausanschriftOrt(HAUSANSCHRIFT_ORT) - .telefon(TELEFON); - } -} diff --git a/common/src/test/java/de/ozgcloud/eingang/common/vorgang/VorgangNummerSupplierTest.java b/common/src/test/java/de/ozgcloud/eingang/common/vorgang/VorgangNummerSupplierTest.java deleted file mode 100644 index fa604a63..00000000 --- a/common/src/test/java/de/ozgcloud/eingang/common/vorgang/VorgangNummerSupplierTest.java +++ /dev/null @@ -1,106 +0,0 @@ -package de.ozgcloud.eingang.common.vorgang; - -import static org.assertj.core.api.Assertions.*; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.Mockito.*; - -import java.time.LocalDate; - -import org.apache.commons.lang3.RandomStringUtils; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.ValueSource; -import org.mockito.InjectMocks; -import org.mockito.Spy; - -import de.ozgcloud.common.errorhandling.TechnicalException; - -class VorgangNummerSupplierTest { - - @Spy - @InjectMocks - private VorgangNummerSupplier vorgangNummerSupplier; - - - @Test - @DisplayName("should add random suffix of length 6") - void shouldAddSuffix() { - var result = vorgangNummerSupplier.get(); - - assertThat(getSuffix(result)).hasSize(VorgangNummerSupplier.SUFFIX_LENGTH); - } - - @Test - void shouldHaveSuffixSize() { - var result = vorgangNummerSupplier.get(3); - - assertThat(getSuffix(result)).hasSize(3); - } - - @DisplayName("should throw exception when") - @ParameterizedTest(name = "suffix length {0}") - @ValueSource(ints = { -1, 0 }) - void shouldThrowException(int suffixLength) { - assertThrows(TechnicalException.class, () -> vorgangNummerSupplier.get(suffixLength)); - } - - private String getSuffix(String string) { - return string.substring(string.indexOf('-') + 1); - } - - @Test - void shouldCallGetRandomString() { - try (var randomStringUtils = mockStatic(RandomStringUtils.class)) { - vorgangNummerSupplier.get(); - - randomStringUtils.verify(() -> RandomStringUtils.random(VorgangNummerSupplier.SUFFIX_LENGTH, VorgangNummerSupplier.BASE30_ALPHABET)); - } - } - - @Test - void shouldHaveSize() { - var result = vorgangNummerSupplier.get(); - - assertThat(getPrefix(result)).hasSize(5); - } - - private String getPrefix(String string) { - return string.substring(0, string.indexOf('-') + 1); - } - - @Test - void shouldAddLastYearNumberFirst() { - var lastYearNumber = "" + LocalDate.now().getYear() % 10; - - var result = vorgangNummerSupplier.get(); - - assertThat(result.substring(0, 1)).isEqualTo(lastYearNumber); - } - - @Test - void shouldAddMonthValueSecond() { - var monthHexValue = "%X".formatted(LocalDate.now().getMonthValue()); - - var result = vorgangNummerSupplier.get(); - - assertThat(result.substring(1, 2)).isEqualTo(monthHexValue); - } - - @Test - void shouldAddDayValueThird() { - var dayValue = "%02d".formatted(LocalDate.now().getDayOfMonth()); - - var result = vorgangNummerSupplier.get(); - - assertThat(result.substring(2, 4)).isEqualTo(dayValue); - } - - @Test - void shouldAddHyphenAtEnd() { - var result = vorgangNummerSupplier.get(); - - assertThat(result.charAt(4)).isEqualTo('-'); - } - -} \ No newline at end of file diff --git a/common/src/test/resources/application.yml b/common/src/test/resources/application.yml deleted file mode 100644 index 989f0be5..00000000 --- a/common/src/test/resources/application.yml +++ /dev/null @@ -1,16 +0,0 @@ -spring: - profiles: - active: - - local - - itcase - -logging: - level: - ROOT: ERROR - '[org.springframework]': ERROR - config: classpath:log4j2-local.xml - -ozgcloud: - adapter: - routingStrategy: SINGLE - targetVorgangManagerName: kiel \ No newline at end of file diff --git a/common/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker b/common/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker deleted file mode 100644 index ca6ee9ce..00000000 --- a/common/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker +++ /dev/null @@ -1 +0,0 @@ -mock-maker-inline \ No newline at end of file diff --git a/dependency-check-supressions.xml b/dependency-check-supressions.xml deleted file mode 100644 index 7e26000b..00000000 --- a/dependency-check-supressions.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<suppressions xmlns="https://jeremylong.github.io/DependencyCheck/dependency-suppression.1.3.xsd"> - <suppress> - <vulnerabilityName>CVE-DUMMY</vulnerabilityName> - </suppress> -</suppressions> diff --git a/enterprise-adapter/pom.xml b/enterprise-adapter/pom.xml deleted file mode 100644 index 8adcacf7..00000000 --- a/enterprise-adapter/pom.xml +++ /dev/null @@ -1,101 +0,0 @@ -<?xml version="1.0"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>de.ozgcloud.eingang</groupId> - <artifactId>eingang-manager</artifactId> - <version>2.16.0-SNAPSHOT</version> - </parent> - <artifactId>enterprise-adapter</artifactId> - <name>EM - Enterprise Interface Adapter</name> - - <properties> - <spring-boot.build-image.imageName>docker.ozg-sh.de/enterprise-adapter:build-latest</spring-boot.build-image.imageName> - </properties> - - <dependencies> - <!--ozg-Cloud--> - <dependency> - <groupId>de.ozgcloud.eingang</groupId> - <artifactId>common</artifactId> - </dependency> - <dependency> - <groupId>de.ozgcloud.eingang</groupId> - <artifactId>semantik-adapter</artifactId> - </dependency> - - - <!--spring--> - <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-web</artifactId> - </dependency> - <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-actuator</artifactId> - </dependency> - - - - <!--dev tools--> - <dependency> - <groupId>org.mapstruct</groupId> - <artifactId>mapstruct</artifactId> - </dependency> - - <!--test --> - <dependency> - <groupId>de.ozgcloud.eingang</groupId> - <artifactId>common</artifactId> - <type>test-jar</type> - <scope>test</scope> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-maven-plugin</artifactId> - </plugin> - - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-surefire-plugin</artifactId> - </plugin> - - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-failsafe-plugin</artifactId> - </plugin> - - <plugin> - <groupId>org.jacoco</groupId> - <artifactId>jacoco-maven-plugin</artifactId> - </plugin> - </plugins> - </build> - - <profiles> - <profile> - <id>ci-build</id> - <build> - <plugins> - <plugin> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-maven-plugin</artifactId> - <executions> - <execution> - <id>build-image</id> - <phase>install</phase> - <goals> - <goal>build-image-no-fork</goal> - </goals> - </execution> - </executions> - </plugin> - </plugins> - </build> - </profile> - </profiles> -</project> diff --git a/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/EnterpriseAdapterConfiguration.java b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/EnterpriseAdapterConfiguration.java deleted file mode 100644 index 0ac48af3..00000000 --- a/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/EnterpriseAdapterConfiguration.java +++ /dev/null @@ -1,19 +0,0 @@ -package de.ozgcloud.eingang.enterprise; - -import java.util.List; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -import de.ozgcloud.eingang.semantik.enginebased.EngineBasedSemantikAdapter; -import de.ozgcloud.eingang.semantik.enginebased.a12.A12EngineBasedAdapter; -import de.ozgcloud.eingang.semantik.enginebased.a12.A12EngineBasedMapper; - -@Configuration -class EnterpriseAdapterConfiguration { - - @Bean - EngineBasedSemantikAdapter engineBasedAdapter(List<A12EngineBasedMapper> mapper) { - return new A12EngineBasedAdapter(mapper); - } -} diff --git a/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryController.java b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryController.java deleted file mode 100644 index 66431be6..00000000 --- a/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryController.java +++ /dev/null @@ -1,123 +0,0 @@ -package de.ozgcloud.eingang.enterprise.entry; - -import java.io.IOException; -import java.io.InputStream; -import java.time.ZonedDateTime; -import java.util.Collection; -import java.util.Objects; - -import org.apache.commons.collections4.CollectionUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.Resource; -import org.springframework.http.HttpStatus; -import org.springframework.http.MediaType; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestPart; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.ResponseStatus; -import org.springframework.web.multipart.MultipartFile; - -import de.ozgcloud.common.binaryfile.TempFileUtils; -import de.ozgcloud.common.errorhandling.TechnicalException; -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.IncomingFile; -import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; -import de.ozgcloud.eingang.common.vorgang.VorgangNummerSupplier; -import de.ozgcloud.eingang.enterprise.entry.EntryResponse.ResponseVorgang; -import de.ozgcloud.eingang.semantik.SemantikAdapter; - -@Controller -@ResponseBody -@RequestMapping("antrag") -public class EntryController { - - private static final String STARTING_STATUS = "NEU"; - private static final String OTHER_FILE_GROUP_NAME = "Sonstige"; - - @Autowired - private EntryDataMapper mapper; - - @Autowired - private SemantikAdapter semantikAdapter; - @Autowired - private VorgangNummerSupplier vorgangNummerSupplier; - - @ResponseStatus(HttpStatus.ACCEPTED) - @PostMapping(consumes = "multipart/form-data", produces = MediaType.APPLICATION_JSON_VALUE) - public EntryResponse receiveAntrag(@RequestPart("formData") Resource formData, - @RequestPart(name = "representation", required = false) Collection<MultipartFile> representations, - @RequestPart(name = "attachment", required = false) Collection<MultipartFile> attachment) - throws IOException { - var mapped = mapper.mapEntryData(formData.getInputStream()); - mapped = addVorgangNummer(mapped); - mapped = addRepresentations(representations, mapped); - mapped = addAttachments(attachment, mapped); - - var vorgangId = semantikAdapter.processFormData(mapped); - - return buildResponse(mapped, vorgangId); - } - - private FormData addVorgangNummer(FormData formData) { - var header = formData.getHeader().toBuilder().vorgangNummer(vorgangNummerSupplier.get()).build(); - return formData.toBuilder().header(header).build(); - } - - private FormData addRepresentations(Collection<MultipartFile> representations, FormData formData) { - if (Objects.isNull(representations)) { - return formData; - } - - var builder = formData.toBuilder(); - representations.stream().map(this::buildIncomingFile).forEach(builder::representation); - return builder.numberOfRepresentations(representations.size()).build(); - } - - FormData addAttachments(Collection<MultipartFile> attachments, FormData formData) { - if (CollectionUtils.isEmpty(attachments)) { - return formData; - } - - IncomingFileGroup group = buildSonstigeGroup(attachments); - return formData.toBuilder().attachment(group).numberOfAttachments(group.getFiles().size()).build(); - } - - private IncomingFileGroup buildSonstigeGroup(Collection<MultipartFile> attachments) { - var builder = IncomingFileGroup.builder().name(OTHER_FILE_GROUP_NAME); - attachments.stream().map(this::buildIncomingFile).forEach(builder::file); - return builder.build(); - } - - private IncomingFile buildIncomingFile(MultipartFile multipartFile) { - InputStream inStream = getInputStream(multipartFile); - - return IncomingFile.builder() - .name(multipartFile.getOriginalFilename()) - .contentType(multipartFile.getContentType()) - .size(multipartFile.getSize()) - .file(TempFileUtils.writeTmpFile(inStream)) - .build(); - } - - private InputStream getInputStream(MultipartFile multipartFile) { - try { - return multipartFile.getInputStream(); - } catch (IOException e) { - throw new TechnicalException("Error reading incoming multipart File.", e); - } - } - - EntryResponse buildResponse(FormData formData, String vorgangId) { - return EntryResponse.builder() - .transactionId(formData.getHeader().getRequestId()) - .vorgang(ResponseVorgang.builder() - .vorgangId(vorgangId) - .vorgangNummer(formData.getHeader().getVorgangNummer()) - .status(STARTING_STATUS) - .statusSince(ZonedDateTime.now().withNano(0)) - .build()) - .build(); - } -} diff --git a/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryData.java b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryData.java deleted file mode 100644 index a25b788b..00000000 --- a/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryData.java +++ /dev/null @@ -1,65 +0,0 @@ -package de.ozgcloud.eingang.enterprise.entry; - -import java.util.List; - -import com.fasterxml.jackson.annotation.JsonProperty; - -import lombok.Builder; -import lombok.Getter; -import lombok.extern.jackson.Jacksonized; - -@Builder -@Getter -@Jacksonized -public class EntryData { - - private ControlData control; - private List<EntryFormDataItem> formData; - - @Builder - @Getter - @Jacksonized - public static class ControlData { - private String transactionId; - private String zustaendigeStelle; - private String[] leikaIds; - private ResultEndpoint resultEndpoint; - private String formId; - @JsonProperty("name") - private String formName; - private Servicekonto serviceKonto; - - private Representations representations; - - @Builder - @Getter - @Jacksonized - public static class ResultEndpoint { - private String address; - } - - @Builder - @Getter - @Jacksonized - public static class Representations { - private String formData; - private String formDataModell; - } - } - - @Builder - @Getter - @Jacksonized - public static class Servicekonto { - private String type; - private PostfachAddress postfachAddress; - } - - @Builder - @Getter - @Jacksonized - public static class PostfachAddress { - private String identifier; - private String type; - } -} diff --git a/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryDataMapper.java b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryDataMapper.java deleted file mode 100644 index 1c2c5340..00000000 --- a/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryDataMapper.java +++ /dev/null @@ -1,34 +0,0 @@ -package de.ozgcloud.eingang.enterprise.entry; - -import java.io.IOException; -import java.io.InputStream; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import com.fasterxml.jackson.databind.ObjectMapper; - -import de.ozgcloud.eingang.common.formdata.FormData; - -@Component -class EntryDataMapper { - - @Autowired - private ObjectMapper objectMapper; - @Autowired - private FormDataMapper formDataMapper; - - public FormData mapEntryData(InputStream request) { - return formDataMapper.mapEntryData(readRequest(request)); - } - - EntryData readRequest(InputStream request) { - try { - return objectMapper.readValue(request, EntryData.class); - } catch (IOException e) { - throw new ReadingRequestException(e); - } - - } - -} diff --git a/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryFormDataField.java b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryFormDataField.java deleted file mode 100644 index 7a7623d4..00000000 --- a/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryFormDataField.java +++ /dev/null @@ -1,48 +0,0 @@ -package de.ozgcloud.eingang.enterprise.entry; - -import java.time.LocalDate; -import java.util.Objects; - -import org.apache.commons.lang3.StringUtils; - -import lombok.Builder; -import lombok.Getter; -import lombok.ToString; -import lombok.extern.jackson.Jacksonized; - -@Builder -@Getter -@Jacksonized -@ToString(onlyExplicitlyIncluded = true) -public class EntryFormDataField implements EntryFormDataItem { - - private String name; - @ToString.Include - private String label; - - private String stringValue; - private Boolean booleanValue; - private Number numberValue; - private LocalDate dateValue; - - @Override - public boolean isFormField() { - return true; - } - - public Object getValue() { - if (StringUtils.isNotBlank(stringValue)) { - return stringValue; - } - if (Objects.nonNull(booleanValue)) { - return booleanValue; - } - if (Objects.nonNull(numberValue)) { - return numberValue; - } - if (Objects.nonNull(dateValue)) { - return dateValue; - } - return null; - } -} diff --git a/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryFormDataItem.java b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryFormDataItem.java deleted file mode 100644 index c2c318fd..00000000 --- a/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryFormDataItem.java +++ /dev/null @@ -1,21 +0,0 @@ -package de.ozgcloud.eingang.enterprise.entry; - -import com.fasterxml.jackson.annotation.JsonSubTypes; -import com.fasterxml.jackson.annotation.JsonSubTypes.Type; -import com.fasterxml.jackson.annotation.JsonTypeInfo; -import com.fasterxml.jackson.annotation.JsonTypeInfo.Id; - -@JsonTypeInfo(use = Id.DEDUCTION) -@JsonSubTypes({ @Type(EntryFormDataField.class), @Type(EntryFormDataSubForm.class) }) -public interface EntryFormDataItem { - String getName(); - String getLabel(); - - default boolean isSubForm() { - return false; - } - - default boolean isFormField() { - return false; - } -} diff --git a/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryFormDataSubForm.java b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryFormDataSubForm.java deleted file mode 100644 index 402f2bc1..00000000 --- a/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryFormDataSubForm.java +++ /dev/null @@ -1,28 +0,0 @@ -package de.ozgcloud.eingang.enterprise.entry; - -import java.util.List; - -import lombok.Builder; -import lombok.Getter; -import lombok.Singular; -import lombok.ToString; -import lombok.extern.jackson.Jacksonized; - -@Builder -@Getter -@Jacksonized -@ToString(onlyExplicitlyIncluded = true) -public class EntryFormDataSubForm implements EntryFormDataItem { - - private String name; - @ToString.Include - private String label; - - @Singular - private List<EntryFormDataItem> formItems; - - @Override - public boolean isSubForm() { - return true; - } -} diff --git a/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryResponse.java b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryResponse.java deleted file mode 100644 index 840df7a6..00000000 --- a/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryResponse.java +++ /dev/null @@ -1,23 +0,0 @@ -package de.ozgcloud.eingang.enterprise.entry; - -import java.time.ZonedDateTime; - -import lombok.Builder; -import lombok.Getter; - -@Builder -@Getter -class EntryResponse { - - private String transactionId; - private ResponseVorgang vorgang; - - @Builder - @Getter - static class ResponseVorgang { - private String vorgangId; - private String vorgangNummer; - private String status; - private ZonedDateTime statusSince; - } -} diff --git a/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/FormDataMapper.java b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/FormDataMapper.java deleted file mode 100644 index b671d184..00000000 --- a/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/FormDataMapper.java +++ /dev/null @@ -1,110 +0,0 @@ -package de.ozgcloud.eingang.enterprise.entry; - -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Optional; -import java.util.stream.Collectors; - -import org.apache.commons.lang3.tuple.Pair; -import org.mapstruct.Mapper; -import org.mapstruct.Mapping; - -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.FormData.Representations; -import de.ozgcloud.eingang.common.formdata.FormHeader; -import de.ozgcloud.eingang.common.formdata.PostfachAddressIdentifier; -import de.ozgcloud.eingang.common.formdata.ServiceKonto.PostfachAddress; -import de.ozgcloud.eingang.common.formdata.StringBasedIdentifier; -import de.ozgcloud.eingang.common.formdata.ZustaendigeStelle; - -@Mapper -public interface FormDataMapper { - - public static final String VALUE_KEY = "value"; - public static final String LABEL_KEY = "label"; - - @Mapping(target = "antragsteller", ignore = true) - @Mapping(target = "attachment", ignore = true) - @Mapping(target = "attachments", ignore = true) - @Mapping(target = "numberOfAttachments", ignore = true) - @Mapping(target = "representation", ignore = true) - @Mapping(target = "representations", ignore = true) - @Mapping(target = "numberOfRepresentations", ignore = true) - - @Mapping(target = "id", ignore = true) - @Mapping(target = "header", source = "control") - - @Mapping(target = "zustaendigeStelle", source = "control.zustaendigeStelle") - FormData mapEntryData(EntryData entryData); - - default <T> Optional<T> mapOptional(T obj) { - return Optional.ofNullable(obj); - } - - @Mapping(target = "vorgangNummer", ignore = true) - @Mapping(target = "createdAt", ignore = true) - @Mapping(target = "channel", constant = "B2G") - @Mapping(target = "formEngineName", constant = "A12") // TODO - @Mapping(target = "requestId", source = "transactionId") - @Mapping(target = "sender", ignore = true) // TODO fill from authentication - @Mapping(target = "serviceKonto.postfachAddresses", ignore = true) - FormHeader mapHeader(EntryData.ControlData controlData); - - @Mapping(target = "primaryFormDataPdfRepresentation", ignore = true) - @Mapping(target = "primaryFormDataRepresentation", source = "formData") - Representations mapRepresentations(EntryData.ControlData.Representations representations); - - default ZustaendigeStelle fromId(String organisationsEinheitenId) { - return ZustaendigeStelle.builder().organisationseinheitenId(organisationsEinheitenId).build(); - } - - default Map<String, Object> mapFormItems(List<EntryFormDataItem> items) { - return items.stream().map(item -> Pair.of(item.getName(), - item.isFormField() ? mapFormField((EntryFormDataField) item) : mapSubForm((EntryFormDataSubForm) item))) - .collect(Collectors.toMap(Pair::getKey, Pair::getValue)); - } - - default Map<String, Object> mapFormField(EntryFormDataField field) { - var map = new HashMap<String, Object>(); - map.put(LABEL_KEY, field.getLabel()); - map.put(VALUE_KEY, field.getValue()); - - return Collections.unmodifiableMap(map); - } - - default Map<String, Object> mapSubForm(EntryFormDataSubForm subForm) { - var map = new HashMap<String, Object>(); - map.put(LABEL_KEY, subForm.getLabel()); - map.put(VALUE_KEY, mapFormItems(subForm.getFormItems())); - - return Collections.unmodifiableMap(map); - } - - default PostfachAddress map(de.ozgcloud.eingang.enterprise.entry.EntryData.PostfachAddress address) { - return PostfachAddress.builder() - .version("1") - .type(toNumericType(address.getType())) - .identifier(StringBasedIdentifier.builder().postfachId(address.getIdentifier()).build()) - .build(); - } - - default int toNumericType(String type) { - switch (type) { - case "privat": - return 0; - case "unternehmen": - return 1; - case "behoerde": - return 2; - default: - return -1; - } - } - - default PostfachAddressIdentifier map(String value) { - return StringBasedIdentifier.builder().postfachId(value).build(); - } - -} diff --git a/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/ReadingRequestException.java b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/ReadingRequestException.java deleted file mode 100644 index 3705dd85..00000000 --- a/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/ReadingRequestException.java +++ /dev/null @@ -1,14 +0,0 @@ -package de.ozgcloud.eingang.enterprise.entry; - -import de.ozgcloud.common.errorhandling.TechnicalException; - -public class ReadingRequestException extends TechnicalException { - - private static final String MESSAGE = "Error reading Request."; - - public ReadingRequestException(Exception cause) { - super(MESSAGE, cause); - - } - -} diff --git a/enterprise-adapter/src/main/resources/application-local.yml b/enterprise-adapter/src/main/resources/application-local.yml deleted file mode 100644 index df74b44c..00000000 --- a/enterprise-adapter/src/main/resources/application-local.yml +++ /dev/null @@ -1,24 +0,0 @@ -logging: - config: classpath:log4j2-local.xml - -server: - port: 9294 - error: - include-stacktrace: always - -management: - server: - port: 0 - endpoints: - enabled-by-default: false - -ozgcloud: - adapter: - targetVorgangManagerName: local - fallbackStrategy: DENY - -grpc: - client: - vorgang-manager-local: - address: static://127.0.0.1:9090 - negotiationType: PLAINTEXT \ No newline at end of file diff --git a/enterprise-adapter/src/main/resources/application.yml b/enterprise-adapter/src/main/resources/application.yml deleted file mode 100644 index 57600862..00000000 --- a/enterprise-adapter/src/main/resources/application.yml +++ /dev/null @@ -1,44 +0,0 @@ -logging: - level: - ROOT: WARN - '[de.ozgcloud]': INFO - -spring: - servlet: - multipart: - max-file-size: 124MB - max-request-size: 256MB - file-size-threshold: 10MB - -server: - http2: - enabled: true - error: - include-stacktrace: never - -management: - server: - port: 8081 - health: - livenessState: - enabled: true - readinessState: - enabled: true - endpoint: - health: - group: - exploratory: - include: livenessState,readinessState,ping - show-details: always - probes: - enabled: true - prometheus: - enabled: true - endpoints: - web: - exposure: - include: health,prometheus - -ozgcloud: - adapter: - routingStrategy: SINGLE \ No newline at end of file diff --git a/enterprise-adapter/src/main/resources/log4j2-local.xml b/enterprise-adapter/src/main/resources/log4j2-local.xml deleted file mode 100644 index 5d7001e1..00000000 --- a/enterprise-adapter/src/main/resources/log4j2-local.xml +++ /dev/null @@ -1,14 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<configuration> - <Appenders> - <Console name="CONSOLE" target="SYSTEM_OUT"> - <PatternLayout pattern="[%-5level] %c{1.} %msg%n"/> - </Console> - </Appenders> - - <Loggers> - <Root level="WARN"> - <appender-ref ref="CONSOLE" /> - </Root> - </Loggers> -</configuration> \ No newline at end of file diff --git a/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/ControlDataTestFactory.java b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/ControlDataTestFactory.java deleted file mode 100644 index ece8a0aa..00000000 --- a/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/ControlDataTestFactory.java +++ /dev/null @@ -1,36 +0,0 @@ -package de.ozgcloud.eingang.enterprise.entry; - -import de.ozgcloud.eingang.enterprise.entry.EntryData.ControlData; -import de.ozgcloud.eingang.enterprise.entry.EntryData.ControlData.Representations; -import de.ozgcloud.eingang.enterprise.entry.EntryData.ControlData.ResultEndpoint; - -public class ControlDataTestFactory { - - public static final String TRANSACTION_ID = "4e7a6ae7-4d0f-444d-8971-7cfc051c9924"; - public static final String ZUSTAENDIGE_STELLE = "248240886"; - public static final String[] LEIKA_IDS = new String[] { "99108011000000", "99108011153000" }; - - public static final String RESULT_ENDPOIN_ADDRESS = "https://idalabs.de/backend/api"; - - public static final String FORM_ID = "KFAS_LIVE_KI_10_Haltverbot_befristet"; - public static final String NAME = "Anmeldung zur Einrichtung einer zeitlich befristeten Haltverbotszone gem. § 45 Abs. 1 Straßenverkehrsordnung (StVO)"; - - public static ControlData create() { - return createBuilder().build(); - } - - public static ControlData.ControlDataBuilder createBuilder() { - return ControlData.builder() - .transactionId(TRANSACTION_ID) - .zustaendigeStelle(ZUSTAENDIGE_STELLE) - .leikaIds(LEIKA_IDS) - .resultEndpoint(ResultEndpoint.builder().address(RESULT_ENDPOIN_ADDRESS).build()) - .formId(FORM_ID) - .formName(NAME) - .serviceKonto(ServicekontoTestFactory.create()) - .representations(Representations.builder() - .formData(FormDataControlTestFactory.PRIMARY_FORM_DATA_REPRESENTATION) - .formDataModell(FormDataControlTestFactory.FORM_DATA_MODELL) - .build()); - } -} diff --git a/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EnterpriseEntryITCase.java b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EnterpriseEntryITCase.java deleted file mode 100644 index edde8e25..00000000 --- a/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EnterpriseEntryITCase.java +++ /dev/null @@ -1,106 +0,0 @@ -package de.ozgcloud.eingang.enterprise.entry; - -import static org.assertj.core.api.Assertions.*; -import static org.mockito.ArgumentMatchers.*; -import static org.mockito.Mockito.*; -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; - -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mockito.ArgumentCaptor; -import org.mockito.Captor; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; -import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.http.MediaType; -import org.springframework.mock.web.MockMultipartFile; -import org.springframework.test.context.ActiveProfiles; -import org.springframework.test.web.servlet.MockMvc; -import org.springframework.test.web.servlet.ResultActions; - -import de.ozgcloud.common.test.ITCase; -import de.ozgcloud.common.test.TestUtils; -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.router.VorgangService; -import lombok.SneakyThrows; - -@ITCase -@AutoConfigureMockMvc -@ActiveProfiles({ "itcase", "local" }) -class EnterpriseEntryITCase { - - @MockBean - private VorgangService vorgangService; - - @Autowired - private MockMvc mockMvc; - - @Test - void shouldCallVorgangService() { - doPostRequest(); - - verify(vorgangService).createVorgang(any()); - } - - @SneakyThrows - private ResultActions doPostRequest() { - return mockMvc.perform(multipart("/antrag") - .file(new MockMultipartFile("formData", "simple.json", MediaType.APPLICATION_JSON.toString(), - TestUtils.loadTextFile("request/simple.json").getBytes()))) - .andExpect(status().is2xxSuccessful()); - } - - @Nested - class A12Entry { - - @Captor - private ArgumentCaptor<FormData> formDataCaptor; - - @Test - void shouldCreateVorgang() { - var formData = doPostRequest(); - - assertThat(formData).isNotNull(); - } - - @Test - void shouldHaveNoOfRepresentations() { - var formData = doPostRequest(); - - assertThat(formData.getNumberOfRepresentations()).isEqualTo(2); - } - - @Test - void shouldHaveFormData() { - var formData = doPostRequest(); - - assertThat(formData.getFormData()).containsKeys("Haushaltsjahr", "Anlage_1", "Anlage_2"); - } - - @Test - void shouldHaveMukServiceKonto() { - var formData = doPostRequest(); - - assertThat(formData.getHeader().getServiceKonto().getType()).isEqualTo("MUK"); - } - - @SneakyThrows - private FormData doPostRequest() { - mockMvc.perform(multipart("/antrag") - .file(buildJsonFileMock("formData", "a12_entry.json")) - .file(buildJsonFileMock("representation", "document_JaS.json")) - .file(buildJsonFileMock("representation", "jugendsozialarbeit_an_schulen-DM.json"))) - .andExpect(status().is2xxSuccessful()); - - verify(vorgangService).createVorgang(formDataCaptor.capture()); - return formDataCaptor.getValue(); - } - - } - - private MockMultipartFile buildJsonFileMock(String name, String origName) { - var fileToLoad = "request/%s".formatted(origName); - return new MockMultipartFile(name, origName, MediaType.APPLICATION_JSON.toString(), TestUtils.loadTextFile(fileToLoad).getBytes()); - } -} diff --git a/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryControllerTest.java b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryControllerTest.java deleted file mode 100644 index 5d1515ab..00000000 --- a/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryControllerTest.java +++ /dev/null @@ -1,248 +0,0 @@ -package de.ozgcloud.eingang.enterprise.entry; - -import static org.assertj.core.api.Assertions.*; -import static org.assertj.core.api.InstanceOfAssertFactories.*; -import static org.mockito.ArgumentMatchers.*; -import static org.mockito.Mockito.*; -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; - -import java.io.InputStream; -import java.util.Collections; -import java.util.List; - -import org.apache.commons.io.IOUtils; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mockito.ArgumentCaptor; -import org.mockito.Captor; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.Spy; -import org.springframework.core.io.Resource; -import org.springframework.mock.web.MockMultipartFile; -import org.springframework.test.web.servlet.MockMvc; -import org.springframework.test.web.servlet.ResultActions; -import org.springframework.test.web.servlet.setup.MockMvcBuilders; - -import de.ozgcloud.common.test.TestUtils; -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; -import de.ozgcloud.eingang.common.formdata.FormHeader; -import de.ozgcloud.eingang.common.formdata.FormHeaderTestFactory; -import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; -import de.ozgcloud.eingang.common.vorgang.VorgangNummerSupplier; -import de.ozgcloud.eingang.semantik.SemantikAdapter; -import lombok.SneakyThrows; - -class EntryControllerTest { - - @Spy - @InjectMocks - private EntryController controller; - - @Mock - private EntryDataMapper mapper; - @Mock - private SemantikAdapter semantikAdapter; - @Mock - private VorgangNummerSupplier vorgangNummerSupplier; - - private MockMvc mockMvc; - - @BeforeEach - void init() { - mockMvc = MockMvcBuilders.standaloneSetup(controller).build(); - } - - @Nested - class ReceiveAntrag { - - private final FormHeader header = FormHeaderTestFactory.createBuilder().vorgangNummer(null).build(); - private final FormData formData = FormDataTestFactory.createBuilder().header(header).clearAttachments().clearRepresentations().build(); - - @Captor - private ArgumentCaptor<InputStream> streamCaptor; - @Captor - private ArgumentCaptor<FormData> formDataCaptor; - - private final EntryResponse response = EntryResponseTestFactory.create(); - - @BeforeEach - void init() { - when(mapper.mapEntryData(any())).thenReturn(formData); - doReturn(response).when(controller).buildResponse(any(), any()); - when(vorgangNummerSupplier.get()).thenReturn(FormHeaderTestFactory.VORGANG_NUMMER); - } - - @Test - @SneakyThrows - void shouldReturnAccepted() { - doPostRequest().andExpect(status().isAccepted()); - } - - @Test - @SneakyThrows - void shouldCallMapper() { - var request = TestUtils.loadTextFile("request/simple.json"); - - doPostRequest(); - - verify(mapper).mapEntryData(streamCaptor.capture()); - var inputBytes = IOUtils.readFully(streamCaptor.getValue(), request.getBytes().length); - assertThat(inputBytes).hasSameSizeAs(request.getBytes()).isEqualTo(request.getBytes()); - } - - @Test - void shouldCallSemantikAdapter() { - doPostRequest(); - - verify(semantikAdapter).processFormData(notNull()); - } - - @Test - void shouldSetVorgangNummer() { - doPostRequest(); - - verify(semantikAdapter).processFormData(formDataCaptor.capture()); - assertThat(formDataCaptor.getValue().getHeader().getVorgangNummer()).isEqualTo(FormHeaderTestFactory.VORGANG_NUMMER); - } - - @Test - @SneakyThrows - void shouldReturnResponse() { - var response = controller.receiveAntrag(mock(Resource.class), Collections.emptyList(), Collections.emptyList()); - - assertThat(response).isSameAs(this.response); - } - - @SneakyThrows - private ResultActions doPostRequest() { - return mockMvc.perform(multipart("/antrag") - .file(new MockMultipartFile("formData", TestUtils.loadTextFile("request/simple.json").getBytes()))) - .andExpect(status().is2xxSuccessful()); - } - - @Nested - class WithRepresentations { - - @Captor - private ArgumentCaptor<FormData> formDataCaptor; - - @Test - void shouldAddRepresentations() { - var formData = doPostRequest(); - - assertThat(formData.getRepresentations()).hasSize(2); - } - - @Test - void shouldSetNumberOfRepresentations() { - var formData = doPostRequest(); - - assertThat(formData.getNumberOfRepresentations()).isEqualTo(2); - } - - @SneakyThrows - private FormData doPostRequest() { - mockMvc.perform(multipart("/antrag") - .file(new MockMultipartFile("formData", TestUtils.loadTextFile("request/a12_entry.json").getBytes())) - .file(new MockMultipartFile("representation", TestUtils.loadTextFile("request/document_JaS.json").getBytes())) - .file(new MockMultipartFile("representation", - TestUtils.loadTextFile("request/jugendsozialarbeit_an_schulen-DM.json").getBytes()))) - .andExpect(status().is2xxSuccessful()); - - verify(semantikAdapter).processFormData(formDataCaptor.capture()); - return formDataCaptor.getValue(); - } - } - - @Nested - class WithAttachments { - @Test - void shouldAddAttachments() { - var formData = doPostRequest(); - - assertThat(formData.getAttachments()).hasSize(1).first().extracting(IncomingFileGroup::getFiles).asInstanceOf(LIST).hasSize(1); - } - - @Test - void shouldSetNumberOfAttachments() { - var formData = doPostRequest(); - - assertThat(formData.getNumberOfAttachments()).isEqualTo(1); - } - - @SneakyThrows - private FormData doPostRequest() { - mockMvc.perform(multipart("/antrag") - .file(new MockMultipartFile("formData", TestUtils.loadTextFile("request/a12_entry.json").getBytes())) - .file(new MockMultipartFile("attachment", TestUtils.loadTextFile("request/document_JaS.json").getBytes()))) - .andExpect(status().is2xxSuccessful()); - - verify(semantikAdapter).processFormData(formDataCaptor.capture()); - return formDataCaptor.getValue(); - } - - } - - } - - @Nested - class TestAddAttachments { - - private MockMultipartFile file = new MockMultipartFile("attachment", TestUtils.loadTextFile("request/document_JaS.json").getBytes()); - - @Test - void shouldIgnoreNullCollection() { - var formData = FormDataTestFactory.create(); - - var result = controller.addAttachments(null, formData); - - assertThat(result).isSameAs(formData); - } - - @Test - void shouldIgnoreEmptyCollection() { - var formData = FormDataTestFactory.create(); - - var result = controller.addAttachments(Collections.emptyList(), formData); - - assertThat(result).isSameAs(formData); - } - - @Test - void shouldAddToSonstigeGroup() { - var formData = FormDataTestFactory.createBuilder().clearAttachments().build(); - - var result = controller.addAttachments(List.of(file), formData); - - assertThat(result.getAttachments()).hasSize(1).first().extracting(IncomingFileGroup::getName).isEqualTo("Sonstige"); - } - - @Test - void shouldAddFiles() { - var formData = FormDataTestFactory.createBuilder().clearAttachments().build(); - - var result = controller.addAttachments(List.of(file), formData); - - assertThat(result.getAttachments()).hasSize(1).first().extracting(IncomingFileGroup::getFiles).asInstanceOf(LIST).hasSize(1); - } - } - - @Nested - class BuildResponse { - - @Test - @SneakyThrows - void shouldCreateResponse() { - var response = controller.buildResponse(FormDataTestFactory.create(), ResponseVorgangTestFactory.VORGANG_ID); - - assertThat(response).usingRecursiveComparison() - .ignoringFields("vorgang.statusSince") - .isEqualTo(EntryResponseTestFactory.create()); - } - } - -} diff --git a/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryDataMapperTest.java b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryDataMapperTest.java deleted file mode 100644 index 797f0ec7..00000000 --- a/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryDataMapperTest.java +++ /dev/null @@ -1,84 +0,0 @@ -package de.ozgcloud.eingang.enterprise.entry; - -import static org.assertj.core.api.Assertions.*; -import static org.mockito.ArgumentMatchers.*; -import static org.mockito.Mockito.*; - -import java.io.InputStream; - -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.Mockito; -import org.mockito.Spy; - -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; - -import de.ozgcloud.common.test.TestUtils; -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; -import lombok.SneakyThrows; - -class EntryDataMapperTest { - - @Spy - @InjectMocks - private EntryDataMapper mapper; - @Mock - private FormDataMapper formDataMapper; - - @Spy - private ObjectMapper objectMapper = new ObjectMapper() - .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, true) - .registerModule(new JavaTimeModule()); - - @Nested - class TestMappingEntryData { - - private InputStream jsonInput = TestUtils.loadFile("request/simple.json"); - - @Nested - class TestReadRequest { - @Test - void shouldReadJson() { - var read = mapper.readRequest(jsonInput); - - assertThat(read).usingRecursiveComparison() - .isEqualTo(EntryDataTestFactory.createBuilder().control(ControlDataTestFactory.createBuilder().representations(null).build()) - .build()); - } - } - - @Test - void shouldReadRequest() { - mapper.mapEntryData(jsonInput); - - verify(mapper).readRequest(jsonInput); - } - - @Test - @SneakyThrows - void shouldCallFormDataMapper() { - var entryData = EntryDataTestFactory.create(); - doReturn(entryData).when(objectMapper).readValue(any(InputStream.class), Mockito.<Class<EntryData>>any()); - - mapper.mapEntryData(jsonInput); - - verify(formDataMapper).mapEntryData(entryData); - } - - @Test - void shouldReturnMappedResult() { - FormData formData = FormDataTestFactory.create(); - when(formDataMapper.mapEntryData(any())).thenReturn(formData); - - var result = mapper.mapEntryData(jsonInput); - - assertThat(result).isSameAs(formData); - } - } - -} diff --git a/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryDataTestFactory.java b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryDataTestFactory.java deleted file mode 100644 index 855fa290..00000000 --- a/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryDataTestFactory.java +++ /dev/null @@ -1,14 +0,0 @@ -package de.ozgcloud.eingang.enterprise.entry; - -public class EntryDataTestFactory { - - public static EntryData create() { - return createBuilder().build(); - } - - public static EntryData.EntryDataBuilder createBuilder() { - return EntryData.builder() - .control(ControlDataTestFactory.create()) - .formData(EntryFormDataTestFactory.create()); - } -} diff --git a/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryFormDataTestFactory.java b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryFormDataTestFactory.java deleted file mode 100644 index 26ca19bb..00000000 --- a/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryFormDataTestFactory.java +++ /dev/null @@ -1,70 +0,0 @@ -package de.ozgcloud.eingang.enterprise.entry; - -import static de.ozgcloud.eingang.enterprise.entry.FormDataMapper.*; - -import java.time.LocalDate; -import java.util.List; -import java.util.Map; - -public class EntryFormDataTestFactory { - - public static final String FORM_FIELD_NAME = "field_name"; - public static final String FORM_FIELD_VALUE = "field_string_value"; - public static final String FORM_FIELD_LABEL = "field_label"; - - public static final String SUB_FORM_NAME = "antragsteller"; - public static final String SUB_FORM_LABEL = "Antragstellende Person"; - - public static final String SUB_FORM_STRING_FIELD_NAME = "lastname"; - public static final String SUB_FORM_STRING_FIELD_LABEL = "Nachname"; - public static final String SUB_FORM_STRING_FIELD_VALUE = "Täst"; - - public static final String SUB_FORM_NUMBER_FIELD_NAME = "age"; - public static final String SUB_FORM_NUMBER_FIELD_LABEL = "Alter"; - public static final Number SUB_FORM_NUMBER_FIELD_VALUE = 5.5; - - public static final String SUB_FORM_DATE_FIELD_NAME = "birthday"; - public static final String SUB_FORM_DATE_FIELD_LABEL = "Geburtsdatum"; - public static final LocalDate SUB_FORM_DATE_FIELD_VALUE = LocalDate.parse("2017-05-01"); - - public static final String SUB_FORM_BOOLEAN_FIELD_NAME = "geprüft"; - public static final String SUB_FORM_BOOLEAN_FIELD_LABEL = "Geprüft"; - public static final Boolean SUB_FORM_BOOLEAN_FIELD_VALUE = true; - - public static List<EntryFormDataItem> create() { - return List.of( - EntryFormDataField.builder().name(FORM_FIELD_NAME).label(FORM_FIELD_LABEL).stringValue(FORM_FIELD_VALUE).build(), - EntryFormDataSubForm.builder().name(SUB_FORM_NAME).label(SUB_FORM_LABEL) - .formItem(EntryFormDataField.builder() - .name(SUB_FORM_STRING_FIELD_NAME) - .label(SUB_FORM_STRING_FIELD_LABEL) - .stringValue(SUB_FORM_STRING_FIELD_VALUE) - .build()) - .formItem(EntryFormDataField.builder() - .name(SUB_FORM_NUMBER_FIELD_NAME) - .label(SUB_FORM_NUMBER_FIELD_LABEL) - .numberValue(SUB_FORM_NUMBER_FIELD_VALUE) - .build()) - .formItem(EntryFormDataField.builder() - .name(SUB_FORM_DATE_FIELD_NAME) - .label(SUB_FORM_DATE_FIELD_LABEL) - .dateValue(SUB_FORM_DATE_FIELD_VALUE) - .build()) - .formItem(EntryFormDataField.builder() - .name(SUB_FORM_BOOLEAN_FIELD_NAME) - .label(SUB_FORM_BOOLEAN_FIELD_LABEL) - .booleanValue(SUB_FORM_BOOLEAN_FIELD_VALUE) - .build()) - .build()); - } - - public static Map<String, Object> createAsFormDataMap() { - return Map.of( - FORM_FIELD_NAME, Map.of(LABEL_KEY, FORM_FIELD_LABEL, VALUE_KEY, FORM_FIELD_VALUE), - SUB_FORM_NAME, Map.of(LABEL_KEY, SUB_FORM_LABEL, VALUE_KEY, Map.of( - SUB_FORM_STRING_FIELD_NAME, Map.of(LABEL_KEY, SUB_FORM_STRING_FIELD_LABEL, VALUE_KEY, SUB_FORM_STRING_FIELD_VALUE), - SUB_FORM_NUMBER_FIELD_NAME, Map.of(LABEL_KEY, SUB_FORM_NUMBER_FIELD_LABEL, VALUE_KEY, SUB_FORM_NUMBER_FIELD_VALUE), - SUB_FORM_DATE_FIELD_NAME, Map.of(LABEL_KEY, SUB_FORM_DATE_FIELD_LABEL, VALUE_KEY, SUB_FORM_DATE_FIELD_VALUE), - SUB_FORM_BOOLEAN_FIELD_NAME, Map.of(LABEL_KEY, SUB_FORM_BOOLEAN_FIELD_LABEL, VALUE_KEY, SUB_FORM_BOOLEAN_FIELD_VALUE)))); - } -} diff --git a/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryResponseTestFactory.java b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryResponseTestFactory.java deleted file mode 100644 index b72c5b96..00000000 --- a/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryResponseTestFactory.java +++ /dev/null @@ -1,16 +0,0 @@ -package de.ozgcloud.eingang.enterprise.entry; - -import de.ozgcloud.eingang.common.formdata.FormHeaderTestFactory; - -class EntryResponseTestFactory { - - static final EntryResponse create() { - return createBuilder().build(); - } - - static final EntryResponse.EntryResponseBuilder createBuilder() { - return EntryResponse.builder() - .transactionId(FormHeaderTestFactory.REQUEST_ID) - .vorgang(ResponseVorgangTestFactory.create()); - } -} diff --git a/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/FormDataControlTestFactory.java b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/FormDataControlTestFactory.java deleted file mode 100644 index fe7e1a06..00000000 --- a/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/FormDataControlTestFactory.java +++ /dev/null @@ -1,25 +0,0 @@ -package de.ozgcloud.eingang.enterprise.entry; - -import java.util.Optional; - -import de.ozgcloud.eingang.common.formdata.FormData.FormDataControl; -import de.ozgcloud.eingang.common.formdata.FormData.Representations; - -public class FormDataControlTestFactory { - - public static final String PRIMARY_FORM_DATA_REPRESENTATION = "document_JaS.json"; - public static final String PRIMARY_FORM_DATA_PDF_REPRESENTATION = "document.pdf"; - public static final String FORM_DATA_MODELL = "jugendsozialarbeit_an_schulen-DM.json"; - - public static FormDataControl create() { - return createBuilder().build(); - } - - public static FormDataControl.FormDataControlBuilder createBuilder() { - return FormDataControl.builder() - .representations(Optional.of(Representations.builder() - .primaryFormDataRepresentation(PRIMARY_FORM_DATA_REPRESENTATION) - .formDataModell(FORM_DATA_MODELL) - .build())); - } -} diff --git a/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/FormDataMapperTest.java b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/FormDataMapperTest.java deleted file mode 100644 index 3b4d6691..00000000 --- a/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/FormDataMapperTest.java +++ /dev/null @@ -1,36 +0,0 @@ -package de.ozgcloud.eingang.enterprise.entry; - -import static org.assertj.core.api.Assertions.*; - -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mapstruct.factory.Mappers; -import org.mockito.InjectMocks; - -class FormDataMapperTest { - - @InjectMocks - private FormDataMapper mapper = Mappers.getMapper(FormDataMapper.class); - - @Nested - class TestMapFormItems { - - @Test - void shouldMapFormItems() { - var mapped = mapper.mapFormItems(EntryFormDataTestFactory.create()); - - assertThat(mapped).usingRecursiveComparison().isEqualTo(EntryFormDataTestFactory.createAsFormDataMap()); - } - } - - @Nested - class TestMapRepresentations { - @Test - void shouldMapRepresentations() { - var mapped = mapper.mapRepresentations(ControlDataTestFactory.create().getRepresentations()); - - assertThat(mapped).usingRecursiveComparison().isEqualTo(FormDataControlTestFactory.create().getRepresentations().get()); - } - } - -} diff --git a/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/ResponseVorgangTestFactory.java b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/ResponseVorgangTestFactory.java deleted file mode 100644 index 02164293..00000000 --- a/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/ResponseVorgangTestFactory.java +++ /dev/null @@ -1,24 +0,0 @@ -package de.ozgcloud.eingang.enterprise.entry; - -import java.time.ZonedDateTime; -import java.util.UUID; - -import de.ozgcloud.eingang.common.formdata.FormHeaderTestFactory; -import de.ozgcloud.eingang.enterprise.entry.EntryResponse.ResponseVorgang; - -public class ResponseVorgangTestFactory { - - final static String VORGANG_ID = UUID.randomUUID().toString(); - - static ResponseVorgang create() { - return createBuilder().build(); - } - - static ResponseVorgang.ResponseVorgangBuilder createBuilder() { - return ResponseVorgang.builder() - .vorgangId(VORGANG_ID) - .vorgangNummer(FormHeaderTestFactory.VORGANG_NUMMER) - .status("NEU") - .statusSince(ZonedDateTime.now()); - } -} diff --git a/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/ServicekontoTestFactory.java b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/ServicekontoTestFactory.java deleted file mode 100644 index b8c62f7b..00000000 --- a/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/ServicekontoTestFactory.java +++ /dev/null @@ -1,25 +0,0 @@ -package de.ozgcloud.eingang.enterprise.entry; - -import de.ozgcloud.eingang.enterprise.entry.EntryData.PostfachAddress; -import de.ozgcloud.eingang.enterprise.entry.EntryData.Servicekonto; - -public class ServicekontoTestFactory { - - private static final String TYPE = "OSI"; - private static final String IDENTIFIER = "76f1ae54-1cf1-4ae1-c0b4-08d950d6cfc0"; - private static final String POSTFACH_TYPE = "privat"; - - public static Servicekonto create() { - return createBuilder().build(); - } - - public static Servicekonto.ServicekontoBuilder createBuilder() { - return Servicekonto.builder() - .type(TYPE) - .postfachAddress(PostfachAddress.builder() - .identifier(IDENTIFIER) - .type(POSTFACH_TYPE) - .build()); - - } -} diff --git a/enterprise-adapter/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension b/enterprise-adapter/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension deleted file mode 100644 index 79b126e6..00000000 --- a/enterprise-adapter/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension +++ /dev/null @@ -1 +0,0 @@ -org.mockito.junit.jupiter.MockitoExtension \ No newline at end of file diff --git a/enterprise-adapter/src/test/resources/junit-platform.properties b/enterprise-adapter/src/test/resources/junit-platform.properties deleted file mode 100644 index 1cebb76d..00000000 --- a/enterprise-adapter/src/test/resources/junit-platform.properties +++ /dev/null @@ -1 +0,0 @@ -junit.jupiter.extensions.autodetection.enabled = true \ No newline at end of file diff --git a/enterprise-adapter/src/test/resources/request/a12_entry.json b/enterprise-adapter/src/test/resources/request/a12_entry.json deleted file mode 100644 index 553b82dc..00000000 --- a/enterprise-adapter/src/test/resources/request/a12_entry.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "control": { - "transactionId": "4e7a6ae7-4d0f-444d-8971-7cfc051c9924", - "zustaendigeStelle": "248240886", - "leikaIds": [ - "99108011000000", - "99108011153000" - ], - "resultEndpoint": { - "address": "https://idalabs.de/backend/api" - }, - "formId": "KFAS_LIVE_KI_10_Haltverbot_befristet", - "name": "Anmeldung zur Einrichtung einer zeitlich befristeten Haltverbotszone gem. § 45 Abs. 1 Straßenverkehrsordnung (StVO)", - "serviceKonto": { - "type": "MUK", - "postfachAddress": { - "identifier": "e155fcdc-a73e-4ae2-b148-b02e02331ebb", - "type": "unternehmen" - } - }, - "representations": { - "formData": "document_JaS.json", - "modell": "jugendsozialarbeit_an_schulen-DM.json" - } - }, - "formData": [] -} \ No newline at end of file diff --git a/enterprise-adapter/src/test/resources/request/document_JaS.json b/enterprise-adapter/src/test/resources/request/document_JaS.json deleted file mode 100644 index 1245a457..00000000 --- a/enterprise-adapter/src/test/resources/request/document_JaS.json +++ /dev/null @@ -1,99 +0,0 @@ -{ - "root": { - "Haushaltsjahr": "2024", - "Anlage_2": { - "Finanzierungsplan": { - "Insgesamt_Finanzierungsplan": 117450, - "Eigenmittel_von_Hundert": 1.5, - "Eigenmittel_Betrag": 1500, - "Zuwendungen_kirchlicher_Stellen": 0, - "Angabe_der_kirchlichen_Stelle": "-", - "Zuwendungen_Bezirk": 600, - "Beantragter_Zuschuss": 700, - "Erlaeuterungen_Finanzierungsplan": "Das passt doch schon so.", - "Zuwendung_kommunale": { - "Gemeinden": "Eselstadt", - "Zuwendung_Gemeinden": 100000, - "Landkreise": "Esellandkreis", - "Zuwendung_Landkreise": 10000 - }, - "Sonstige_oeffentliche_Mittel": { - "Angabe_Bewilligungstelle_sonsitge_oeffentl_Mittel": "Amt für Eselangelegenheiten", - "Betrag_sonsitge_oeffentl_Mittel": 5000 - }, - "Fremdmittel": { - "Angabe_Bewilligungstelle_Fremdmittel": "Eselförderverband", - "Betrag_Fremdmittel": 250 - } - }, - "Kostenplan": { - "Insgesamt_Kostenplan": 175003, - "Personalkosten_JaS": 100000, - "Personalkosten_Sonstige": 15000, - "Sachkosten": 60000, - "Sonstige_Kosten": 3, - "Erlaeuterungen_Kostenplan": "Eseltrainer sind eben teuer." - } - }, - "Angaben_Antragssteller": { - "Name_Bezeichnung": "Eselschule Eselstadt", - "Strasse_Hausnummer": "Eselweg 12", - "PLZ": "01234", - "Ort": "Eselstadt", - "Telefon": "01234-5678", - "Fax": "01234-5679", - "EMail": "esel@esel.esel", - "Verantwortlicher_Vertreter": "Eva Esel", - "Zustaendiger_Sachbearbeiter": "Miriam Maultier", - "Bankverbindung": { - "Kreditinstitut": "Eselbank", - "Kontoinhaber": "Eselschule Eselstadt", - "IBAN": "DE62500105179236738719", - "BIC": "TDLJCAC5JPS" - }, - "Zustaendiger_Spitzenverband": { - "Bezeichnung": "Schulverband für liebe Esel", - "Strasse_Hausnummer": "Eselstraße 5", - "PLZ": "01234", - "Ort": "Eselstadt" - } - }, - "Angaben_zum_Projekt": { - "Bezeichnung": "Wandern mit lieben Eseln", - "Beginn_der_Massnahme": "2024-03-01", - "Verantwortlicher_Sachbearbeiter": "Eduard Esel", - "Strasse_Hausnummer": "Eselallee 77", - "PLZ": "01234", - "Ort": "Eselstadt", - "Telefon": "01234-9876", - "Fax": "01234-9875", - "EMail": "esel2@esel.esel" - }, - "Anlage_1": { - "Personalkosten": [ - { - "Lfd_Nr": 1, - "Name": "Leon Lieblich", - "Berufsausbildung_Funktion": "Eseltrainer", - "Beschaeftigungszeitraum": "01/99-", - "Woechentliche_Arbeitszeit": 24, - "Regelarbeitszeit": 24, - "Entgeltgruppe": "E14", - "Jahresaufwand": 134000, - "Zuschuss": 32000 - }, - { - "Lfd_Nr": 2, - "Name": "Viktoria Vergnüglich", - "Berufsausbildung_Funktion": "Eseltrainerin", - "Beschaeftigungszeitraum": "01/2023-", - "Woechentliche_Arbeitszeit": 38.5, - "Regelarbeitszeit": 38.5, - "Entgeltgruppe": "E14", - "Jahresaufwand": 123000, - "Zuschuss": 32000 - } - ] - } - } -} \ No newline at end of file diff --git a/enterprise-adapter/src/test/resources/request/jugendsozialarbeit_an_schulen-DM.json b/enterprise-adapter/src/test/resources/request/jugendsozialarbeit_an_schulen-DM.json deleted file mode 100644 index 8d9d2511..00000000 --- a/enterprise-adapter/src/test/resources/request/jugendsozialarbeit_an_schulen-DM.json +++ /dev/null @@ -1,1279 +0,0 @@ -{ - "header": { - "id": "jugendsozialarbeit_an_schulen-DM", - "modelType": "document", - "modelVersion": "26.0.0", - "locales": [ - { - "code": "de" - } - ], - "annotations": [ - { - "name": "roles", - "value": "admin" - } - ], - "modelReferences": [] - }, - "content": { - "modelInfo": { - "name": "jugendsozialarbeit_an_schulen-DM" - }, - "modelConfig": { - "decimalSeparator": ".", - "timeZone": "UTC" - }, - "modelRoot": { - "rootGroups": [ - { - "type": "Group", - "id": "group_e6cca", - "name": "root", - "Group": { - "repeatability": 1, - "required": true, - "elements": [ - { - "type": "Field", - "id": "field_89587", - "name": "Haushaltsjahr", - "Field": { - "fieldType": { - "type": "DateFragmentType", - "DateFragmentType": { - "formatOfFragment": "yyyy" - } - }, - "label": [ - { - "locale": "de", - "text": "Haushaltsjahr" - } - ] - } - }, - { - "type": "Group", - "id": "group_49b20", - "name": "Angaben_Antragssteller", - "Group": { - "repeatability": 1, - "required": true, - "elements": [ - { - "type": "Field", - "id": "field_65687", - "name": "Name_Bezeichnung", - "Field": { - "fieldType": { - "type": "StringType" - }, - "label": [ - { - "locale": "de", - "text": "Name/Bezeichnung" - } - ], - "required": true - } - }, - { - "type": "Field", - "id": "field_4a6d0", - "name": "Strasse_Hausnummer", - "Field": { - "fieldType": { - "type": "StringType" - }, - "label": [ - { - "locale": "de", - "text": "Straße, Hausnummer" - } - ] - } - }, - { - "type": "Field", - "id": "field_b2e13", - "name": "PLZ", - "Field": { - "fieldType": { - "type": "StringType", - "StringType": { - "errorMessage": [ - { - "locale": "de", - "text": "Bitte geben Sie eine valide Postleitzahl an." - } - ], - "pattern": "[\\d]{5}" - } - }, - "label": [ - { - "locale": "de", - "text": "PLZ" - } - ] - } - }, - { - "type": "Field", - "id": "field_a2612", - "name": "Ort", - "Field": { - "fieldType": { - "type": "StringType" - }, - "label": [ - { - "locale": "de", - "text": "Ort" - } - ] - } - }, - { - "type": "Field", - "id": "field_d1dc0", - "name": "Telefon", - "Field": { - "fieldType": { - "type": "StringType" - }, - "label": [ - { - "locale": "de", - "text": "Telefon" - } - ] - } - }, - { - "type": "Field", - "id": "field_3d3e0", - "name": "Fax", - "Field": { - "fieldType": { - "type": "StringType" - }, - "label": [ - { - "locale": "de", - "text": "Fax" - } - ] - } - }, - { - "type": "Field", - "id": "field_a7755", - "name": "EMail", - "Field": { - "fieldType": { - "type": "StringType" - }, - "label": [ - { - "locale": "de", - "text": "E-Mail" - } - ] - } - }, - { - "type": "Field", - "id": "field_a7cef", - "name": "Verantwortlicher_Vertreter", - "Field": { - "fieldType": { - "type": "StringType" - }, - "label": [ - { - "locale": "de", - "text": "Verantwortliche Vertreterin/Verantwortlicher Vertreter" - } - ] - } - }, - { - "type": "Field", - "id": "field_293a6", - "name": "Zustaendiger_Sachbearbeiter", - "Field": { - "fieldType": { - "type": "StringType" - }, - "label": [ - { - "locale": "de", - "text": "Zuständige Sachbearbeiterin/Zuständiger Sachbearbeiter" - } - ] - } - }, - { - "type": "Group", - "id": "group_44061", - "name": "Bankverbindung", - "Group": { - "repeatability": 1, - "elements": [ - { - "type": "Field", - "id": "field_77875", - "name": "Kreditinstitut", - "Field": { - "fieldType": { - "type": "StringType" - }, - "label": [ - { - "locale": "de", - "text": "Kreditinstitut" - } - ] - } - }, - { - "type": "Field", - "id": "field_807c3", - "name": "Kontoinhaber", - "Field": { - "fieldType": { - "type": "StringType" - }, - "label": [ - { - "locale": "de", - "text": "Kontoinhaber" - } - ] - } - }, - { - "type": "Field", - "id": "field_fb270", - "name": "IBAN", - "Field": { - "fieldType": { - "type": "StringType", - "StringType": { - "errorMessage": [ - { - "locale": "de", - "text": "Bitte geben Sie eine valide IBAN an." - } - ], - "pattern": "DE\\d{2}[ ]\\d{4}[ ]\\d{4}[ ]\\d{4}[ ]\\d{4}[ ]\\d{2}|DE\\d{20}" - } - }, - "label": [ - { - "locale": "de", - "text": "IBAN" - } - ] - } - }, - { - "type": "Field", - "id": "field_d1499", - "name": "BIC", - "Field": { - "fieldType": { - "type": "StringType", - "StringType": { - "errorMessage": [ - { - "locale": "de", - "text": "Bitte geben Sie eine valide BIC an." - } - ], - "pattern": "[A-Z]{6,6}[A-Z2-9][A-NP-Z0-9]([A-Z0-9]{3,3}){0,1}" - } - }, - "label": [ - { - "locale": "de", - "text": "BIC" - } - ] - } - } - ] - } - }, - { - "type": "Group", - "id": "group_d267e", - "name": "Zustaendiger_Spitzenverband", - "Group": { - "repeatability": 1, - "elements": [ - { - "type": "Field", - "id": "field_e73fd", - "name": "Bezeichnung", - "Field": { - "fieldType": { - "type": "StringType" - }, - "label": [ - { - "locale": "de", - "text": "Bezeichnung" - } - ] - } - }, - { - "type": "Field", - "id": "field_ca3c1", - "name": "Strasse_Hausnummer", - "Field": { - "fieldType": { - "type": "StringType" - }, - "label": [ - { - "locale": "de", - "text": "Straße, Hausnummer" - } - ] - } - }, - { - "type": "Field", - "id": "field_f002d", - "name": "PLZ", - "Field": { - "fieldType": { - "type": "StringType", - "StringType": { - "errorMessage": [ - { - "locale": "de", - "text": "Bitte geben Sie eine valide Postleitzahl an." - } - ], - "pattern": "[\\d]{5}" - } - }, - "label": [ - { - "locale": "de", - "text": "PLZ" - } - ] - } - }, - { - "type": "Field", - "id": "field_47beb", - "name": "Ort", - "Field": { - "fieldType": { - "type": "StringType" - }, - "label": [ - { - "locale": "de", - "text": "Ort" - } - ] - } - } - ] - } - } - ] - } - }, - { - "type": "Group", - "id": "group_66b19", - "name": "Angaben_zum_Projekt", - "Group": { - "repeatability": 1, - "elements": [ - { - "type": "Field", - "id": "field_de8f8", - "name": "Bezeichnung", - "Field": { - "fieldType": { - "type": "StringType" - }, - "label": [ - { - "locale": "de", - "text": "Bezeichnung der Maßnahme (Name der Schule)" - } - ] - } - }, - { - "type": "Field", - "id": "field_83207", - "name": "Beginn_der_Massnahme", - "Field": { - "fieldType": { - "type": "DateType", - "DateType": { - "format": "yyyy-MM-dd" - } - }, - "label": [ - { - "locale": "de", - "text": "Beginn der Maßnahme seit Genehmigung\nbzw. ggf. seit Aufstockung" - } - ] - } - }, - { - "type": "Field", - "id": "field_18de1", - "name": "Verantwortlicher_Sachbearbeiter", - "Field": { - "fieldType": { - "type": "StringType" - }, - "label": [ - { - "locale": "de", - "text": "Verantwortliche Sachbearbeiterin/Verantwortlicher Sachbearbeiter des Trägers der öffentl. Jugendhilfe (Landkreis/kreisfreie Stadt)" - } - ] - } - }, - { - "type": "Field", - "id": "field_dcaf0", - "name": "Strasse_Hausnummer", - "Field": { - "fieldType": { - "type": "StringType" - }, - "label": [ - { - "locale": "de", - "text": "Straße, Hausnummer" - } - ] - } - }, - { - "type": "Field", - "id": "field_a11e7", - "name": "PLZ", - "Field": { - "fieldType": { - "type": "StringType", - "StringType": { - "errorMessage": [ - { - "locale": "de", - "text": "Bitte geben Sie eine valide Postleitzahl an." - } - ], - "pattern": "[\\d]{5}" - } - }, - "label": [ - { - "locale": "de", - "text": "PLZ" - } - ] - } - }, - { - "type": "Field", - "id": "field_7afb0", - "name": "Ort", - "Field": { - "fieldType": { - "type": "StringType" - }, - "label": [ - { - "locale": "de", - "text": "Ort" - } - ] - } - }, - { - "type": "Field", - "id": "field_4f06a", - "name": "Telefon", - "Field": { - "fieldType": { - "type": "StringType" - }, - "label": [ - { - "locale": "de", - "text": "Telefon" - } - ] - } - }, - { - "type": "Field", - "id": "field_236e2", - "name": "Fax", - "Field": { - "fieldType": { - "type": "StringType" - }, - "label": [ - { - "locale": "de", - "text": "Fax" - } - ] - } - }, - { - "type": "Field", - "id": "field_b59d5", - "name": "EMail", - "Field": { - "fieldType": { - "type": "StringType" - }, - "label": [ - { - "locale": "de", - "text": "E-Mail" - } - ] - } - } - ] - } - }, - { - "type": "Group", - "id": "group_cade6", - "name": "Anlage_1", - "Group": { - "repeatability": 1, - "elements": [ - { - "type": "Group", - "id": "group_7b67f", - "name": "Personalkosten", - "Group": { - "repeatability": 10, - "elements": [ - { - "type": "Field", - "id": "field_275b9", - "name": "Lfd_Nr", - "Field": { - "fieldType": { - "type": "NumberType" - }, - "label": [ - { - "locale": "de", - "text": "Lfd. Nr." - } - ] - } - }, - { - "type": "Field", - "id": "field_2d26e", - "name": "Name", - "Field": { - "fieldType": { - "type": "StringType" - }, - "label": [ - { - "locale": "de", - "text": "Vor- und Zuname der Fachkraft" - } - ] - } - }, - { - "type": "Field", - "id": "field_71e95", - "name": "Berufsausbildung_Funktion", - "Field": { - "fieldType": { - "type": "StringType" - }, - "label": [ - { - "locale": "de", - "text": "Berufsausbildung und Funktion im geförderten Projekt (sofern noch nicht vorliegend, bitte Ausbildungsnachweis beilegen)" - } - ] - } - }, - { - "type": "Field", - "id": "field_e19d7", - "name": "Beschaeftigungszeitraum", - "Field": { - "fieldType": { - "type": "StringType" - }, - "label": [ - { - "locale": "de", - "text": "Beschäftigungszeitraum" - } - ] - } - }, - { - "type": "Field", - "id": "field_79cef", - "name": "Woechentliche_Arbeitszeit", - "Field": { - "fieldType": { - "type": "NumberType", - "NumberType": { - "maxFractionalDigits": 1 - } - }, - "label": [ - { - "locale": "de", - "text": "wöchentl. Arbeitszeit" - } - ] - } - }, - { - "type": "Field", - "id": "field_d1447", - "name": "Regelarbeitszeit", - "Field": { - "fieldType": { - "type": "NumberType", - "NumberType": { - "maxFractionalDigits": 1 - } - }, - "label": [ - { - "locale": "de", - "text": "tarifliche Regelarbeitszeit beim Träger" - } - ] - } - }, - { - "type": "Field", - "id": "field_ff859", - "name": "Entgeltgruppe", - "Field": { - "fieldType": { - "type": "StringType" - }, - "label": [ - { - "locale": "de", - "text": "Entgeltgruppe" - } - ] - } - }, - { - "type": "Field", - "id": "field_f618b", - "name": "Jahresaufwand", - "Field": { - "fieldType": { - "type": "NumberType", - "NumberType": { - "minFractionalDigits": 2, - "maxFractionalDigits": 2, - "trait": "amount" - } - }, - "label": [ - { - "locale": "de", - "text": "Jahresaufwand in €" - } - ] - } - }, - { - "type": "Field", - "id": "field_f994b", - "name": "Zuschuss", - "Field": { - "fieldType": { - "type": "NumberType", - "NumberType": { - "minFractionalDigits": 2, - "maxFractionalDigits": 2, - "trait": "amount" - } - }, - "label": [ - { - "locale": "de", - "text": "Zuschuss Festbetragsförderung (nicht vom Antragsteller auszufüllen)" - } - ] - } - } - ] - } - } - ] - } - }, - { - "type": "Group", - "id": "group_d7cfe", - "name": "Anlage_2", - "Group": { - "repeatability": 1, - "elements": [ - { - "type": "Group", - "id": "group_55285", - "name": "Kostenplan", - "Group": { - "repeatability": 1, - "elements": [ - { - "type": "Field", - "id": "field_98416", - "name": "Personalkosten_JaS", - "Field": { - "fieldType": { - "type": "NumberType", - "NumberType": { - "minFractionalDigits": 2, - "maxFractionalDigits": 2, - "trait": "amount" - } - }, - "label": [ - { - "locale": "de", - "text": "Personalkosten der JaS-Fachkraft/Fachkräfte" - } - ] - } - }, - { - "type": "Field", - "id": "field_ebdd5", - "name": "Personalkosten_Sonstige", - "Field": { - "fieldType": { - "type": "NumberType", - "NumberType": { - "minFractionalDigits": 2, - "maxFractionalDigits": 2, - "trait": "amount" - } - }, - "label": [ - { - "locale": "de", - "text": "Sonstige Personalkosten" - } - ] - } - }, - { - "type": "Field", - "id": "field_20288", - "name": "Sachkosten", - "Field": { - "fieldType": { - "type": "NumberType", - "NumberType": { - "minFractionalDigits": 2, - "maxFractionalDigits": 2, - "trait": "amount" - } - }, - "label": [ - { - "locale": "de", - "text": "Sachkosten für den lfd. Betrieb" - } - ] - } - }, - { - "type": "Field", - "id": "field_b7bb2", - "name": "Sonstige_Kosten", - "Field": { - "fieldType": { - "type": "NumberType", - "NumberType": { - "minFractionalDigits": 2, - "maxFractionalDigits": 2, - "trait": "amount" - } - }, - "label": [ - { - "locale": "de", - "text": "Sonstige Kosten" - } - ] - } - }, - { - "type": "Field", - "id": "field_e4001", - "name": "Insgesamt_Kostenplan", - "Field": { - "fieldType": { - "type": "NumberType", - "NumberType": { - "minFractionalDigits": 2, - "maxFractionalDigits": 2, - "trait": "amount" - } - }, - "label": [ - { - "locale": "de", - "text": "Insgesamt" - } - ] - } - }, - { - "type": "Computation", - "id": "computation_2098f", - "name": "Insgesamt_Kostenplan_Comp", - "Computation": { - "computedFieldId": "field_e4001", - "computationAlternatives": [ - { - "operation": "[Personalkosten_Sonstige]+[Personalkosten_JaS]+[Sachkosten]+[Sonstige_Kosten]" - } - ], - "errorMessage": [ - { - "locale": "de", - "text": "error text for computation of Insgesamt_Kostenplan_Comp" - } - ] - } - }, - { - "type": "Field", - "id": "field_d09ae", - "name": "Erlaeuterungen_Kostenplan", - "Field": { - "fieldType": { - "type": "StringType", - "StringType": { - "lineBreaksPermitted": true - } - }, - "label": [ - { - "locale": "de", - "text": "Erläuterungen" - } - ] - } - } - ] - } - }, - { - "type": "Group", - "id": "group_60c8d", - "name": "Finanzierungsplan", - "Group": { - "repeatability": 1, - "elements": [ - { - "type": "Field", - "id": "field_7e8f3", - "name": "Eigenmittel_von_Hundert", - "Field": { - "fieldType": { - "type": "NumberType", - "NumberType": { - "minFractionalDigits": 2, - "maxFractionalDigits": 2, - "trait": "percent" - } - }, - "label": [ - { - "locale": "de", - "text": "Eigenmittel von Hundert" - } - ] - } - }, - { - "type": "Field", - "id": "field_228aa", - "name": "Eigenmittel_Betrag", - "Field": { - "fieldType": { - "type": "NumberType", - "NumberType": { - "minFractionalDigits": 2, - "maxFractionalDigits": 2, - "trait": "amount" - } - }, - "label": [ - { - "locale": "de", - "text": "Eigenmittel Betrag" - } - ] - } - }, - { - "type": "Field", - "id": "field_264d6", - "name": "Zuwendungen_kirchlicher_Stellen", - "Field": { - "fieldType": { - "type": "NumberType", - "NumberType": { - "minFractionalDigits": 2, - "maxFractionalDigits": 2, - "trait": "amount" - } - }, - "label": [ - { - "locale": "de", - "text": "Zuwendungen kirchlicher Stellen" - } - ] - } - }, - { - "type": "Field", - "id": "field_55d96", - "name": "Angabe_der_kirchlichen_Stelle", - "Field": { - "fieldType": { - "type": "StringType" - }, - "label": [ - { - "locale": "de", - "text": "Angabe der Stelle" - } - ] - } - }, - { - "type": "Group", - "id": "group_cb4bd", - "name": "Zuwendung_kommunale", - "Group": { - "repeatability": 1, - "elements": [ - { - "type": "Field", - "id": "field_516a4", - "name": "Gemeinden", - "Field": { - "fieldType": { - "type": "StringType" - }, - "label": [ - { - "locale": "de", - "text": "Gemeinden" - } - ] - } - }, - { - "type": "Field", - "id": "field_d53ed", - "name": "Zuwendung_Gemeinden", - "Field": { - "fieldType": { - "type": "NumberType", - "NumberType": { - "minFractionalDigits": 2, - "maxFractionalDigits": 2, - "trait": "amount" - } - }, - "label": [ - { - "locale": "de", - "text": "Betrag" - } - ] - } - }, - { - "type": "Field", - "id": "field_3216a", - "name": "Landkreise", - "Field": { - "fieldType": { - "type": "StringType" - }, - "label": [ - { - "locale": "de", - "text": "Landkreise" - } - ] - } - }, - { - "type": "Field", - "id": "field_830de", - "name": "Zuwendung_Landkreise", - "Field": { - "fieldType": { - "type": "NumberType", - "NumberType": { - "minFractionalDigits": 2, - "maxFractionalDigits": 2, - "trait": "amount" - } - }, - "label": [ - { - "locale": "de", - "text": "Betrag" - } - ] - } - } - ] - } - }, - { - "type": "Field", - "id": "field_45f01", - "name": "Zuwendungen_Bezirk", - "Field": { - "fieldType": { - "type": "NumberType", - "NumberType": { - "minFractionalDigits": 2, - "maxFractionalDigits": 2, - "trait": "amount" - } - }, - "label": [ - { - "locale": "de", - "text": "Zuwendungen des Bezirks" - } - ] - } - }, - { - "type": "Group", - "id": "group_dbe9b", - "name": "Sonstige_oeffentliche_Mittel", - "Group": { - "repeatability": 1, - "elements": [ - { - "type": "Field", - "id": "field_fe71d", - "name": "Angabe_Bewilligungstelle_sonsitge_oeffentl_Mittel", - "Field": { - "fieldType": { - "type": "StringType" - }, - "label": [ - { - "locale": "de", - "text": "Angabe der Bewilligungsstelle" - } - ] - } - }, - { - "type": "Field", - "id": "field_1c494", - "name": "Betrag_sonsitge_oeffentl_Mittel", - "Field": { - "fieldType": { - "type": "NumberType", - "NumberType": { - "minFractionalDigits": 2, - "maxFractionalDigits": 2, - "trait": "amount" - } - }, - "label": [ - { - "locale": "de", - "text": "Betrag" - } - ] - } - } - ] - } - }, - { - "type": "Group", - "id": "group_4ec36", - "name": "Fremdmittel", - "Group": { - "repeatability": 1, - "elements": [ - { - "type": "Field", - "id": "field_68026", - "name": "Angabe_Bewilligungstelle_Fremdmittel", - "Field": { - "fieldType": { - "type": "StringType" - }, - "label": [ - { - "locale": "de", - "text": "Angabe der Bewilligungsstelle" - } - ] - } - }, - { - "type": "Field", - "id": "field_e59dd", - "name": "Betrag_Fremdmittel", - "Field": { - "fieldType": { - "type": "NumberType", - "NumberType": { - "minFractionalDigits": 2, - "maxFractionalDigits": 2, - "trait": "amount" - } - }, - "label": [ - { - "locale": "de", - "text": "Betrag" - } - ] - } - } - ] - } - }, - { - "type": "Field", - "id": "field_81843", - "name": "Beantragter_Zuschuss", - "Field": { - "fieldType": { - "type": "NumberType", - "NumberType": { - "minFractionalDigits": 2, - "maxFractionalDigits": 2, - "trait": "amount" - } - }, - "label": [ - { - "locale": "de", - "text": "Beantragter Zuschuss des Bayerischen Staatsministeriums für Familie, Arbeit und Soziales" - } - ] - } - }, - { - "type": "Field", - "id": "field_479e3", - "name": "Insgesamt_Finanzierungsplan", - "Field": { - "fieldType": { - "type": "NumberType", - "NumberType": { - "minFractionalDigits": 2, - "maxFractionalDigits": 2, - "trait": "amount" - } - }, - "label": [ - { - "locale": "de", - "text": "Insgesamt" - } - ] - } - }, - { - "type": "Computation", - "id": "computation_3849f", - "name": "Insgesamt_Kostenplan_Comp", - "Computation": { - "computedFieldId": "field_479e3", - "computationAlternatives": [ - { - "operation": "[Eigenmittel_Betrag]+[Zuwendungen_kirchlicher_Stellen]+[Zuwendung_kommunale/Zuwendung_Gemeinden]+[Zuwendung_kommunale/Zuwendung_Landkreise]+[Sonstige_oeffentliche_Mittel/Betrag_sonsitge_oeffentl_Mittel]+[Fremdmittel/Betrag_Fremdmittel]+[Beantragter_Zuschuss]" - } - ], - "errorMessage": [ - { - "locale": "de", - "text": "error text for computation of Insgesamt_Kostenplan_Comp" - } - ] - } - }, - { - "type": "Field", - "id": "field_b1b30", - "name": "Erlaeuterungen_Finanzierungsplan", - "Field": { - "fieldType": { - "type": "StringType", - "StringType": { - "lineBreaksPermitted": true - } - }, - "label": [ - { - "locale": "de", - "text": "Erläuterungen" - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } - ] - } - } -} \ No newline at end of file diff --git a/enterprise-adapter/src/test/resources/request/simple.json b/enterprise-adapter/src/test/resources/request/simple.json deleted file mode 100644 index 11bd6e9c..00000000 --- a/enterprise-adapter/src/test/resources/request/simple.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "control": { - "transactionId": "4e7a6ae7-4d0f-444d-8971-7cfc051c9924", - "zustaendigeStelle": "248240886", - "leikaIds": [ - "99108011000000", - "99108011153000" - ], - "resultEndpoint": { - "address": "https://idalabs.de/backend/api" - }, - "formId": "KFAS_LIVE_KI_10_Haltverbot_befristet", - "name": "Anmeldung zur Einrichtung einer zeitlich befristeten Haltverbotszone gem. § 45 Abs. 1 Straßenverkehrsordnung (StVO)", - "serviceKonto": { - "type": "OSI", - "postfachAddress": { - "identifier": "76f1ae54-1cf1-4ae1-c0b4-08d950d6cfc0", - "type": "privat" - } - } - }, - "formData": [ - { - "name": "field_name", - "label": "field_label", - "stringValue": "field_string_value" - }, - { - "name": "antragsteller", - "label": "Antragstellende Person", - "formItems": [ - { - "name": "lastname", - "label": "Nachname", - "stringValue": "Täst" - }, { - "name": "age", - "label": "Alter", - "numberValue": 5.5 - }, { - "name": "birthday", - "label": "Geburtsdatum", - "dateValue": "2017-05-01" - }, { - "name": "geprüft", - "label": "Geprüft", - "booleanValue": true - } - ] - } - ] -} \ No newline at end of file diff --git a/fim-adapter/pom.xml b/fim-adapter/pom.xml deleted file mode 100644 index b533588b..00000000 --- a/fim-adapter/pom.xml +++ /dev/null @@ -1,62 +0,0 @@ -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>de.ozgcloud.eingang</groupId> - <artifactId>eingang-manager</artifactId> - <version>2.16.0-SNAPSHOT</version> - </parent> - <artifactId>fim-adapter</artifactId> - <name>Eingangs Adapter - FIM</name> - - <dependencies> - <!--ozg-Cloud--> - <dependency> - <groupId>de.ozgcloud.eingang</groupId> - <artifactId>common</artifactId> - </dependency> - <dependency> - <groupId>de.ozgcloud.eingang</groupId> - <artifactId>semantik-adapter</artifactId> - </dependency> - - <!--test --> - <dependency> - <groupId>de.ozgcloud.eingang</groupId> - <artifactId>common</artifactId> - <type>test-jar</type> - <scope>test</scope> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-jar-plugin</artifactId> - <executions> - <execution> - <goals> - <goal>test-jar</goal> - </goals> - </execution> - </executions> - </plugin> - - <plugin> - <groupId>org.jacoco</groupId> - <artifactId>jacoco-maven-plugin</artifactId> - </plugin> - - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-surefire-plugin</artifactId> - </plugin> - - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-failsafe-plugin</artifactId> - </plugin> - </plugins> - </build> -</project> diff --git a/fim-adapter/src/main/java/de/ozgcloud/eingang/fim/FimBasedAdapter.java b/fim-adapter/src/main/java/de/ozgcloud/eingang/fim/FimBasedAdapter.java deleted file mode 100644 index 6a6a8ce2..00000000 --- a/fim-adapter/src/main/java/de/ozgcloud/eingang/fim/FimBasedAdapter.java +++ /dev/null @@ -1,96 +0,0 @@ -package de.ozgcloud.eingang.fim; - -import java.io.IOException; -import java.util.Collections; -import java.util.List; -import java.util.Optional; - -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.ParserConfigurationException; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; -import org.w3c.dom.Document; -import org.xml.sax.SAXException; - -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.FormData.FormDataControl; -import de.ozgcloud.eingang.common.formdata.FormData.Representations; -import de.ozgcloud.eingang.common.formdata.IncomingFile; -import de.ozgcloud.eingang.semantik.enginebased.EngineBasedSemantikAdapter; -import lombok.NonNull; -import lombok.extern.log4j.Log4j2; - -@Log4j2 -@Component -public class FimBasedAdapter implements EngineBasedSemantikAdapter { - - static final String FIM_FORM_ENGINE_NAME = "FIM"; - - static final String DEFAULT_FORMDATA_REPRESENTATION_NAME = "Antrag.xml"; - - @Autowired - private FimService fimService; - - @Autowired(required = false) - private List<FimEngineBasedMapper> mappers = Collections.emptyList(); - - @Override - public boolean isResponsible(final FormData formData) { - final String formEngineName = formData.getHeader().getFormEngineName(); - return FIM_FORM_ENGINE_NAME.equals(formEngineName); - } - - @Override - public FormData parseFormData(final FormData initialFormData) { - var mapped = useMappers(initialFormData); - LOG.info("FIM Mapper running to map formData"); - - return findFile(initialFormData, getEntryPoint(initialFormData.getControl())) - .map(primaryRepresentation -> doParsing(mapped, primaryRepresentation)) - .orElseGet(() -> { - LOG.error("Entry point file not found for fim data mapping"); - return mapped; - }); - } - - private FormData useMappers(FormData inFormData) { - var processedFormData = inFormData; - - for (var mapper : mappers) { - processedFormData = mapper.parseFormData(processedFormData); - } - - return processedFormData; - } - - private Optional<IncomingFile> findFile(final FormData formData, final String name) { - return formData.getRepresentations().stream() - .filter(file -> file.getName().endsWith(name)) - .findFirst(); - } - - private FormData doParsing(@NonNull FormData formData, @NonNull IncomingFile formDataPrimaryRepresentation) { - try { - return fimService.transformDocument(loadDocument(formDataPrimaryRepresentation), formData); - } catch (ParserConfigurationException | SAXException | IOException | FimException e) { - LOG.error("Can't transform document into fim formdata.", e); - return formData; - } - } - - String getEntryPoint(FormDataControl formDataControl) { - return formDataControl.getRepresentations().map(Representations::getPrimaryFormDataRepresentation) - .orElseGet(() -> { - LOG.error("No entry point found in metadata file for fim data mapping. Trying default."); - return DEFAULT_FORMDATA_REPRESENTATION_NAME; - }); - } - - private Document loadDocument(final IncomingFile incomingFile) throws ParserConfigurationException, IOException, SAXException { - final DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); - return builder.parse(incomingFile.getContentStream()); - } - -} diff --git a/fim-adapter/src/main/java/de/ozgcloud/eingang/fim/FimDataMapper.java b/fim-adapter/src/main/java/de/ozgcloud/eingang/fim/FimDataMapper.java deleted file mode 100644 index 1cfa677b..00000000 --- a/fim-adapter/src/main/java/de/ozgcloud/eingang/fim/FimDataMapper.java +++ /dev/null @@ -1,58 +0,0 @@ -package de.ozgcloud.eingang.fim; - -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.Optional; - -import org.apache.commons.lang3.function.TriFunction; -import org.springframework.stereotype.Service; -import org.w3c.dom.Document; -import org.w3c.dom.Element; -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; -import org.w3c.dom.Text; - -import de.ozgcloud.eingang.common.formdata.FormData; -import lombok.extern.log4j.Log4j2; - -@Service -@Log4j2 -class FimDataMapper implements TriFunction<Document, FimScheme, FormData, FormData.FormDataBuilder> { - - private static final String LABEL_KEY = "label"; - private static final String VALUE_KEY = "value"; - - @Override - public FormData.FormDataBuilder apply(final Document document, final FimScheme fimScheme, final FormData initialFormData) { - final FormData.FormDataBuilder formDataBuilder = initialFormData.toBuilder(); - Map<String, Object> data = new LinkedHashMap<>(); - process(document.getDocumentElement(), fimScheme, data, 0); - formDataBuilder.formData(data); - return formDataBuilder; - } - - private void process(final Element element, final FimScheme fimScheme, final Map<String, Object> data, final int level) { - final NodeList childNodes = element.getChildNodes(); - - LOG.debug(">".repeat(level) + " " + element.getNodeName()); - - for (int i = 0; i < childNodes.getLength(); i++) { - final Node child = childNodes.item(i); - if (!(child instanceof Element)) { - continue; - } - if (child.getChildNodes().getLength() == 1 && child.getChildNodes().item(0) instanceof Text textNode) { - insertValueIntoFormData(data, fimScheme.getFieldName(child.getNodeName()), child.getNodeName(), textNode.getTextContent()); - } else { - final Map<String, Object> childMap = new LinkedHashMap<>(); - insertValueIntoFormData(data, fimScheme.getFieldName(child.getNodeName()), child.getNodeName(), childMap); - process((Element) child, fimScheme, childMap, level + 1); - } - } - } - - private void insertValueIntoFormData(final Map<String, Object> data, final Optional<String> fieldName, final String nodeName, final Object obj) { - final Map<String, Object> labelMap = Map.of(LABEL_KEY, fieldName.orElse(nodeName), VALUE_KEY, obj); - data.put(nodeName, labelMap); - } -} diff --git a/fim-adapter/src/main/java/de/ozgcloud/eingang/fim/FimEngineBasedMapper.java b/fim-adapter/src/main/java/de/ozgcloud/eingang/fim/FimEngineBasedMapper.java deleted file mode 100644 index f01ac99c..00000000 --- a/fim-adapter/src/main/java/de/ozgcloud/eingang/fim/FimEngineBasedMapper.java +++ /dev/null @@ -1,7 +0,0 @@ -package de.ozgcloud.eingang.fim; - -import de.ozgcloud.eingang.semantik.enginebased.EngineBasedMapper; - -public interface FimEngineBasedMapper extends EngineBasedMapper { - -} diff --git a/fim-adapter/src/main/java/de/ozgcloud/eingang/fim/FimException.java b/fim-adapter/src/main/java/de/ozgcloud/eingang/fim/FimException.java deleted file mode 100644 index ec25fcb3..00000000 --- a/fim-adapter/src/main/java/de/ozgcloud/eingang/fim/FimException.java +++ /dev/null @@ -1,9 +0,0 @@ -package de.ozgcloud.eingang.fim; - -import de.ozgcloud.eingang.common.errorhandling.TechnicalException; - -public class FimException extends TechnicalException { - public FimException(final String ex) { - super(ex); - } -} diff --git a/fim-adapter/src/main/java/de/ozgcloud/eingang/fim/FimProperties.java b/fim-adapter/src/main/java/de/ozgcloud/eingang/fim/FimProperties.java deleted file mode 100644 index df67ec1a..00000000 --- a/fim-adapter/src/main/java/de/ozgcloud/eingang/fim/FimProperties.java +++ /dev/null @@ -1,25 +0,0 @@ -package de.ozgcloud.eingang.fim; - -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.context.annotation.Configuration; -import lombok.Getter; -import org.springframework.validation.annotation.Validated; - -import java.util.ArrayList; -import java.util.List; - -@Validated -@Configuration -@ConfigurationProperties(prefix = FimProperties.PROPERTIES_PREFIX) -@Getter -public class FimProperties { - static final String PROPERTIES_PREFIX = "fim"; - - /** - * List of paths to fim scheme files which should be processed by the fim-adapter. - * - * Only fim data that is in the namespace and versions of these files will be mapped by the fim-adapter. - * All other fim data will be left untouched by the mapper. - */ - private final List<String> schemeLocations = new ArrayList<>(); -} diff --git a/fim-adapter/src/main/java/de/ozgcloud/eingang/fim/FimScheme.java b/fim-adapter/src/main/java/de/ozgcloud/eingang/fim/FimScheme.java deleted file mode 100644 index e38bd99b..00000000 --- a/fim-adapter/src/main/java/de/ozgcloud/eingang/fim/FimScheme.java +++ /dev/null @@ -1,42 +0,0 @@ -package de.ozgcloud.eingang.fim; - -import lombok.Getter; -import org.w3c.dom.Document; -import org.w3c.dom.Element; - -import org.w3c.dom.NodeList; - -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.Optional; - -class FimScheme { - - private final Document doc; - @Getter - private final FimSchemeIdentifier identifier; - - @Getter - private final FimSchemeAdapter schemeAdapter; - private final Map<String, Element> fieldIndex = new LinkedHashMap<>(); - - FimScheme(final Document doc, final FimSchemeIdentifier identifier, final FimSchemeAdapter schemeAdapter) { - this.doc = doc; - this.identifier = identifier; - this.schemeAdapter = schemeAdapter; - - buildFieldIndex(); - } - private void buildFieldIndex() { - final NodeList groupList = doc.getElementsByTagName("xs:element"); - for (int i = 0; i < groupList.getLength();i++) { - final Element group = (Element) groupList.item(i); - final String groupName = group.getAttribute("name"); - fieldIndex.put(groupName, group); - } - } - - Optional<String> getFieldName(final String fieldName) { - return schemeAdapter.getFieldName(fieldIndex, fieldName); - } -} diff --git a/fim-adapter/src/main/java/de/ozgcloud/eingang/fim/FimSchemeAdapter.java b/fim-adapter/src/main/java/de/ozgcloud/eingang/fim/FimSchemeAdapter.java deleted file mode 100644 index 13686294..00000000 --- a/fim-adapter/src/main/java/de/ozgcloud/eingang/fim/FimSchemeAdapter.java +++ /dev/null @@ -1,39 +0,0 @@ -package de.ozgcloud.eingang.fim; - -import java.util.Map; -import java.util.Optional; - -import org.w3c.dom.Element; -import org.w3c.dom.NodeList; - -import lombok.extern.log4j.Log4j2; - -@Log4j2 -public abstract class FimSchemeAdapter { - - public abstract FimSchemeIdentifier forIdentifier(); - - public Optional<String> getFieldName(final Map<String, Element> fieldIndex, final String fieldName) { - final String[] fieldNameParts = fieldName.split(":"); - final String fieldNameWithoutNamespace = fieldNameParts[fieldNameParts.length - 1]; - if (!fieldIndex.containsKey(fieldNameWithoutNamespace)) { - LOG.error("Cannot find Field: " + fieldName); - return Optional.empty(); - } - final Element nodeNameElement = fieldIndex.get(fieldNameWithoutNamespace); - final Optional<String> nodeNameOpt = getNameForElement(nodeNameElement); - return nodeNameOpt.map(this::cleanNodeName); - } - - public Optional<String> getNameForElement(final Element element) { - final NodeList nameTags = element.getElementsByTagName("name"); - if (nameTags.getLength() != 1) { - return Optional.empty(); - } - return Optional.ofNullable(nameTags.item(0).getTextContent()); - } - - public String cleanNodeName(final String s) { - return s.trim(); - } -} diff --git a/fim-adapter/src/main/java/de/ozgcloud/eingang/fim/FimSchemeAdapterCatalogue.java b/fim-adapter/src/main/java/de/ozgcloud/eingang/fim/FimSchemeAdapterCatalogue.java deleted file mode 100644 index 934f3f8a..00000000 --- a/fim-adapter/src/main/java/de/ozgcloud/eingang/fim/FimSchemeAdapterCatalogue.java +++ /dev/null @@ -1,5 +0,0 @@ -package de.ozgcloud.eingang.fim; - -import java.util.LinkedHashMap; -class FimSchemeAdapterCatalogue extends LinkedHashMap<FimSchemeIdentifier, FimSchemeAdapter> { -} diff --git a/fim-adapter/src/main/java/de/ozgcloud/eingang/fim/FimSchemeCatalogue.java b/fim-adapter/src/main/java/de/ozgcloud/eingang/fim/FimSchemeCatalogue.java deleted file mode 100644 index 5c53c1ae..00000000 --- a/fim-adapter/src/main/java/de/ozgcloud/eingang/fim/FimSchemeCatalogue.java +++ /dev/null @@ -1,6 +0,0 @@ -package de.ozgcloud.eingang.fim; - -import java.util.LinkedHashMap; - -class FimSchemeCatalogue extends LinkedHashMap<FimSchemeIdentifier, FimScheme> { -} diff --git a/fim-adapter/src/main/java/de/ozgcloud/eingang/fim/FimSchemeIdentifier.java b/fim-adapter/src/main/java/de/ozgcloud/eingang/fim/FimSchemeIdentifier.java deleted file mode 100644 index 3f2222a4..00000000 --- a/fim-adapter/src/main/java/de/ozgcloud/eingang/fim/FimSchemeIdentifier.java +++ /dev/null @@ -1,17 +0,0 @@ -package de.ozgcloud.eingang.fim; - -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode -public class FimSchemeIdentifier { - - private final String schemeId; - - FimSchemeIdentifier(String schemeId) { - this.schemeId = schemeId; - } - - public static FimSchemeIdentifier fromString(final String s) { - return new FimSchemeIdentifier(s); - } -} diff --git a/fim-adapter/src/main/java/de/ozgcloud/eingang/fim/FimService.java b/fim-adapter/src/main/java/de/ozgcloud/eingang/fim/FimService.java deleted file mode 100644 index f0930a90..00000000 --- a/fim-adapter/src/main/java/de/ozgcloud/eingang/fim/FimService.java +++ /dev/null @@ -1,104 +0,0 @@ -package de.ozgcloud.eingang.fim; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.ParserConfigurationException; - -import jakarta.annotation.PostConstruct; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ResourceLoader; -import org.springframework.stereotype.Service; -import org.w3c.dom.Document; -import org.xml.sax.SAXException; - -import de.ozgcloud.eingang.common.formdata.FormData; -import io.micrometer.common.util.StringUtils; -import lombok.extern.log4j.Log4j2; - -@Service -@Log4j2 -public class FimService { - public static final String UNKNOWN_SCHEME_NAME = "unknown"; - - @Autowired - private FimProperties fimProperties; - - @Autowired - private FimDataMapper fimDataMapper; - - @Autowired - private ResourceLoader resourceLoader; - - @Autowired - private final List<FimSchemeAdapter> fimSchemeAdapters = new ArrayList<>(); - - private final FimSchemeCatalogue fimSchemeCatalogue = new FimSchemeCatalogue(); - private final FimSchemeAdapterCatalogue fimSchemeAdapterCatalogue = new FimSchemeAdapterCatalogue(); - - private static final FimSchemeAdapter DEFAULT_FIM_SCHEME_ADAPTER = new FimSchemeAdapter() { - @Override - public FimSchemeIdentifier forIdentifier() { - return null; - } - }; - - @PostConstruct - private void postConstruct() throws ParserConfigurationException, IOException, SAXException { - for (final FimSchemeAdapter fimSchemeAdapter : fimSchemeAdapters) { - fimSchemeAdapterCatalogue.put(fimSchemeAdapter.forIdentifier(), fimSchemeAdapter); - } - for (final String fimSchemaLocation : fimProperties.getSchemeLocations()) { - final FimScheme fimScheme = loadFimScheme(fimSchemaLocation.trim()); - fimSchemeCatalogue.put(fimScheme.getIdentifier(), fimScheme); - } - final FimScheme unknownScheme = buildUnknownScheme(); - fimSchemeCatalogue.put(unknownScheme.getIdentifier(), unknownScheme); - } - - private FimScheme loadFimScheme(final String path) throws ParserConfigurationException, IOException, SAXException { - LOG.debug("Load FIM schema: " + path); - final DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); - final Document doc = builder.parse(resourceLoader.getResource("classpath:" + path).getFile()); - final String targetNamespace = doc.getDocumentElement().getAttribute("targetNamespace"); - final FimSchemeIdentifier fimSchemeIdentifier = FimSchemeIdentifier.fromString(targetNamespace); - final FimSchemeAdapter fimSchemeAdapter = fimSchemeAdapterCatalogue.getOrDefault(fimSchemeIdentifier, DEFAULT_FIM_SCHEME_ADAPTER); - return new FimScheme(doc, fimSchemeIdentifier, fimSchemeAdapter); - } - - private FimScheme buildUnknownScheme() throws ParserConfigurationException { - final Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument(); - final FimSchemeIdentifier unknownFimSchemeIdentifier = FimSchemeIdentifier.fromString(UNKNOWN_SCHEME_NAME); - final FimSchemeAdapter fimSchemeAdapter = fimSchemeAdapterCatalogue.get(unknownFimSchemeIdentifier); - return new FimScheme(doc, unknownFimSchemeIdentifier, fimSchemeAdapter); - } - - public FormData transformDocument(final Document document, final FormData initialFormData) { - final String[] tagParts = document.getDocumentElement().getTagName().split(":"); - final String namespacePrefix = tagParts.length < 2 ? "" : (":" + tagParts[0]); - final String schemeName = document.getDocumentElement().getAttribute("xmlns" + namespacePrefix); - if (StringUtils.isEmpty(schemeName)) { - throw new FimException("XML Document does not provide a scheme"); - } - final FimScheme scheme = getSchemeForIdentifier(schemeName); - final FormData.FormDataBuilder builder = fimDataMapper.apply(document, scheme, initialFormData); - - builder.header(initialFormData.getHeader()); - - return builder.build(); - } - - FimScheme getSchemeForIdentifier(final String fimSchemaName) { - final FimSchemeIdentifier fimSchemeIdentifier = FimSchemeIdentifier.fromString(fimSchemaName); - final FimScheme fimScheme = fimSchemeCatalogue.get(fimSchemeIdentifier); - if (fimScheme == null) { - LOG.error("Cannot find schema for: " + fimSchemaName); - return fimSchemeCatalogue.get(FimSchemeIdentifier.fromString(UNKNOWN_SCHEME_NAME)); - } - return fimScheme; - } -} diff --git a/fim-adapter/src/main/java/de/ozgcloud/eingang/fim/UnknownSchemeAdapter.java b/fim-adapter/src/main/java/de/ozgcloud/eingang/fim/UnknownSchemeAdapter.java deleted file mode 100644 index 5015cc5a..00000000 --- a/fim-adapter/src/main/java/de/ozgcloud/eingang/fim/UnknownSchemeAdapter.java +++ /dev/null @@ -1,20 +0,0 @@ -package de.ozgcloud.eingang.fim; - -import org.springframework.stereotype.Service; -import org.w3c.dom.Element; - -import java.util.Map; -import java.util.Optional; - -@Service -public class UnknownSchemeAdapter extends FimSchemeAdapter { - - public FimSchemeIdentifier forIdentifier() { - return FimSchemeIdentifier.fromString(FimService.UNKNOWN_SCHEME_NAME); - } - - @Override - public Optional<String> getFieldName(Map<String, Element> fieldIndex, String fieldName) { - return Optional.of(fieldName); - } -} diff --git a/fim-adapter/src/main/java/de/ozgcloud/eingang/fim/ZustaendigeStelleMapper.java b/fim-adapter/src/main/java/de/ozgcloud/eingang/fim/ZustaendigeStelleMapper.java deleted file mode 100644 index 72146cb7..00000000 --- a/fim-adapter/src/main/java/de/ozgcloud/eingang/fim/ZustaendigeStelleMapper.java +++ /dev/null @@ -1,44 +0,0 @@ -package de.ozgcloud.eingang.fim; - -import java.util.List; -import java.util.Objects; -import java.util.Optional; - -import org.springframework.stereotype.Component; - -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.ZustaendigeStelle; -import lombok.NonNull; - -@Component -class ZustaendigeStelleMapper implements FimEngineBasedMapper { - - static final String XTA_IDENTIFIER_ENTRY_NAME = "xtaIdentifier"; - - // TODO OZG-7086 umstellen auf FIM Headerdaten - - @Override - public FormData parseFormData(FormData formData) { - return formData.getControl().getMetaData() - .map(metaData -> metaData.getEntry(XTA_IDENTIFIER_ENTRY_NAME)) - .filter(Objects::nonNull) - .map(oeId -> setOrganisationsEinheitId(formData.getZustaendigeStelles(), oeId)) - .map(zustStelle -> formData.toBuilder().zustaendigeStelle(zustStelle).build()) - .orElse(formData); - } - - private ZustaendigeStelle setOrganisationsEinheitId(List<ZustaendigeStelle> stelles, @NonNull String oeid) { - var builder = stelles.isEmpty() ? ZustaendigeStelle.builder() : stelles.getFirst().toBuilder(); - - extractOrganisationsEinheitId(oeid).ifPresent(builder::organisationseinheitenId); - return builder.build(); - } - - Optional<String> extractOrganisationsEinheitId(@NonNull String xtaIdentifier) { - var idx = xtaIdentifier.indexOf(":"); - if (idx < 0) { - return Optional.empty(); - } - return Optional.of(xtaIdentifier.substring(idx + 1)); - } -} diff --git a/fim-adapter/src/main/resources/application-fim.yml b/fim-adapter/src/main/resources/application-fim.yml deleted file mode 100644 index 1300eceb..00000000 --- a/fim-adapter/src/main/resources/application-fim.yml +++ /dev/null @@ -1,3 +0,0 @@ -fim: - schemeLocations: - - fim-s17000652_1.4/S17000652V1.4_xfall.xsd \ No newline at end of file diff --git a/fim-adapter/src/main/resources/fim-s17000652_1.4/C17000420_genericode.xml b/fim-adapter/src/main/resources/fim-s17000652_1.4/C17000420_genericode.xml deleted file mode 100644 index 585c7415..00000000 --- a/fim-adapter/src/main/resources/fim-s17000652_1.4/C17000420_genericode.xml +++ /dev/null @@ -1 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?><gc:CodeList xmlns:gc="http://docs.oasis-open.org/codelist/ns/genericode/1.0/"><gc:Identification><gc:ShortName>codelist</gc:ShortName><gc:LongName></gc:LongName><gc:Version>2022-02-16</gc:Version><gc:CanonicalUri>urn:de:fim:codeliste:dokumenttyp</gc:CanonicalUri><gc:CanonicalVersionUri>urn:de:fim:codeliste:dokumenttyp_2022-02-16</gc:CanonicalVersionUri></gc:Identification><gc:ColumnSet><gc:Column Id="code" Use="required"><gc:ShortName>Code</gc:ShortName><gc:Data Type="string"/></gc:Column><gc:Column Id="name" Use="required"><gc:ShortName>Name</gc:ShortName><gc:Data Type="string"/></gc:Column><gc:Key Id="codeKey"><gc:ShortName>CodeKey</gc:ShortName><gc:ColumnRef Ref="code"/></gc:Key><gc:Key Id="codenameKey"><gc:ShortName>CodenameKey</gc:ShortName><gc:ColumnRef Ref="name"/></gc:Key></gc:ColumnSet><gc:SimpleCodeList><gc:Row><gc:Value ColumnRef="code"><gc:SimpleValue>01</gc:SimpleValue></gc:Value><gc:Value ColumnRef="name"><gc:SimpleValue>Anzeige einer öffentlichen Versammlung unter freiem Himmel (ortsfest)</gc:SimpleValue></gc:Value></gc:Row><gc:Row><gc:Value ColumnRef="code"><gc:SimpleValue>02</gc:SimpleValue></gc:Value><gc:Value ColumnRef="name"><gc:SimpleValue>Anzeige einer sich fortbewegenden Versammlung (Aufzug, Umzug)</gc:SimpleValue></gc:Value></gc:Row></gc:SimpleCodeList></gc:CodeList> \ No newline at end of file diff --git a/fim-adapter/src/main/resources/fim-s17000652_1.4/C17001208_genericode.xml b/fim-adapter/src/main/resources/fim-s17000652_1.4/C17001208_genericode.xml deleted file mode 100644 index cbf9e3f5..00000000 --- a/fim-adapter/src/main/resources/fim-s17000652_1.4/C17001208_genericode.xml +++ /dev/null @@ -1 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?><gc:CodeList xmlns:gc="http://docs.oasis-open.org/codelist/ns/genericode/1.0/"><gc:Identification><gc:ShortName></gc:ShortName><gc:LongName></gc:LongName><gc:Version>2023-09-26</gc:Version><gc:CanonicalUri>urn:de:fim:codeliste:artteilnahmeveranstaltung</gc:CanonicalUri><gc:CanonicalVersionUri>urn:de:fim:codeliste:artteilnahmeveranstaltung_2023-09-26</gc:CanonicalVersionUri></gc:Identification><gc:ColumnSet><gc:Column Id="code" Use="required"><gc:ShortName>Code</gc:ShortName><gc:Data Type="string"/></gc:Column><gc:Column Id="name" Use="required"><gc:ShortName>Name</gc:ShortName><gc:Data Type="string"/></gc:Column><gc:Key Id="codeKey"><gc:ShortName>CodeKey</gc:ShortName><gc:ColumnRef Ref="code"/></gc:Key><gc:Key Id="codenameKey"><gc:ShortName>CodenameKey</gc:ShortName><gc:ColumnRef Ref="name"/></gc:Key></gc:ColumnSet><gc:SimpleCodeList><gc:Row><gc:Value ColumnRef="code"><gc:SimpleValue>001</gc:SimpleValue></gc:Value><gc:Value ColumnRef="name"><gc:SimpleValue>zu Fuß</gc:SimpleValue></gc:Value></gc:Row><gc:Row><gc:Value ColumnRef="code"><gc:SimpleValue>002</gc:SimpleValue></gc:Value><gc:Value ColumnRef="name"><gc:SimpleValue>per Fahrrad</gc:SimpleValue></gc:Value></gc:Row><gc:Row><gc:Value ColumnRef="code"><gc:SimpleValue>003</gc:SimpleValue></gc:Value><gc:Value ColumnRef="name"><gc:SimpleValue>per Motorrad</gc:SimpleValue></gc:Value></gc:Row><gc:Row><gc:Value ColumnRef="code"><gc:SimpleValue>004</gc:SimpleValue></gc:Value><gc:Value ColumnRef="name"><gc:SimpleValue>per Personenkraftwagen</gc:SimpleValue></gc:Value></gc:Row><gc:Row><gc:Value ColumnRef="code"><gc:SimpleValue>005</gc:SimpleValue></gc:Value><gc:Value ColumnRef="name"><gc:SimpleValue>Sonstiges</gc:SimpleValue></gc:Value></gc:Row></gc:SimpleCodeList></gc:CodeList> \ No newline at end of file diff --git a/fim-adapter/src/main/resources/fim-s17000652_1.4/C17001209_genericode.xml b/fim-adapter/src/main/resources/fim-s17000652_1.4/C17001209_genericode.xml deleted file mode 100644 index b748e48c..00000000 --- a/fim-adapter/src/main/resources/fim-s17000652_1.4/C17001209_genericode.xml +++ /dev/null @@ -1 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?><gc:CodeList xmlns:gc="http://docs.oasis-open.org/codelist/ns/genericode/1.0/"><gc:Identification><gc:ShortName></gc:ShortName><gc:LongName></gc:LongName><gc:Version>2023-09-29</gc:Version><gc:CanonicalUri>urn:de:fim:codeliste:buehneversammlung</gc:CanonicalUri><gc:CanonicalVersionUri>urn:de:fim:codeliste:buehneversammlung_2023-09-29</gc:CanonicalVersionUri></gc:Identification><gc:ColumnSet><gc:Column Id="code" Use="required"><gc:ShortName>Code</gc:ShortName><gc:Data Type="string"/></gc:Column><gc:Column Id="name" Use="required"><gc:ShortName>Name</gc:ShortName><gc:Data Type="string"/></gc:Column><gc:Key Id="codeKey"><gc:ShortName>CodeKey</gc:ShortName><gc:ColumnRef Ref="code"/></gc:Key><gc:Key Id="codenameKey"><gc:ShortName>CodenameKey</gc:ShortName><gc:ColumnRef Ref="name"/></gc:Key></gc:ColumnSet><gc:SimpleCodeList><gc:Row><gc:Value ColumnRef="code"><gc:SimpleValue>001</gc:SimpleValue></gc:Value><gc:Value ColumnRef="name"><gc:SimpleValue>Ja</gc:SimpleValue></gc:Value></gc:Row><gc:Row><gc:Value ColumnRef="code"><gc:SimpleValue>002</gc:SimpleValue></gc:Value><gc:Value ColumnRef="name"><gc:SimpleValue>Nein</gc:SimpleValue></gc:Value></gc:Row><gc:Row><gc:Value ColumnRef="code"><gc:SimpleValue>003</gc:SimpleValue></gc:Value><gc:Value ColumnRef="name"><gc:SimpleValue>Nicht bekannt</gc:SimpleValue></gc:Value></gc:Row><gc:Row><gc:Value ColumnRef="code"><gc:SimpleValue>004</gc:SimpleValue></gc:Value><gc:Value ColumnRef="name"><gc:SimpleValue>Keine</gc:SimpleValue></gc:Value></gc:Row></gc:SimpleCodeList></gc:CodeList> \ No newline at end of file diff --git a/fim-adapter/src/main/resources/fim-s17000652_1.4/S17000652V1.4_xfall.xsd b/fim-adapter/src/main/resources/fim-s17000652_1.4/S17000652V1.4_xfall.xsd deleted file mode 100644 index c5c859d0..00000000 --- a/fim-adapter/src/main/resources/fim-s17000652_1.4/S17000652V1.4_xfall.xsd +++ /dev/null @@ -1,32 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?><xs:schema xmlns:xfd="urn:xoev-de:xfall:standard:fim-s17000652_1.4" xmlns:xs="http://www.w3.org/2001/XMLSchema" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="urn:xoev-de:xfall:standard:fim-s17000652_1.4" version="V1.4"><xs:element name="fim.S17000652.17000652001004"><xs:complexType><xs:sequence><xs:element name="G17003529" type="xfd:G17003529"><xs:annotation><xs:documentation><name>EfA|SH Standard</name><bezug>tbd</bezug></xs:documentation></xs:annotation></xs:element><xs:element name="F17009191" type="xs:boolean"><xs:annotation><xs:documentation><name>Anzeige durch Person </name><definition>Wahrheitswert: ja oder nein
 -</definition><bezug>Art. 8 GG;§ 11 VershFG SG
 -</bezug></xs:documentation></xs:annotation></xs:element><xs:element minOccurs="0" name="G17002112" type="xfd:G17002112"><xs:annotation><xs:documentation><name>Anzeigenersteller:in</name><bezug>Art. 8 GG; § 11 VershFG SG</bezug></xs:documentation></xs:annotation></xs:element><xs:element minOccurs="0" name="G17005403" type="xfd:G17005403"><xs:annotation><xs:documentation><name>Organisation </name><definition>Angaben zur Organisation, welche die Versammlung durchführen möchte</definition><bezug>Art. 8 GG;§ 11 VershFG SG
 -</bezug></xs:documentation></xs:annotation></xs:element><xs:element name="F17003371" type="xs:string"><xs:annotation><xs:documentation><name>Anzeigenart</name><bezug>Art. 8 GG; § 11 VershFG SG</bezug></xs:documentation></xs:annotation></xs:element><xs:element minOccurs="0" name="G17005404" type="xfd:G17005404"><xs:annotation><xs:documentation><name>Versammlung (ortsfest)</name><bezug>Art. 8 GG ; § 11 VershFG SH</bezug></xs:documentation></xs:annotation></xs:element><xs:element minOccurs="0" name="G17005410" type="xfd:G17005410"><xs:annotation><xs:documentation><name>Versammlung (Aufzug)</name><bezug>Art. 8 GG ; § 11 VersFG SH</bezug></xs:documentation></xs:annotation></xs:element></xs:sequence></xs:complexType></xs:element><xs:complexType name="G17003529"><xs:sequence><xs:element name="G05001479" type="xfd:G05001479"><xs:annotation><xs:documentation><name>nachrichtenkopf</name><beschreibung>Der Nachrichtenkopf beinhaltet alle erforderlichen Informationen für die Zustellung und Verifizierung mit Hilfe des DVDV.</beschreibung><bezug>DVDV</bezug></xs:documentation></xs:annotation></xs:element><xs:element name="F17005454" type="xs:boolean"><xs:annotation><xs:documentation><name>Datenschutzhinweis DSGVO</name><bezug>tbd</bezug></xs:documentation></xs:annotation></xs:element><xs:element name="F17005455" type="xs:boolean"><xs:annotation><xs:documentation><name>Zustimmung zu einem digitalen Bescheid</name><bezug>tbd</bezug></xs:documentation></xs:annotation></xs:element><xs:element name="F17005533" type="xs:string"><xs:annotation><xs:documentation><name>UUID</name><bezug>tbd</bezug></xs:documentation></xs:annotation></xs:element></xs:sequence></xs:complexType><xs:complexType name="G05001479"><xs:sequence><xs:element name="G05001480" type="xfd:G05001480"><xs:annotation><xs:documentation><name>identifikation.nachricht</name><bezug>DVDV</bezug></xs:documentation></xs:annotation></xs:element><xs:element name="G05001481" type="xfd:G05001481"><xs:annotation><xs:documentation><name>Leser</name><bezug>DVDV</bezug></xs:documentation></xs:annotation></xs:element><xs:element name="G05001482" type="xfd:G05001482"><xs:annotation><xs:documentation><name>Autor</name><bezug>DVDV</bezug></xs:documentation></xs:annotation></xs:element></xs:sequence></xs:complexType><xs:complexType name="G05001480"><xs:sequence><xs:element name="F05002750" type="xs:string"><xs:annotation><xs:documentation><name>nachrichtenUUID</name><bezug>DVDV</bezug></xs:documentation></xs:annotation></xs:element><xs:element name="F05002751" type="xs:string"><xs:annotation><xs:documentation><name>erstellungszeitpunkt</name><bezug>DVDV</bezug></xs:documentation></xs:annotation></xs:element><xs:element name="F05002752" type="xs:string"><xs:annotation><xs:documentation><name>nachrichtentyp</name><bezug>DVDV</bezug></xs:documentation></xs:annotation></xs:element><xs:element name="F05002753" type="xs:string"><xs:annotation><xs:documentation><name>dienstname</name><bezug>DVDV</bezug></xs:documentation></xs:annotation></xs:element></xs:sequence></xs:complexType><xs:complexType name="G05001481"><xs:sequence><xs:element name="F05002754" type="xs:string"><xs:annotation><xs:documentation><name>Organisationsname</name><bezug>DVDV</bezug></xs:documentation></xs:annotation></xs:element><xs:element name="F05002755" type="xs:string"><xs:annotation><xs:documentation><name>Organisationsschlüssel</name><bezug>DVDV</bezug></xs:documentation></xs:annotation></xs:element><xs:element name="F05002756" type="xs:string"><xs:annotation><xs:documentation><name>Kategorie</name><bezug>DVDV</bezug></xs:documentation></xs:annotation></xs:element></xs:sequence></xs:complexType><xs:complexType name="G05001482"><xs:sequence><xs:element name="F05002754" type="xs:string"><xs:annotation><xs:documentation><name>Organisationsname</name><bezug>DVDV</bezug></xs:documentation></xs:annotation></xs:element><xs:element name="F05002755" type="xs:string"><xs:annotation><xs:documentation><name>Organisationsschlüssel</name><bezug>DVDV</bezug></xs:documentation></xs:annotation></xs:element><xs:element name="F05002756" type="xs:string"><xs:annotation><xs:documentation><name>Kategorie</name><bezug>DVDV</bezug></xs:documentation></xs:annotation></xs:element></xs:sequence></xs:complexType><xs:complexType name="G17002112"><xs:sequence><xs:element name="F60000228" type="xs:string"><xs:annotation><xs:documentation><name>Vornamen</name><beschreibung>Laut BSI TR-03123 soll Vorname ≤ 80 Zeichen betragen.
 -Laut PAuswV soll Vorname nicht mehr als 26 Zeichen bzw. 2*40 = 80 Zeichen betragen.</beschreibung><definition>Plural zu Vorname</definition><bezug>§ 5 (2) Nr. 2 PAuswG vom 21.6.2019; Anhang 3 PAuswV vom 28.9.2017; 
 -Tabelle 9 BSI TR-03123 Version 1.5.1; XOEV.Kernkomponente.NameNatuerlichePerson.vorname vom 31.08.2020</bezug></xs:documentation></xs:annotation></xs:element><xs:element name="F60000227" type="xs:string"><xs:annotation><xs:documentation><name>Familienname</name><beschreibung>Laut BSI TR-03123 soll die Gesamtlänge für Familienname, Titel und Geburtsname nicht mehr als 120 Zeichen betragen. Laut PAuswV soll Name (Familienname und Geburtsname) nicht mehr als 2*26 = 52 Zeichen bzw. 3*40 = 120 Zeichen betragen.</beschreibung><definition>Familienname einer natürlichen Person bestehend aus Nachname, Zuname bzw. Familienname.</definition><bezug>§ 5 (2) Nr. 1 PAuswG vom 21.6.2019; Anhang 3 PAuswV vom 28.9.2017; Tabelle 9 BSI TR-03123 Version 1.5.1; XOEV.Kernkomponente.NameNatuerlichePerson.familienname vom 31.01.2020</bezug></xs:documentation></xs:annotation></xs:element><xs:element name="G60000086" type="xfd:G60000086"><xs:annotation><xs:documentation><name>Anschrift Inland Straßenanschrift</name></xs:documentation></xs:annotation></xs:element><xs:element minOccurs="0" name="F60000240" type="xs:string"><xs:annotation><xs:documentation><name>Telefon</name><beschreibung>Dieses Feld wurde angelehnt an ITU E.123. Eine Prüfung über ein Pattern erfolgt nicht, um den Eingebenden nicht zu überfordern.</beschreibung><definition>Telefonnummer</definition><bezug>ITU E.123</bezug></xs:documentation></xs:annotation></xs:element><xs:element minOccurs="0" name="F60000242" type="xs:string"><xs:annotation><xs:documentation><name>E-Mail</name><definition>Elektronische Adresse zum Senden und Empfangen von digitalen Nachrichten (E-Mails) z.B. MaxMustermann@email.de</definition><bezug>RFC 5322; RFC 5321</bezug></xs:documentation></xs:annotation></xs:element><xs:element name="F17009011" type="xs:boolean"><xs:annotation><xs:documentation><name>Auswahl Anzeigenersteller:in = Verantwortliche Versammlungsleiter:in</name><definition>Angabe ob Sie als Anzeigenersteller:in ebenfalls Verantwortliche Versammlungsleiter:in sind</definition><bezug>Art. 8 GG; § 11 VershFG SG</bezug></xs:documentation></xs:annotation></xs:element><xs:element minOccurs="0" name="G17002127" type="xfd:G17002127"><xs:annotation><xs:documentation><name>Verantwortliche Versammlungsleiter:in</name><bezug>Art. 8 GG; § 11 VershFG SG</bezug></xs:documentation></xs:annotation></xs:element></xs:sequence></xs:complexType><xs:complexType name="G60000086"><xs:sequence><xs:element name="F60000243" type="xs:string"><xs:annotation><xs:documentation><name>Straße</name><beschreibung>Kompatibilität zu EPA in TR XhD v 1.4 sollte Feldlänge min. 50. Bei XInneres 8 ist die Feldlänge <= 55 Zeichen.</beschreibung><bezug>XInneres.Meldeanschrift.strasse Version 8</bezug></xs:documentation></xs:annotation></xs:element><xs:element minOccurs="0" name="F60000244" type="xs:string"><xs:annotation><xs:documentation><name>Hausnummer</name><beschreibung>Die Modellierung aus XInneres wurde nicht 1:1 übernommen, um die Komplexität für die Ausfüllenden nicht zu hoch zu setzen. Es wurde darauf verzichtet für das Ende von Hausnummernbereichen eigene Felder zu modellieren. Daher ist die Feldlänge hier heraufgesetzt und eine entsprechende Beschreibung wurde eingefügt. Die Feldlänge setzt sich aus der maximalen Feldlänge zweier Hausnummern (jeweils 4), zweier Buchstaben (jeweils 1) und eines Zeichen (-) zusammen.</beschreibung><definition>Es sind die Ziffern und Buchstabeneiner Hausnummer anzugeben. Eine Hausnummer dient der genauen Lokalisierung eines Grundstücks, Gebäudes oder Gebäudeteils (Eingang) in einer Straße. Geben Sie Hausnummernbereiche immer nach folgendem Beispiel ohne Leerzeichen an: 12a-14d</definition><bezug>XInneres.Meldeanschrift.hausnummer Version 8</bezug></xs:documentation></xs:annotation></xs:element><xs:element name="F60000246" type="xs:string"><xs:annotation><xs:documentation><name>Postleitzahl</name><definition>Es ist die Postleitzahl anzugeben.
 -
 -Der Typ dieses Elements ist eine Einschränkung des Basistyps String.Latin.</definition><bezug>XInneres.Meldeanschrift.postleitzahl Version 8</bezug></xs:documentation></xs:annotation></xs:element><xs:element name="F60000247" type="xs:string"><xs:annotation><xs:documentation><name>Ort</name><beschreibung>Kompatibilität zu EPA in TR XhD v 1.4 sollte Feldlänge min. 44. Laut PAuswV 2*25 = 50 Zeichen. Laut Xinneres.Meldeanschrift.Wohnort Version 8 = 40 Zeichen.
 -Laut BSI TR-03123 ≤ 105 Zeichen.</beschreibung><definition>Enthält den Namen eines Ortes (Gemeinde, Ortschaft oder Stadt).</definition><bezug>§ 5 (2) Nr. 9 PAuswG vom 21.6.2019; Anhang 3 Abschnitt 1 (Wohnort) PAuswV vom 28.9.2017; Tabelle 11 BSI TR-03123, Version 1.5.1; Xinneres.Meldeanschrift.Wohnort Version 8; XOEV.Kernkomponente.Anschrift.ort vom 31.01.2020</bezug></xs:documentation></xs:annotation></xs:element><xs:element minOccurs="0" name="F60000248" type="xs:string"><xs:annotation><xs:documentation><name>Anschrift Zusatzangaben</name><definition>Es sind Zusatzangaben zur Anschrift anzugeben, z.B. Hinterhaus, Gartenhaus.
 -</definition><bezug>XInneres.Meldeanschrift.zusatzangaben Version 8</bezug></xs:documentation></xs:annotation></xs:element></xs:sequence></xs:complexType><xs:complexType name="G17002127"><xs:sequence><xs:element name="F60000228" type="xs:string"><xs:annotation><xs:documentation><name>Vornamen</name><beschreibung>Laut BSI TR-03123 soll Vorname ≤ 80 Zeichen betragen.
 -Laut PAuswV soll Vorname nicht mehr als 26 Zeichen bzw. 2*40 = 80 Zeichen betragen.</beschreibung><definition>Plural zu Vorname</definition><bezug>§ 5 (2) Nr. 2 PAuswG vom 21.6.2019; Anhang 3 PAuswV vom 28.9.2017; 
 -Tabelle 9 BSI TR-03123 Version 1.5.1; XOEV.Kernkomponente.NameNatuerlichePerson.vorname vom 31.08.2020</bezug></xs:documentation></xs:annotation></xs:element><xs:element name="F60000227" type="xs:string"><xs:annotation><xs:documentation><name>Familienname</name><beschreibung>Laut BSI TR-03123 soll die Gesamtlänge für Familienname, Titel und Geburtsname nicht mehr als 120 Zeichen betragen. Laut PAuswV soll Name (Familienname und Geburtsname) nicht mehr als 2*26 = 52 Zeichen bzw. 3*40 = 120 Zeichen betragen.</beschreibung><definition>Familienname einer natürlichen Person bestehend aus Nachname, Zuname bzw. Familienname.</definition><bezug>§ 5 (2) Nr. 1 PAuswG vom 21.6.2019; Anhang 3 PAuswV vom 28.9.2017; Tabelle 9 BSI TR-03123 Version 1.5.1; XOEV.Kernkomponente.NameNatuerlichePerson.familienname vom 31.01.2020</bezug></xs:documentation></xs:annotation></xs:element><xs:element name="G60000086" type="xfd:G60000086"><xs:annotation><xs:documentation><name>Anschrift Inland Straßenanschrift</name></xs:documentation></xs:annotation></xs:element><xs:element minOccurs="0" name="F60000242" type="xs:string"><xs:annotation><xs:documentation><name>E-Mail</name><definition>Elektronische Adresse zum Senden und Empfangen von digitalen Nachrichten (E-Mails) z.B. MaxMustermann@email.de</definition><bezug>RFC 5322; RFC 5321</bezug></xs:documentation></xs:annotation></xs:element><xs:element minOccurs="0" name="F60000240" type="xs:string"><xs:annotation><xs:documentation><name>Telefon</name><beschreibung>Dieses Feld wurde angelehnt an ITU E.123. Eine Prüfung über ein Pattern erfolgt nicht, um den Eingebenden nicht zu überfordern.</beschreibung><definition>Telefonnummer</definition><bezug>ITU E.123</bezug></xs:documentation></xs:annotation></xs:element><xs:element minOccurs="0" name="F17011808" type="xs:string"><xs:annotation><xs:documentation><name>Telefonische Erreichbarkeit am Tag der Veranstaltung</name><bezug>§ 11 VershFG</bezug></xs:documentation></xs:annotation></xs:element></xs:sequence></xs:complexType><xs:complexType name="G17005403"><xs:sequence><xs:element name="G17007200" type="xfd:G17007200"><xs:annotation><xs:documentation><name>Daten der anzeigenden Organisation</name><bezug>Art. 8 GG ;§ 11 VershFG SH</bezug></xs:documentation></xs:annotation></xs:element><xs:element name="G17007201" type="xfd:G17007201"><xs:annotation><xs:documentation><name>Ansprechperson der Organisation</name><definition>Sie sollten als Versammlungsleitung oder veranstaltende Person oder Organisation Ihre Telefonnummer oder E-Mail-Adresse, unter der Sie vor und während der Versammlung erreichbar sind, angeben. Dies dient der schnellen, einfachen und vertrauensvollen Zusammenarbeit mit der Versammlungsbehörde und der Sicherstellung des Schutzes Ihrer Versammlung.</definition><bezug>Art. 8 GG;§ 11 VershFG SG</bezug></xs:documentation></xs:annotation></xs:element><xs:element name="G17002127" type="xfd:G17002127"><xs:annotation><xs:documentation><name>Verantwortliche Versammlungsleiter:in</name><bezug>Art. 8 GG; § 11 VershFG SG</bezug></xs:documentation></xs:annotation></xs:element></xs:sequence></xs:complexType><xs:complexType name="G17007200"><xs:sequence><xs:element name="F60000319" type="xs:string"><xs:annotation><xs:documentation><name>Eingetragener Name / Organisationsname</name><beschreibung>Laut XGewerbeanzeige.Betrieb.eingetragenerName soll der eingetragene Name 1-1000 Zeichen betragen.</beschreibung><definition>Die im Handels- oder Genossenschaftsregister eingetragene Firma eines wirtschaftlich Tätigen bzw. einer wirtschaftlichen Tätigkeit (z. B. eingetragenes Einzelunternehmen,eingetragene Zweigniederlassung) bzw. der im Vereinsregister, Partnerschaftsregister oder Stiftungsverzeichnis eingetragene Name.
 -
 -Der eingetragene Name kann auch in einem Register festgehalten sein, welches in einem anderen Staat geführt wird.
 -
 -Der eingetragene Name ist abzugrenzen von der Geschäftsbezeichnung. 
 -
 -Das Kerndatenobjekt bildet auch die Namen juristischer Personen, Personengesellschaften oder sonstiger Personenvereinigungen ab, die nicht in einem Register, aber kraft Gesetz geführt werden.</definition><bezug>XOEV.Kernkomponente.NameOrganisation.name vom 01.08.2017; XGewerbeanzeige.Betrieb.eingetragenerName Version 2.2; XUnternehmen.Kerndatenmodell.Eingetragener Name Version 1.1</bezug></xs:documentation></xs:annotation></xs:element><xs:element minOccurs="0" name="F17011809" type="xs:string"><xs:annotation><xs:documentation><name>Organisationseinheit</name><definition>Optionale Angabe der Organisationseinheit</definition><bezug>Art. 8 GG;§ 11 VershFG SG</bezug></xs:documentation></xs:annotation></xs:element><xs:element name="G60000086" type="xfd:G60000086"><xs:annotation><xs:documentation><name>Anschrift Inland Straßenanschrift</name><definition>Angaben für die Adressierung im Inland, soweit es sich um die Anschrift eines Gebäudes handelt.</definition><bezug>urn:xoevde:xunternehmen:kerndatenobjekt:anschriftinlandstrassenanschrift</bezug></xs:documentation></xs:annotation></xs:element></xs:sequence></xs:complexType><xs:complexType name="G60000086"><xs:sequence><xs:element name="F60000243" type="xs:string"><xs:annotation><xs:documentation><name>Straße</name><beschreibung>Kompatibilität zu EPA in TR XhD v 1.4 sollte Feldlänge min. 50. Bei XInneres 8 ist die Feldlänge <= 55 Zeichen.</beschreibung><bezug>XInneres.Meldeanschrift.strasse Version 8</bezug></xs:documentation></xs:annotation></xs:element><xs:element minOccurs="0" name="F60000244" type="xs:string"><xs:annotation><xs:documentation><name>Hausnummer</name><beschreibung>Die Modellierung aus XInneres wurde nicht 1:1 übernommen, um die Komplexität für die Ausfüllenden nicht zu hoch zu setzen. Es wurde darauf verzichtet für das Ende von Hausnummernbereichen eigene Felder zu modellieren. Daher ist die Feldlänge hier heraufgesetzt und eine entsprechende Beschreibung wurde eingefügt. Die Feldlänge setzt sich aus der maximalen Feldlänge zweier Hausnummern (jeweils 4), zweier Buchstaben (jeweils 1) und eines Zeichen (-) zusammen.</beschreibung><definition>Es sind die Ziffern und Buchstabeneiner Hausnummer anzugeben. Eine Hausnummer dient der genauen Lokalisierung eines Grundstücks, Gebäudes oder Gebäudeteils (Eingang) in einer Straße. Geben Sie Hausnummernbereiche immer nach folgendem Beispiel ohne Leerzeichen an: 12a-14d</definition><bezug>XInneres.Meldeanschrift.hausnummer Version 8</bezug></xs:documentation></xs:annotation></xs:element><xs:element name="F60000246" type="xs:string"><xs:annotation><xs:documentation><name>Postleitzahl</name><definition>Es ist die Postleitzahl anzugeben.
 -
 -Der Typ dieses Elements ist eine Einschränkung des Basistyps String.Latin.</definition><bezug>XInneres.Meldeanschrift.postleitzahl Version 8</bezug></xs:documentation></xs:annotation></xs:element><xs:element name="F60000247" type="xs:string"><xs:annotation><xs:documentation><name>Ort</name><beschreibung>Kompatibilität zu EPA in TR XhD v 1.4 sollte Feldlänge min. 44. Laut PAuswV 2*25 = 50 Zeichen. Laut Xinneres.Meldeanschrift.Wohnort Version 8 = 40 Zeichen. -Laut BSI TR-03123 kleiner gleich 105 Zeichen.</beschreibung><definition>Enthält den Namen eines Ortes (Gemeinde, Ortschaft oder Stadt).</definition><bezug>§ 5 (2) Nr. 9 PAuswG vom 21.6.2019; Anhang 3 Abschnitt 1 (Wohnort) PAuswV vom 28.9.2017; Tabelle 11 BSI TR-03123, Version 1.5.1; Xinneres.Meldeanschrift.Wohnort Version 8; XOEV.Kernkomponente.Anschrift.ort vom 31.01.2020</bezug></xs:documentation></xs:annotation></xs:element><xs:element minOccurs="0" name="F60000248" type="xs:string"><xs:annotation><xs:documentation><name>Anschrift Zusatzangaben</name><definition>Es sind Zusatzangaben zur Anschrift anzugeben, z.B. Hinterhaus, Gartenhaus.
 -</definition><bezug>XInneres.Meldeanschrift.zusatzangaben Version 8</bezug></xs:documentation></xs:annotation></xs:element></xs:sequence></xs:complexType><xs:complexType name="G17007201"><xs:sequence><xs:element name="F60000228" type="xs:string"><xs:annotation><xs:documentation><name>Vornamen</name><beschreibung>Laut BSI TR-03123 soll Vorname <= 80 Zeichen betragen.
 -Laut PAuswV soll Vorname nicht mehr als 26 Zeichen bzw. 2*40 = 80 Zeichen betragen.</beschreibung><definition>Plural zu Vorname</definition><bezug>§ 5 (2) Nr. 2 PAuswG vom 21.6.2019; Anhang 3 PAuswV vom 28.9.2017; 
 -Tabelle 9 BSI TR-03123 Version 1.5.1; XOEV.Kernkomponente.NameNatuerlichePerson.vorname vom 31.08.2020</bezug></xs:documentation></xs:annotation></xs:element><xs:element name="F60000227" type="xs:string"><xs:annotation><xs:documentation><name>Familienname</name><beschreibung>Laut BSI TR-03123 soll die Gesamtlänge für Familienname, Titel und Geburtsname nicht mehr als 120 Zeichen betragen. Laut PAuswV soll Name (Familienname und Geburtsname) nicht mehr als 2*26 = 52 Zeichen bzw. 3*40 = 120 Zeichen betragen.</beschreibung><definition>Familienname einer natürlichen Person bestehend aus Nachname, Zuname bzw. Familienname.</definition><bezug>§ 5 (2) Nr. 1 PAuswG vom 21.6.2019; Anhang 3 PAuswV vom 28.9.2017; Tabelle 9 BSI TR-03123 Version 1.5.1; XOEV.Kernkomponente.NameNatuerlichePerson.familienname vom 31.01.2020</bezug></xs:documentation></xs:annotation></xs:element><xs:element minOccurs="0" name="F60000240" type="xs:string"><xs:annotation><xs:documentation><name>Telefon</name><beschreibung>Dieses Feld wurde angelehnt an ITU E.123. Eine Prüfung über ein Pattern erfolgt nicht, um den Eingebenden nicht zu überfordern.</beschreibung><definition>Telefonnummer</definition><bezug>ITU E.123</bezug></xs:documentation></xs:annotation></xs:element><xs:element minOccurs="0" name="F60000242" type="xs:string"><xs:annotation><xs:documentation><name>E-Mail</name><definition>Elektronische Adresse zum Senden und Empfangen von digitalen Nachrichten (E-Mails) z.B. MaxMustermann@email.de</definition><bezug>RFC 5322; RFC 5321</bezug></xs:documentation></xs:annotation></xs:element></xs:sequence></xs:complexType><xs:complexType name="G17005404"><xs:sequence><xs:element name="G17007202" type="xfd:G17007202"><xs:annotation><xs:documentation><name>Allgemeine Angaben zur Versammlung</name><bezug>Art. 8 GG ; § 11 VershFG SH</bezug></xs:documentation></xs:annotation></xs:element><xs:element name="G17007205" type="xfd:G17007205"><xs:annotation><xs:documentation><name>Weitere Angaben </name><definition>Angaben zur geplanten Durchführung der Versammlung.</definition><bezug>Art. 8 GG ; §§ 9, 11 VersFG SH</bezug></xs:documentation></xs:annotation></xs:element></xs:sequence></xs:complexType><xs:complexType name="G17007202"><xs:sequence><xs:element name="F17003373" type="xs:string"><xs:annotation><xs:documentation><name>Thema der Versammlung</name><bezug>Art. 8 GG; § 11 VershFG SG</bezug></xs:documentation></xs:annotation></xs:element><xs:element minOccurs="0" name="F17011810" type="xs:string"><xs:annotation><xs:documentation><name>Beschreibung der Versammlung</name><bezug>Art. 8 GG ; § 11 VershFG SH</bezug></xs:documentation></xs:annotation></xs:element><xs:element name="F17003377" type="xs:string"><xs:annotation><xs:documentation><name>Versammlungsort</name><bezug>Art. 8 GG; § 11 VershFG SG</bezug></xs:documentation></xs:annotation></xs:element><xs:element minOccurs="0" name="G17005405" type="xfd:G17005405"><xs:annotation><xs:documentation><name>Karte Versammlungsort</name><definition>Anlage eines Kartenausschnitts</definition><bezug>Art. 8 GG; § 11 VershFG SG</bezug></xs:documentation></xs:annotation></xs:element><xs:element name="G17005406" type="xfd:G17005406"><xs:annotation><xs:documentation><name>Zeitraum (Versammlungsanzeige)</name><definition>Gibt den Anfang und das Ende eines Zeitraums an.</definition><bezug>Art. 8 GG; § 11 VershFG SG</bezug></xs:documentation></xs:annotation></xs:element><xs:element minOccurs="0" name="F17011814" type="xs:string"><xs:annotation><xs:documentation><name>Grund für die verspätete Anmeldung</name><definition>Im Falle der nicht fristgemäßen Anmeldung der Versammlung - Optional Grund ergänzen. </definition><bezug>Art. 8 GG ; § 11 VershFG SH</bezug></xs:documentation></xs:annotation></xs:element><xs:element minOccurs="0" name="F17011815" type="xs:string"><xs:annotation><xs:documentation><name>Telefonnummer zur Rücksprache der verspäteten Anmeldung</name><bezug>Art. 8 GG ; § 11 VershFG SH iVm ITU E.123</bezug></xs:documentation></xs:annotation></xs:element></xs:sequence></xs:complexType><xs:complexType name="G17005405"><xs:sequence><xs:element maxOccurs="5" minOccurs="0" name="F60000296" type="xs:string"><xs:annotation><xs:documentation><name>Nachweis</name><definition>Nachweisdokument, um eine Information zu bestätigen, z.B. Sachkundenachweis.</definition></xs:documentation></xs:annotation></xs:element></xs:sequence></xs:complexType><xs:complexType name="G17005406"><xs:sequence><xs:element name="F60000048" type="xs:date"><xs:annotation><xs:documentation><name>Anfang</name><definition>Beinhaltet das Datum des Anfangs eines Zeitraums.</definition><bezug>urn:xoev-de:kosit:xoev:kernkomponente:zeitraum vom 31.08.2020</bezug></xs:documentation></xs:annotation></xs:element><xs:element name="F17001348" type="xs:decimal"><xs:annotation><xs:documentation><name>Uhrzeit Start</name><bezug>div.</bezug></xs:documentation></xs:annotation></xs:element><xs:element name="F60000049" type="xs:date"><xs:annotation><xs:documentation><name>Ende</name><definition>Beinhaltet das Datum des Ende eines Zeitraums.</definition><bezug>urn:xoev-de:kosit:xoev:kernkomponente:zeitraum vom 31.08.2020</bezug></xs:documentation></xs:annotation></xs:element><xs:element name="F17001349" type="xs:decimal"><xs:annotation><xs:documentation><name>Uhrzeit Abschluss</name><bezug>div.</bezug></xs:documentation></xs:annotation></xs:element></xs:sequence></xs:complexType><xs:complexType name="G17007205"><xs:sequence><xs:element name="F17003379" type="xs:integer"><xs:annotation><xs:documentation><name>Anzahl der Teilnehmenden</name><bezug>Art. 8 GG; § 11 VershFG SH</bezug></xs:documentation></xs:annotation></xs:element><xs:element minOccurs="0" name="F17003380" type="xs:integer"><xs:annotation><xs:documentation><name>Anzahl eingeplanter Ordner:innen</name><definition>Empfehlung: 1 Ordner:in je 50 Teilnehmende</definition><bezug>Art. 8 GG; § 11 VershFG SG</bezug></xs:documentation></xs:annotation></xs:element><xs:element minOccurs="0" name="F17003382" type="xs:string"><xs:annotation><xs:documentation><name>Weitere teilnehmende Organisationen</name><bezug>Art. 8 GG; § 11 VershFG SG</bezug></xs:documentation></xs:annotation></xs:element><xs:element name="G17007234" type="xfd:G17007234"><xs:annotation><xs:documentation><name>Aufbauzeit</name><bezug>§§ 11,14 VersFG SH</bezug></xs:documentation></xs:annotation></xs:element><xs:element name="G17007235" type="xfd:G17007235"><xs:annotation><xs:documentation><name>Abbauzeit</name><bezug>§§ 11,14 VersFG SH</bezug></xs:documentation></xs:annotation></xs:element><xs:element minOccurs="0" name="F17003383" type="xs:string"><xs:annotation><xs:documentation><name>Demonstrationsmittel</name><bezug>Art. 8 GG; § 11 VershFG SG</bezug></xs:documentation></xs:annotation></xs:element><xs:element minOccurs="0" name="G17007207" type="xfd:G17007207"><xs:annotation><xs:documentation><name>Zusätzliche Informationen zu den geplanten Demonstrationsmitteln</name><definition>Optionale Schätzung der Anzahl der Fahnen und Transparente.</definition><bezug>Art. 8 GG ; §§ 9, 11 VershFG SH</bezug></xs:documentation></xs:annotation></xs:element><xs:element minOccurs="0" name="F17003384" type="xs:string"><xs:annotation><xs:documentation><name>Lautsprechereinsatz</name><bezug>Art. 8 GG ; § 11 VersFG SG</bezug></xs:documentation></xs:annotation></xs:element><xs:element minOccurs="0" name="G17007208" type="xfd:G17007208"><xs:annotation><xs:documentation><name>Zusätzliche Informationen zum geplanten Lautsprechereinsatz</name><definition>Angaben zum geplanten Einsatz von Lautsprechern und ggf. Transportfahrzeugen (Musikanlagen, Megafone, PKW/LKW usw.)</definition><bezug>Art. 8 GG ; § 11 VersFG SH</bezug></xs:documentation></xs:annotation></xs:element><xs:element maxOccurs="unbounded" minOccurs="0" name="G17007209" type="xfd:G17007209"><xs:annotation><xs:documentation><name>Geplante Bühnen</name><bezug>Art. 8 GG ; § 11 VersFG SH</bezug></xs:documentation></xs:annotation></xs:element><xs:element minOccurs="0" name="G17007210" type="xfd:G17007210"><xs:annotation><xs:documentation><name>Lagepläne / Skizzen der Aufbauten, Bilder / Informationen zu den Demonstrationsmitteln oder sonstige Dokumente/Informationen hochladen</name><bezug>Art. 8 GG ; §§ 9, 11 VersFG SH</bezug></xs:documentation></xs:annotation></xs:element></xs:sequence></xs:complexType><xs:complexType name="G17007234"><xs:sequence><xs:element name="F17011826" type="xs:string"><xs:annotation><xs:documentation><name>Beträgt die Aufbauzeit über 30 Minuten?</name><bezug>Art. 8 GG ; § 11 VersFG SH</bezug></xs:documentation></xs:annotation></xs:element><xs:element minOccurs="0" name="F17011853" type="xs:integer"><xs:annotation><xs:documentation><name>Auf-/Abbauzeit > 30 min </name><definition>Wenn die Auf- bzw. Abbauzeit mehr als 30 min beträgt in "F17011826 Beträgt die Aufbauzeit über 30 Minuten?" bzw. in "F17011827 Beträgt die Abbauzeit über 30 Minuten?" = Auswahl in C17001209 = 001 "Ja", wird "F17011853 Auf-/Abbauzeit > 30 min" zu einer Pflichtangabe.
 -</definition><bezug>§§ 11,14 VersFG SH</bezug></xs:documentation></xs:annotation></xs:element></xs:sequence></xs:complexType><xs:complexType name="G17007235"><xs:sequence><xs:element name="F17011827" type="xs:string"><xs:annotation><xs:documentation><name>Beträgt die Abbauzeit über 30 Minuten?</name><bezug>Art. 8 GG ; § 11 VersFG SH</bezug></xs:documentation></xs:annotation></xs:element><xs:element minOccurs="0" name="F17011853" type="xs:integer"><xs:annotation><xs:documentation><name>Auf-/Abbauzeit > 30 min </name><definition>Wenn die Auf- bzw. Abbauzeit mehr als 30 min beträgt in "F17011826 Beträgt die Aufbauzeit über 30 Minuten?" bzw. in "F17011827 Beträgt die Abbauzeit über 30 Minuten?" = Auswahl in C17001209 = 001 "Ja", wird "F17011853 Auf-/Abbauzeit > 30 min" zu einer Pflichtangabe.
 -</definition><bezug>§§ 11,14 VersFG SH</bezug></xs:documentation></xs:annotation></xs:element></xs:sequence></xs:complexType><xs:complexType name="G17007207"><xs:sequence><xs:element minOccurs="0" name="F17011818" type="xs:integer"><xs:annotation><xs:documentation><name>Anzahl Transparente</name><bezug>Art. 8 GG ; § 11 VersFG SH</bezug></xs:documentation></xs:annotation></xs:element><xs:element minOccurs="0" name="F17011819" type="xs:integer"><xs:annotation><xs:documentation><name>Anzahl Fahnen</name><bezug>Art. 8 GG ; § 11 VersFG SH</bezug></xs:documentation></xs:annotation></xs:element></xs:sequence></xs:complexType><xs:complexType name="G17007208"><xs:sequence><xs:element minOccurs="0" name="F17011820" type="xs:integer"><xs:annotation><xs:documentation><name>Anzahl Lautsprecher(anlagen)</name><bezug>Art. 8 GG ; § 11 VersFG SH</bezug></xs:documentation></xs:annotation></xs:element><xs:element minOccurs="0" name="F17011821" type="xs:integer"><xs:annotation><xs:documentation><name>Anzahl Megafone</name><bezug>Art. 8 GG ; § 11 VersFG SH</bezug></xs:documentation></xs:annotation></xs:element><xs:element minOccurs="0" name="F17011822" type="xs:integer"><xs:annotation><xs:documentation><name>Anzahl PKW</name><bezug>Art. 8 GG ; § 11 VersFG SH</bezug></xs:documentation></xs:annotation></xs:element><xs:element minOccurs="0" name="F17011824" type="xs:integer"><xs:annotation><xs:documentation><name>Anzahl LKW</name><bezug>Art. 8 GG ; § 11 VersFG SH</bezug></xs:documentation></xs:annotation></xs:element><xs:element minOccurs="0" name="F17011823" type="xs:decimal"><xs:annotation><xs:documentation><name>Gewicht LKW</name><bezug>Art. 8 GG ; § 11 VersFG SH</bezug></xs:documentation></xs:annotation></xs:element></xs:sequence></xs:complexType><xs:complexType name="G17007209"><xs:sequence><xs:element name="F17011825" type="xs:boolean"><xs:annotation><xs:documentation><name>Fester Bühnenaufbau? </name><definition>Wahrheitswert: Auswahl = "ja" entspricht "Fester Aufbau" - Auswahl ="nein" entspricht "mobile Bühne"</definition><bezug>Art. 8 GG ; § 11 VersFG SH</bezug></xs:documentation></xs:annotation></xs:element><xs:element name="F60000302" type="xs:decimal"><xs:annotation><xs:documentation><name>Länge in m</name></xs:documentation></xs:annotation></xs:element><xs:element name="F60000303" type="xs:decimal"><xs:annotation><xs:documentation><name>Breite in m</name></xs:documentation></xs:annotation></xs:element><xs:element name="F60000311" type="xs:decimal"><xs:annotation><xs:documentation><name>Gewicht in kg</name></xs:documentation></xs:annotation></xs:element></xs:sequence></xs:complexType><xs:complexType name="G17007210"><xs:sequence><xs:element maxOccurs="unbounded" minOccurs="0" name="F60000296" type="xs:string"><xs:annotation><xs:documentation><name>Nachweis</name><definition>Nachweisdokument, um eine Information zu bestätigen, z.B. Sachkundenachweis.</definition></xs:documentation></xs:annotation></xs:element></xs:sequence></xs:complexType><xs:complexType name="G17005410"><xs:sequence><xs:element name="G17007211" type="xfd:G17007211"><xs:annotation><xs:documentation><name>Allgemeine Angaben zum Aufzug</name><bezug>Art. 8 GG ; § 11 VershFG SH</bezug></xs:documentation></xs:annotation></xs:element><xs:element minOccurs="0" name="F17011830" type="xs:string"><xs:annotation><xs:documentation><name>Art der Teilnahme</name><definition>Auswahl Art der Teilnahme</definition><bezug>Art. 8 GG ; § 11 VersFG SH</bezug></xs:documentation></xs:annotation></xs:element><xs:element name="G17005412" type="xfd:G17005412"><xs:annotation><xs:documentation><name>Anfangspunkt</name><bezug>Art. 8 GG ; § 11 VersFG SG</bezug></xs:documentation></xs:annotation></xs:element><xs:element name="G17005501" type="xfd:G17005501"><xs:annotation><xs:documentation><name>Streckenverlauf</name><definition>Angaben zum Streckenverlauf und ggf. Karte hinzufügen</definition><bezug>Art. 8 GG ; § 11 VersFG SG</bezug></xs:documentation></xs:annotation></xs:element><xs:element maxOccurs="20" minOccurs="0" name="G17005411" type="xfd:G17005411"><xs:annotation><xs:documentation><name>Zwischenkundgebung</name><definition>Angaben zu möglichen Zwischenkundgebungen</definition><bezug>Art. 8 GG; § 11 VershFG SG
 -</bezug></xs:documentation></xs:annotation></xs:element><xs:element name="F17009218" type="xs:boolean"><xs:annotation><xs:documentation><name>Anfangspunkt = Endpunkt der Versammlung</name><definition>Wenn die Versammlung am gleichen Ort beginnt an dem Sie auch endet</definition><bezug>Art. 8 GG;§ 11 VershFG SG
 -</bezug></xs:documentation></xs:annotation></xs:element><xs:element minOccurs="0" name="G17005413" type="xfd:G17005413"><xs:annotation><xs:documentation><name>Anschrift Inland Straßenanschrift (Ende)</name><bezug>Art. 8 GG; § 11 VershFG SG</bezug></xs:documentation></xs:annotation></xs:element><xs:element name="G17007205" type="xfd:G17007205"><xs:annotation><xs:documentation><name>Weitere Angaben </name><definition>Angaben zur geplanten Durchführung der Versammlung.</definition><bezug>Art. 8 GG ; §§ 9, 11 VersFG SH</bezug></xs:documentation></xs:annotation></xs:element></xs:sequence></xs:complexType><xs:complexType name="G17007211"><xs:sequence><xs:element name="F17011828" type="xs:string"><xs:annotation><xs:documentation><name>Thema des Aufzug</name><bezug>Art. 8 GG; § 11 VersFG SG</bezug></xs:documentation></xs:annotation></xs:element><xs:element minOccurs="0" name="F17011829" type="xs:string"><xs:annotation><xs:documentation><name>Beschreibung des Aufzug</name><bezug>Art. 8 GG ; § 11 VersFG SH</bezug></xs:documentation></xs:annotation></xs:element><xs:element name="G17005406" type="xfd:G17005406"><xs:annotation><xs:documentation><name>Zeitraum (Versammlungsanzeige)</name><definition>Gibt den Anfang und das Ende eines Zeitraums an.</definition><bezug>Art. 8 GG; § 11 VershFG SG</bezug></xs:documentation></xs:annotation></xs:element><xs:element minOccurs="0" name="F17011814" type="xs:string"><xs:annotation><xs:documentation><name>Grund für die verspätete Anmeldung</name><definition>Im Falle der nicht fristgemäßen Anmeldung der Versammlung - Optional Grund ergänzen. </definition><bezug>Art. 8 GG ; § 11 VershFG SH</bezug></xs:documentation></xs:annotation></xs:element><xs:element minOccurs="0" name="F17011815" type="xs:string"><xs:annotation><xs:documentation><name>Telefonnummer zur Rücksprache der verspäteten Anmeldung</name><bezug>Art. 8 GG ; § 11 VershFG SH iVm ITU E.123</bezug></xs:documentation></xs:annotation></xs:element></xs:sequence></xs:complexType><xs:complexType name="G17005412"><xs:sequence><xs:element name="G60000086" type="xfd:G60000086"><xs:annotation><xs:documentation><name>Anschrift Inland Straßenanschrift</name><definition>Angaben für die Adressierung im Inland, soweit es sich um die Anschrift eines Gebäudes handelt.</definition><bezug>urn:xoevde:xunternehmen:kerndatenobjekt:anschriftinlandstrassenanschrift</bezug></xs:documentation></xs:annotation></xs:element><xs:element minOccurs="0" name="G17005405" type="xfd:G17005405"><xs:annotation><xs:documentation><name>Karte Versammlungsort</name><definition>Anlage eines Kartenausschnitts</definition><bezug>Art. 8 GG; § 11 VershFG SG</bezug></xs:documentation></xs:annotation></xs:element></xs:sequence></xs:complexType><xs:complexType name="G17005501"><xs:sequence><xs:element name="F17009317" type="xs:string"><xs:annotation><xs:documentation><name>Beschreibung Streckenverlauf </name><definition>Freitextfeld zum Streckenverlauf.</definition><bezug>Art. 8 GG ; § 11 VersFG SG
 -</bezug></xs:documentation></xs:annotation></xs:element><xs:element minOccurs="0" name="G17007212" type="xfd:G17007212"><xs:annotation><xs:documentation><name>Karte Streckenverlauf</name><definition>Anlage eines Kartenausschnitts</definition><bezug>Art. 8 GG; § 11 VershFG SG</bezug></xs:documentation></xs:annotation></xs:element></xs:sequence></xs:complexType><xs:complexType name="G17007212"><xs:sequence><xs:element maxOccurs="5" minOccurs="0" name="F60000296" type="xs:string"><xs:annotation><xs:documentation><name>Nachweis</name><definition>Nachweisdokument, um eine Information zu bestätigen, z.B. Sachkundenachweis.</definition></xs:documentation></xs:annotation></xs:element></xs:sequence></xs:complexType><xs:complexType name="G17005411"><xs:sequence><xs:element name="G17004014" type="xfd:G17004014"><xs:annotation><xs:documentation><name>Zeitraum (Versammlungsanzeige)</name><definition>Gibt den Anfang und das Ende eines Zeitraums an.</definition><bezug>Art. 8 GG; § 11 VershFG SG</bezug></xs:documentation></xs:annotation></xs:element><xs:element name="G60000086" type="xfd:G60000086"><xs:annotation><xs:documentation><name>Anschrift Inland Straßenanschrift</name><definition>Angaben für die Adressierung im Inland, soweit es sich um die Anschrift eines Gebäudes handelt.</definition><bezug>urn:xoevde:xunternehmen:kerndatenobjekt:anschriftinlandstrassenanschrift</bezug></xs:documentation></xs:annotation></xs:element><xs:element minOccurs="0" name="G17005405" type="xfd:G17005405"><xs:annotation><xs:documentation><name>Karte Versammlungsort</name><definition>Anlage eines Kartenausschnitts</definition><bezug>Art. 8 GG; § 11 VershFG SG</bezug></xs:documentation></xs:annotation></xs:element></xs:sequence></xs:complexType><xs:complexType name="G17004014"><xs:sequence><xs:element name="F60000048" type="xs:date"><xs:annotation><xs:documentation><name>Anfang</name><definition>Beinhaltet das Datum des Anfangs eines Zeitraums.</definition><bezug>urn:xoev-de:kosit:xoev:kernkomponente:zeitraum vom 31.08.2020</bezug></xs:documentation></xs:annotation></xs:element><xs:element name="F17001348" type="xs:decimal"><xs:annotation><xs:documentation><name>Uhrzeit Start</name><bezug>div.</bezug></xs:documentation></xs:annotation></xs:element><xs:element name="F60000049" type="xs:date"><xs:annotation><xs:documentation><name>Ende</name><definition>Beinhaltet das Datum des Ende eines Zeitraums.</definition><bezug>urn:xoev-de:kosit:xoev:kernkomponente:zeitraum vom 31.08.2020</bezug></xs:documentation></xs:annotation></xs:element><xs:element name="F17001349" type="xs:decimal"><xs:annotation><xs:documentation><name>Uhrzeit Abschluss</name><bezug>div.</bezug></xs:documentation></xs:annotation></xs:element></xs:sequence></xs:complexType><xs:complexType name="G17005413"><xs:sequence><xs:element name="F60000243" type="xs:string"><xs:annotation><xs:documentation><name>Straße</name><beschreibung>Kompatibilität zu EPA in TR XhD v 1.4 sollte Feldlänge min. 50. Bei XInneres 8 ist die Feldlänge <= 55 Zeichen.</beschreibung><bezug>XInneres.Meldeanschrift.strasse Version 8</bezug></xs:documentation></xs:annotation></xs:element><xs:element minOccurs="0" name="F60000244" type="xs:string"><xs:annotation><xs:documentation><name>Hausnummer</name><beschreibung>Die Modellierung aus XInneres wurde nicht 1:1 übernommen, um die Komplexität für die Ausfüllenden nicht zu hoch zu setzen. Es wurde darauf verzichtet für das Ende von Hausnummernbereichen eigene Felder zu modellieren. Daher ist die Feldlänge hier heraufgesetzt und eine entsprechende Beschreibung wurde eingefügt. Die Feldlänge setzt sich aus der maximalen Feldlänge zweier Hausnummern (jeweils 4), zweier Buchstaben (jeweils 1) und eines Zeichen (-) zusammen.</beschreibung><definition>Es sind die Ziffern und Buchstabeneiner Hausnummer anzugeben. Eine Hausnummer dient der genauen Lokalisierung eines Grundstücks, Gebäudes oder Gebäudeteils (Eingang) in einer Straße. Geben Sie Hausnummernbereiche immer nach folgendem Beispiel ohne Leerzeichen an: 12a-14d</definition><bezug>XInneres.Meldeanschrift.hausnummer Version 8</bezug></xs:documentation></xs:annotation></xs:element><xs:element name="F60000246" type="xs:string"><xs:annotation><xs:documentation><name>Postleitzahl</name><definition>Es ist die Postleitzahl anzugeben.
 -
 -Der Typ dieses Elements ist eine Einschränkung des Basistyps String.Latin.</definition><bezug>XInneres.Meldeanschrift.postleitzahl Version 8</bezug></xs:documentation></xs:annotation></xs:element><xs:element name="F60000247" type="xs:string"><xs:annotation><xs:documentation><name>Ort</name><beschreibung>Kompatibilität zu EPA in TR XhD v 1.4 sollte Feldlänge min. 44. Laut PAuswV 2*25 = 50 Zeichen. Laut Xinneres.Meldeanschrift.Wohnort Version 8 = 40 Zeichen.
 -Laut BSI TR-03123 ≤ 105 Zeichen.</beschreibung><definition>Enthält den Namen eines Ortes (Gemeinde, Ortschaft oder Stadt).</definition><bezug>§ 5 (2) Nr. 9 PAuswG vom 21.6.2019; Anhang 3 Abschnitt 1 (Wohnort) PAuswV vom 28.9.2017; Tabelle 11 BSI TR-03123, Version 1.5.1; Xinneres.Meldeanschrift.Wohnort Version 8; XOEV.Kernkomponente.Anschrift.ort vom 31.01.2020</bezug></xs:documentation></xs:annotation></xs:element><xs:element minOccurs="0" name="G17005405" type="xfd:G17005405"><xs:annotation><xs:documentation><name>Karte Versammlungsort</name><definition>Anlage eines Kartenausschnitts</definition><bezug>Art. 8 GG; § 11 VershFG SG</bezug></xs:documentation></xs:annotation></xs:element></xs:sequence></xs:complexType></xs:schema> \ No newline at end of file diff --git a/fim-adapter/src/test/java/de/ozgcloud/eingang/fim/FimBasedAdapterTest.java b/fim-adapter/src/test/java/de/ozgcloud/eingang/fim/FimBasedAdapterTest.java deleted file mode 100644 index 1a09b6a2..00000000 --- a/fim-adapter/src/test/java/de/ozgcloud/eingang/fim/FimBasedAdapterTest.java +++ /dev/null @@ -1,46 +0,0 @@ -package de.ozgcloud.eingang.fim; - -import static org.assertj.core.api.Assertions.*; - -import java.util.Optional; - -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; - -import de.ozgcloud.eingang.common.formdata.FormData.Representations; -import de.ozgcloud.eingang.common.formdata.FormDataControlTestFactory; - -class FimBasedAdapterTest { - - @InjectMocks - private FimBasedAdapter adapter; - - @Nested - class TestGetEntryPoint { - - @Test - void shouldReturnPrimaryRepresentation() { - var result = adapter.getEntryPoint(FormDataControlTestFactory.create()); - - assertThat(result).isEqualTo(FormDataControlTestFactory.PRIMARY_FORM_DATA_REPRESENTATION); - } - - @Test - void shouldReturnDefaultOnMissingRepresentations() { - var result = adapter.getEntryPoint(FormDataControlTestFactory.createBuilder().representations(Optional.empty()).build()); - - assertThat(result).isEqualTo(FimBasedAdapter.DEFAULT_FORMDATA_REPRESENTATION_NAME); - } - - @Test - void shouldReturnDefaultOnMissingPrimary() { - var control = FormDataControlTestFactory.createBuilder().representations(Optional.of(Representations.builder().build())).build(); - - var result = adapter.getEntryPoint(control); - - assertThat(result).isEqualTo(FimBasedAdapter.DEFAULT_FORMDATA_REPRESENTATION_NAME); - } - } - -} diff --git a/fim-adapter/src/test/java/de/ozgcloud/eingang/fim/FimServiceITCase.java b/fim-adapter/src/test/java/de/ozgcloud/eingang/fim/FimServiceITCase.java deleted file mode 100644 index d48cd2d4..00000000 --- a/fim-adapter/src/test/java/de/ozgcloud/eingang/fim/FimServiceITCase.java +++ /dev/null @@ -1,199 +0,0 @@ -package de.ozgcloud.eingang.fim; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.AssertionsForClassTypes.assertThatThrownBy; - -import java.io.File; -import java.io.IOException; -import java.util.List; -import java.util.Map; - -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.ParserConfigurationException; - -import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.autoconfigure.ImportAutoConfiguration; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.ActiveProfiles; -import org.w3c.dom.Document; -import org.xml.sax.SAXException; - -import de.ozgcloud.common.test.ITCase; -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; -import de.ozgcloud.eingang.common.formdata.FormHeader; -import de.ozgcloud.eingang.common.formdata.IncomingFile; - -@ITCase -@ActiveProfiles({ "itcase", "test" }) -@ImportAutoConfiguration -@SpringBootTest(classes = FimTestConfig.class) -public class FimServiceITCase { - - @Autowired - private FimService fimService; - - @Autowired - private FimBasedAdapter fimBasedAdapter; - - @Test - void shouldFailOnEmptyScheme() { - assertThatThrownBy(() -> { - final Document document = loadDocument("src/test/resources/test1.xml"); - fimService.transformDocument(document, FormData.builder().build()); - }).isInstanceOf(FimException.class).hasMessage("XML Document does not provide a scheme"); - } - - @Test - void shouldNoFindInvalidScheme() { - final FimScheme scheme = fimService.getSchemeForIdentifier("test"); - - assertThat(FimSchemeIdentifier.fromString("unknown")).isEqualTo(scheme.getIdentifier()); - } - - @Test - void shouldFindVersammlungsScheme() { - final FimScheme scheme = fimService.getSchemeForIdentifier("urn:xoev-de:xfall:standard:fim-s17000652_1.4"); - assertThat(scheme).isNotNull(); - } - - @Test - void shouldFindTest2Scheme() { - final FimScheme scheme = fimService.getSchemeForIdentifier("test2"); - assertThat(scheme).isNotNull(); - } - - @Test - void shouldTransformSimpleDocument() throws ParserConfigurationException, IOException, SAXException { - final Document document = loadDocument("src/test/resources/test2.xml"); - final FormData formData = fimService.transformDocument(document, FormData.builder().build()); - - final Map<String, Object> expected = Map.of( - "xs:fim.S1235", Map.of("label", "Testkey", "value", "Testvalue"), - "xs:fim.S1236", Map.of("label", "xs:fim.S1236", "value", "Testvalue 2")); - assertThat(expected).isEqualTo(formData.getFormData()); - } - - @Test - void shouldTransformSimpleDocumentWithoutNamespace() throws ParserConfigurationException, IOException, SAXException { - final Document document = loadDocument("src/test/resources/test3.xml"); - final FormData formData = fimService.transformDocument(document, FormData.builder().build()); - - final Map<String, Object> expected = Map.of( - "fim.S1235", Map.of("label", "Testkey", "value", "Testvalue"), - "fim.S1236", Map.of("label", "fim.S1236", "value", "Testvalue 2")); - assertThat(expected).isEqualTo(formData.getFormData()); - } - - @Test - void shouldTransformDocument() throws ParserConfigurationException, IOException, SAXException { - final Document document = loadDocument("src/test/resources/S17000652V1.4_test01.xml"); - FormData formData = fimService.transformDocument(document, FormData.builder().build()); - - assertThat(formData).isNotNull(); - - final Map<String, Object> expected = Map.of( - "xfd:G17003529", Map.of( - "label", "EfA|SH Standard", - "value", Map.of( - "xfd:G05001479", Map.of( - "label", "nachrichtenkopf", - "value", Map.of( - "xfd:G05001480", Map.of( - "label", "identifikation.nachricht", - "value", Map.of( - "xfd:F05002750", - Map.of("label", "nachrichtenUUID", "value", "d447e43a-5723-4821-a170-cb44d2dbf143"), - "xfd:F05002751", - Map.of("label", "erstellungszeitpunkt", "value", "2022-08-15T09:30:47"), - "xfd:F05002752", - Map.of("label", "nachrichtentyp", "value", "fim.S17000652.17000652001004"), - "xfd:F05002753", - Map.of("label", "dienstname", "value", "urn:fim:Versammlungsanzeige:1.4"))), - "xfd:G05001481", Map.of( - "label", "Leser", - "value", Map.of( - "xfd:F05002754", Map.of("label", "Organisationsname", "value", "Celle"), - "xfd:F05002755", - Map.of("label", "Organisationsschlüssel", "value", "vbe:010550120100"), - "xfd:F05002756", Map.of("label", "Kategorie", "value", "Versammlungsbehörde"))), - "xfd:G05001482", Map.of( - "label", "Autor", - "value", Map.of( - "xfd:F05002754", - Map.of("label", "Organisationsname", "value", - "OSI-Onlinedienst Niedersachsen Versammlungsanzeige"), - "xfd:F05002755", - Map.of("label", "Organisationsschlüssel", "value", "vbe:010550120100"), - "xfd:F05002756", - Map.of("label", "Kategorie", "value", "Engagement- und Hobbyportal"))))), - "xfd:F17005454", Map.of("label", "Datenschutzhinweis DSGVO", "value", "true"), - "xfd:F17005455", Map.of("label", "Zustimmung zu einem digitalen Bescheid", "value", "true"), - "xfd:F17005533", Map.of("label", "UUID", "value", "String"))), - "xfd:F17009191", Map.of("label", "Anzeige durch Person", "value", "true"), - "xfd:F17003371", Map.of("label", "Anzeigenart", "value", "String")); - - assertThat(expected).isEqualTo(formData.getFormData()); - } - - @Test - void shouldFallbackUnknownScheme() { - IncomingFile r1 = IncomingFile.builder().name("src/test/resources/test3/Antrag.xml").file(new File("src/test/resources/test3/Antrag.xml")) - .build(); - IncomingFile r2 = IncomingFile.builder().name("src/test/resources/test3/fim_xtaMetadata.xml").build(); - final FormData initialFormData = FormDataTestFactory.createBuilder().formData(null) - .header(FormHeader.builder().channel("XTA").formEngineName("FIM").build()) - .representations(List.of(r1, r2)).build(); - - FormData formData = fimBasedAdapter.parseFormData(initialFormData); - - assertThat(formData).isNotNull(); - - final Map<String, Object> expected = Map.of( - "xfd:G17003529", Map.of( - "label", "xfd:G17003529", - "value", Map.of( - "xfd:G05001479", Map.of( - "label", "xfd:G05001479", - "value", Map.of( - "xfd:G05001480", Map.of( - "label", "xfd:G05001480", - "value", Map.of( - "xfd:F05002750", - Map.of("label", "xfd:F05002750", "value", "d447e43a-5723-4821-a170-cb44d2dbf143"), - "xfd:F05002751", Map.of("label", "xfd:F05002751", "value", "2022-08-15T09:30:47"), - "xfd:F05002752", - Map.of("label", "xfd:F05002752", "value", "fim.S17000652.17000652001004"), - "xfd:F05002753", - Map.of("label", "xfd:F05002753", "value", "urn:fim:Versammlungsanzeige:1.4"))), - "xfd:G05001481", Map.of( - "label", "xfd:G05001481", - "value", Map.of( - "xfd:F05002754", Map.of("label", "xfd:F05002754", "value", "Celle"), - "xfd:F05002755", Map.of("label", "xfd:F05002755", "value", "vbe:010550120100"), - "xfd:F05002756", Map.of("label", "xfd:F05002756", "value", "Versammlungsbehörde"))), - "xfd:G05001482", Map.of( - "label", "xfd:G05001482", - "value", Map.of( - "xfd:F05002754", - Map.of("label", "xfd:F05002754", "value", - "OSI-Onlinedienst Niedersachsen Versammlungsanzeige"), - "xfd:F05002755", Map.of("label", "xfd:F05002755", "value", "vbe:010550120100"), - "xfd:F05002756", - Map.of("label", "xfd:F05002756", "value", "Engagement- und Hobbyportal"))))), - "xfd:F17005454", Map.of("label", "xfd:F17005454", "value", "true"), - "xfd:F17005455", Map.of("label", "xfd:F17005455", "value", "true"), - "xfd:F17005533", Map.of("label", "xfd:F17005533", "value", "String"))), - "xfd:F17009191", Map.of("label", "xfd:F17009191", "value", "true"), - "xfd:F17003371", Map.of("label", "xfd:F17003371", "value", "String")); - - assertThat(formData.getFormData()).usingRecursiveComparison().isEqualTo(expected); - } - - private Document loadDocument(final String path) throws ParserConfigurationException, IOException, SAXException { - final DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); - return builder.parse(new File(path)); - } -} diff --git a/fim-adapter/src/test/java/de/ozgcloud/eingang/fim/FimTestConfig.java b/fim-adapter/src/test/java/de/ozgcloud/eingang/fim/FimTestConfig.java deleted file mode 100644 index 8e88e6f0..00000000 --- a/fim-adapter/src/test/java/de/ozgcloud/eingang/fim/FimTestConfig.java +++ /dev/null @@ -1,11 +0,0 @@ -package de.ozgcloud.eingang.fim; - -import org.springframework.boot.autoconfigure.EnableAutoConfiguration; -import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.Configuration; - -@Configuration -@EnableAutoConfiguration -@ComponentScan("de.ozgcloud.eingang") -public class FimTestConfig { -} diff --git a/fim-adapter/src/test/java/de/ozgcloud/eingang/fim/TestNonStandardAdapter.java b/fim-adapter/src/test/java/de/ozgcloud/eingang/fim/TestNonStandardAdapter.java deleted file mode 100644 index 76b10a4c..00000000 --- a/fim-adapter/src/test/java/de/ozgcloud/eingang/fim/TestNonStandardAdapter.java +++ /dev/null @@ -1,23 +0,0 @@ -package de.ozgcloud.eingang.fim; - -import org.springframework.stereotype.Service; -import org.w3c.dom.Element; -import org.w3c.dom.NodeList; - -import java.util.Optional; - -@Service -public class TestNonStandardAdapter extends FimSchemeAdapter { - - public FimSchemeIdentifier forIdentifier() { - return FimSchemeIdentifier.fromString("test2"); - } - - public Optional<String> getNameForElement(final Element element) { - final NodeList nameTags = element.getElementsByTagName("non-standard-name"); - if (nameTags.getLength() != 1) { - return Optional.empty(); - } - return Optional.ofNullable(nameTags.item(0).getTextContent()); - } -} diff --git a/fim-adapter/src/test/java/de/ozgcloud/eingang/fim/ZustaendigeStelleMapperTest.java b/fim-adapter/src/test/java/de/ozgcloud/eingang/fim/ZustaendigeStelleMapperTest.java deleted file mode 100644 index 23fa2675..00000000 --- a/fim-adapter/src/test/java/de/ozgcloud/eingang/fim/ZustaendigeStelleMapperTest.java +++ /dev/null @@ -1,44 +0,0 @@ -package de.ozgcloud.eingang.fim; - -import static org.assertj.core.api.Assertions.*; - -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; - -import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; -import de.ozgcloud.eingang.common.formdata.FormMetaDataTestFactory; -import de.ozgcloud.eingang.common.formdata.ZustaendigeStelle; - -class ZustaendigeStelleMapperTest { - - @InjectMocks - private ZustaendigeStelleMapper mapper; - - @Test - void shouldSetOrganisationsEinheitId() { - var parsed = mapper.parseFormData(FormDataTestFactory.createBuilder().clearZustaendigeStelles().build()); - - assertThat(parsed.getZustaendigeStelles()).hasSize(1).first().extracting(ZustaendigeStelle::getOrganisationseinheitenId) - .isEqualTo(FormMetaDataTestFactory.OE_ID); - -// assertThat(parsed.getZustaendigeStelle().getOrganisationseinheitenId()).isEqualTo(FormMetaDataTestFactory.OE_ID); - } - - @Test - void shouldWorkWithoutGivenZustaendigeStelle() { - var parsed = mapper.parseFormData(FormDataTestFactory.createBuilder().clearZustaendigeStelles().build()); - - assertThat(parsed.getZustaendigeStelles()).hasSize(1).first().extracting(ZustaendigeStelle::getOrganisationseinheitenId) - .isNotNull(); - -// assertThat(parsed.getZustaendigeStelle()).isNotNull(); - } - - @Test - void shouldIgnoreMalformedDestinationId() { - var oeid = mapper.extractOrganisationsEinheitId("quatsch"); - - assertThat(oeid).isEmpty(); - } - -} diff --git a/fim-adapter/src/test/resources/S17000652V1.4_test01.xml b/fim-adapter/src/test/resources/S17000652V1.4_test01.xml deleted file mode 100644 index ca52ce69..00000000 --- a/fim-adapter/src/test/resources/S17000652V1.4_test01.xml +++ /dev/null @@ -1,29 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!--XML-Beispieldatei von XMLSpy generiert v2024 (x64) (http://www.altova.com)--> -<xfd:fim.S17000652.17000652001004 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xfd="urn:xoev-de:xfall:standard:fim-s17000652_1.4" xsi:schemaLocation="urn:xoev-de:xfall:standard:fim-s17000652_1.4 S17000652V1.4_xfall.xsd"> - <xfd:G17003529> - <xfd:G05001479> - <xfd:G05001480> - <xfd:F05002750>d447e43a-5723-4821-a170-cb44d2dbf143</xfd:F05002750> - <xfd:F05002751>2022-08-15T09:30:47</xfd:F05002751> - <xfd:F05002752>fim.S17000652.17000652001004</xfd:F05002752> - <xfd:F05002753>urn:fim:Versammlungsanzeige:1.4</xfd:F05002753> - </xfd:G05001480> - <xfd:G05001481> - <xfd:F05002754>Celle</xfd:F05002754> - <xfd:F05002755>vbe:010550120100</xfd:F05002755> - <xfd:F05002756>Versammlungsbehörde</xfd:F05002756> - </xfd:G05001481> - <xfd:G05001482> - <xfd:F05002754>OSI-Onlinedienst Niedersachsen Versammlungsanzeige</xfd:F05002754> - <xfd:F05002755>vbe:010550120100</xfd:F05002755> - <xfd:F05002756>Engagement- und Hobbyportal</xfd:F05002756> - </xfd:G05001482> - </xfd:G05001479> - <xfd:F17005454>true</xfd:F17005454> - <xfd:F17005455>true</xfd:F17005455> - <xfd:F17005533>String</xfd:F17005533> - </xfd:G17003529> - <xfd:F17009191>true</xfd:F17009191> - <xfd:F17003371>String</xfd:F17003371> -</xfd:fim.S17000652.17000652001004> diff --git a/fim-adapter/src/test/resources/application-test.yml b/fim-adapter/src/test/resources/application-test.yml deleted file mode 100644 index 148c1af7..00000000 --- a/fim-adapter/src/test/resources/application-test.yml +++ /dev/null @@ -1,4 +0,0 @@ -fim: - schemeLocations: - - fim-s17000652_1.4/S17000652V1.4_xfall.xsd - - test2/test2.xsd \ No newline at end of file diff --git a/fim-adapter/src/test/resources/test1.xml b/fim-adapter/src/test/resources/test1.xml deleted file mode 100644 index c6cdfdff..00000000 --- a/fim-adapter/src/test/resources/test1.xml +++ /dev/null @@ -1,3 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<xs:fim> -</xs:fim> diff --git a/fim-adapter/src/test/resources/test2.xml b/fim-adapter/src/test/resources/test2.xml deleted file mode 100644 index 2f0cc4f8..00000000 --- a/fim-adapter/src/test/resources/test2.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<xs:fim.S1234 xmlns:xs="test2" xsi:schemaLocation="test2"> - <xs:fim.S1235>Testvalue</xs:fim.S1235> - <xs:fim.S1236>Testvalue 2</xs:fim.S1236> -</xs:fim.S1234> diff --git a/fim-adapter/src/test/resources/test2/test2.xsd b/fim-adapter/src/test/resources/test2/test2.xsd deleted file mode 100644 index 6df2999b..00000000 --- a/fim-adapter/src/test/resources/test2/test2.xsd +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<xs:schema xmlns:xfd="test2" xmlns:xs="http://www.w3.org/2001/XMLSchema" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="test2"> - <xs:element name="fim.S1234"> - <xs:annotation><xs:documentation><non-standard-name>Test-Fim-Data</non-standard-name></xs:documentation></xs:annotation> - </xs:element> - <xs:element name="fim.S1235"> - <xs:annotation><xs:documentation><non-standard-name>Testkey</non-standard-name></xs:documentation></xs:annotation> - </xs:element> -</xs:schema> \ No newline at end of file diff --git a/fim-adapter/src/test/resources/test3.xml b/fim-adapter/src/test/resources/test3.xml deleted file mode 100644 index c0061879..00000000 --- a/fim-adapter/src/test/resources/test3.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<fim.S1234 xmlns="test2" xsi:schemaLocation="test2"> - <fim.S1235>Testvalue</fim.S1235> - <fim.S1236>Testvalue 2</fim.S1236> -</fim.S1234> diff --git a/fim-adapter/src/test/resources/test3/Antrag.xml b/fim-adapter/src/test/resources/test3/Antrag.xml deleted file mode 100644 index 461b8089..00000000 --- a/fim-adapter/src/test/resources/test3/Antrag.xml +++ /dev/null @@ -1,29 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!--XML-Beispieldatei von XMLSpy generiert v2024 (x64) (http://www.altova.com)--> -<xfd:fim.S17000652.17000652001004 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xfd="empty" xsi:schemaLocation="empty"> - <xfd:G17003529> - <xfd:G05001479> - <xfd:G05001480> - <xfd:F05002750>d447e43a-5723-4821-a170-cb44d2dbf143</xfd:F05002750> - <xfd:F05002751>2022-08-15T09:30:47</xfd:F05002751> - <xfd:F05002752>fim.S17000652.17000652001004</xfd:F05002752> - <xfd:F05002753>urn:fim:Versammlungsanzeige:1.4</xfd:F05002753> - </xfd:G05001480> - <xfd:G05001481> - <xfd:F05002754>Celle</xfd:F05002754> - <xfd:F05002755>vbe:010550120100</xfd:F05002755> - <xfd:F05002756>Versammlungsbehörde</xfd:F05002756> - </xfd:G05001481> - <xfd:G05001482> - <xfd:F05002754>OSI-Onlinedienst Niedersachsen Versammlungsanzeige</xfd:F05002754> - <xfd:F05002755>vbe:010550120100</xfd:F05002755> - <xfd:F05002756>Engagement- und Hobbyportal</xfd:F05002756> - </xfd:G05001482> - </xfd:G05001479> - <xfd:F17005454>true</xfd:F17005454> - <xfd:F17005455>true</xfd:F17005455> - <xfd:F17005533>String</xfd:F17005533> - </xfd:G17003529> - <xfd:F17009191>true</xfd:F17009191> - <xfd:F17003371>String</xfd:F17003371> -</xfd:fim.S17000652.17000652001004> diff --git a/fim-adapter/src/test/resources/test3/fim_xtaMetadata.xml b/fim-adapter/src/test/resources/test3/fim_xtaMetadata.xml deleted file mode 100644 index 645ff979..00000000 --- a/fim-adapter/src/test/resources/test3/fim_xtaMetadata.xml +++ /dev/null @@ -1,49 +0,0 @@ -a<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing"> - <s:Header> - <a:Action s:mustUnderstand="1">http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxFetchRequest</a:Action> - <h:MsgBoxResponse MsgBoxRequestID="urn:de:xta:messageid:dataport_xta_210:3d280bfa-d790-4865-a6cf-f6656d7be13f" xmlns:h="http://www.osci.eu/ws/2008/05/transport" xmlns="http://www.osci.eu/ws/2008/05/transport" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <ItemsPending>0</ItemsPending> - </h:MsgBoxResponse> - <h:MessageMetaData xmlns:h="http://www.osci.eu/ws/2014/10/transport" xmlns="http://www.osci.eu/ws/2014/10/transport"> - <DeliveryAttributes> - <InitialSend>2024-03-21T08:56:35.214+01:00</InitialSend> - <Delivery>2024-03-21T08:56:38.417</Delivery> - </DeliveryAttributes> - <Originators> - <Author> - <Identifier type="xoev" name="Dataport" category="Engagement- und Hobbyportal">ehp:010100100000</Identifier> - </Author> - </Originators> - <Destinations> - <Reader> - <Identifier type="xoev" name="L100012.OE.279550874" category="Versammlungsbehörde">vbe:010550120100</Identifier> - </Reader> - </Destinations> - <MsgIdentification> - <MessageID xmlns="http://www.w3.org/2005/08/addressing">urn:de:xta:messageid:dataport_xta_210:3d280bfa-d790-4865-a6cf-f6656d7be13f</MessageID> - </MsgIdentification> - <Qualifier> - <Service>urn:fim:Versammlungsanzeige:1.4</Service> - <BusinessScenario> - <Defined listURI="urn:de:dataport:codeliste:business.scenario" listVersionID="1"> - <code xmlns="">FIM_DATA</code> - </Defined> - </BusinessScenario> - <MessageType listURI="urn:de:payloadSchema:elementName" listVersionID="1.0" payloadSchema="urn:xoev-de:xfall:standard:fim-s17000652_1.4"> - <code xmlns="">fim.S17000652.17000652001004</code> - <name xmlns="">fim.S17000652.17000652001004</name> - </MessageType> - </Qualifier> - <MsgSize>1738</MsgSize> - </h:MessageMetaData> - </s:Header> - <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> - <GenericContentContainer xmlns="http://xoev.de/transport/xta/211"> - <ContentContainer> - <Message contentType="application/xml" filename="Antrag.xml" size="1738"> - <xop:Include href="cid:http://tempuri.org/1/638485107771249372" xmlns:xop="http://www.w3.org/2004/08/xop/include"/> - </Message> - </ContentContainer> - </GenericContentContainer> - </s:Body> -</s:Envelope> \ No newline at end of file diff --git a/formcycle-adapter/formcycle-adapter-impl/pom.xml b/formcycle-adapter/formcycle-adapter-impl/pom.xml deleted file mode 100644 index f8f93592..00000000 --- a/formcycle-adapter/formcycle-adapter-impl/pom.xml +++ /dev/null @@ -1,135 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - - Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - Ministerpräsidenten des Landes Schleswig-Holstein - Staatskanzlei - Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - - Lizenziert unter der EUPL, Version 1.2 oder - sobald - diese von der Europäischen Kommission genehmigt wurden - - Folgeversionen der EUPL ("Lizenz"); - Sie dürfen dieses Werk ausschließlich gemäß - dieser Lizenz nutzen. - Eine Kopie der Lizenz finden Sie hier: - - https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - - Sofern nicht durch anwendbare Rechtsvorschriften - gefordert oder in schriftlicher Form vereinbart, wird - die unter der Lizenz verbreitete Software "so wie sie - ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - ausdrücklich oder stillschweigend - verbreitet. - Die sprachspezifischen Genehmigungen und Beschränkungen - unter der Lizenz sind dem Lizenztext zu entnehmen. - ---> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>de.ozgcloud.eingang</groupId> - <artifactId>formcycle-adapter</artifactId> - <version>2.16.0-SNAPSHOT</version> - <relativePath>../</relativePath> - </parent> - - <artifactId>formcycle-adapter-impl</artifactId> - <name>EM - Formcycle Adapter - Implementation</name> - - <properties> - <formcycle-interface.version>${project.version}</formcycle-interface.version> - <jsoup.version>1.17.2</jsoup.version> - </properties> - - <dependencies> - <!--own project--> - <dependency> - <groupId>de.ozgcloud.eingang</groupId> - <artifactId>formcycle-adapter-interface</artifactId> - <version>${formcycle-interface.version}</version> - </dependency> - <dependency> - <groupId>de.ozgcloud.eingang</groupId> - <artifactId>semantik-adapter</artifactId> - </dependency> - <dependency> - <groupId>de.ozgcloud.eingang</groupId> - <artifactId>common</artifactId> - <type>test-jar</type> - <scope>test</scope> - </dependency> - <dependency> - <groupId>de.ozgcloud.vorgang</groupId> - <artifactId>vorgang-manager-utils</artifactId> - </dependency> - <dependency> - <groupId>de.ozgcloud.vorgang</groupId> - <artifactId>vorgang-manager-utils</artifactId> - <type>test-jar</type> - <scope>test</scope> - </dependency> - - <!--spring--> - <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-web</artifactId> - </dependency> - <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-actuator</artifactId> - </dependency> - - <dependency> - <groupId>org.jsoup</groupId> - <artifactId>jsoup</artifactId> - <version>${jsoup.version}</version> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-maven-plugin</artifactId> - </plugin> - - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-surefire-plugin</artifactId> - </plugin> - - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-failsafe-plugin</artifactId> - </plugin> - - <plugin> - <groupId>org.jacoco</groupId> - <artifactId>jacoco-maven-plugin</artifactId> - </plugin> - </plugins> - </build> - - <profiles> - <profile> - <id>ci-build</id> - <build> - <plugins> - <plugin> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-maven-plugin</artifactId> - <executions> - <execution> - <id>build-image</id> - <phase>install</phase> - <goals> - <goal>build-image-no-fork</goal> - </goals> - </execution> - </executions> - </plugin> - </plugins> - </build> - </profile> - </profiles> -</project> diff --git a/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormCycleFormDataMapper.java b/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormCycleFormDataMapper.java deleted file mode 100644 index 8db87c76..00000000 --- a/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormCycleFormDataMapper.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.formcycle; - -import org.mapstruct.Mapper; -import org.mapstruct.Mapping; - -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.vorgang.common.grpc.GrpcFormDataMapper; - -@Mapper(uses = GrpcFormDataMapper.class) -public interface FormCycleFormDataMapper { - - @Mapping(target = "antragsteller", ignore = true) - @Mapping(target = "attachment", ignore = true) - @Mapping(target = "attachments", ignore = true) - @Mapping(target = "id", ignore = true) - @Mapping(target = "numberOfAttachments", ignore = true) - @Mapping(target = "numberOfRepresentations", ignore = true) - @Mapping(target = "representation", ignore = true) - @Mapping(target = "representations", ignore = true) - @Mapping(target = "zustaendigeStelle.organisationseinheitenId", source = "header.organisationsEinheitId") - @Mapping(target = "header.formEngineName", constant = "FormCycle") - @Mapping(target = "header.createdAt", source = "header.receivedAt") - @Mapping(target = "header.requestId", source = "header.requestId", defaultExpression = "java(java.util.UUID.randomUUID().toString())") - FormData toFormData(FormCycleFormData fcFormData); -} diff --git a/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormCycleServiceKontoMapper.java b/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormCycleServiceKontoMapper.java deleted file mode 100644 index 5185c70c..00000000 --- a/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormCycleServiceKontoMapper.java +++ /dev/null @@ -1,40 +0,0 @@ -package de.ozgcloud.eingang.formcycle; - -import java.util.Collections; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.mapstruct.CollectionMappingStrategy; -import org.mapstruct.Mapper; -import org.mapstruct.Mapping; -import org.mapstruct.ReportingPolicy; - -import de.ozgcloud.eingang.common.formdata.ServiceKonto; -import de.ozgcloud.eingang.common.formdata.ServiceKonto.PostfachAddress; -import de.ozgcloud.eingang.common.formdata.StringBasedIdentifier; -import de.ozgcloud.eingang.semantik.common.ServiceKontoFactory; - -@Mapper(collectionMappingStrategy = CollectionMappingStrategy.ADDER_PREFERRED, unmappedTargetPolicy = ReportingPolicy.WARN) -interface FormCycleServiceKontoMapper { - - @Mapping(target = "postfachAddress", ignore = true) - @Mapping(target = "type", constant = ServiceKontoFactory.POSTFACH_TYPE_BAYERN_ID) - @Mapping(target = "postfachAddresses", expression = "java(fromGrpcPostfachAddresses(serviceKonto))") - ServiceKonto fromGrpc(FormCycleServiceKonto serviceKonto); - - default String fromString(String str) { - return StringUtils.trimToNull(str); - } - - default List<PostfachAddress> fromGrpcPostfachAddresses(FormCycleServiceKonto serviceKonto) { - return serviceKonto.hasAddress() ? List.of(fromGrpc(serviceKonto.getAddress())) : Collections.emptyList(); - } - - @Mapping(target = "type", ignore = true) - @Mapping(target = "identifier", expression = "java(buildIdentifier(postfachAddress.getIdentifier()))") - PostfachAddress fromGrpc(FormCyclePostfachAddress postfachAddress); - - default StringBasedIdentifier buildIdentifier(String identifier) { - return StringBasedIdentifier.builder().postfachId(identifier).build(); - } -} \ No newline at end of file diff --git a/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormDataController.java b/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormDataController.java deleted file mode 100644 index 128fc4e3..00000000 --- a/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormDataController.java +++ /dev/null @@ -1,162 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.formcycle; - -import java.io.IOException; -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; -import java.util.UUID; - -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestPart; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.multipart.MultipartFile; - -import de.ozgcloud.common.binaryfile.TempFileUtils; -import de.ozgcloud.common.errorhandling.TechnicalException; -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.IncomingFile; -import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; -import de.ozgcloud.eingang.common.vorgang.VorgangNummerSupplier; -import de.ozgcloud.eingang.semantik.SemantikAdapter; -import de.ozgcloud.eingang.semantik.enginebased.FilesMapperHelper; -import lombok.RequiredArgsConstructor; -import lombok.extern.log4j.Log4j2; - -@Log4j2 -@Controller -@ResponseBody -@RequestMapping("formData") -@RequiredArgsConstructor -class FormDataController { - - public static final String HTTP_TYPE_PROTOBUF = "application/x-protobuf"; - - private final FormCycleFormDataMapper mapper; - private final SemantikAdapter semantikAdapter; - private final VorgangNummerSupplier vorgangNummerSupplier; - private final FormDataHtmlCleaner formDataHtmlCleaner; - private final FormCycleServiceKontoMapper serviceKontoMapper; - - @PostMapping(consumes = "multipart/form-data", produces = HTTP_TYPE_PROTOBUF) - public FormCycleConfirmationResponse receiveFormData(@RequestPart FormCycleFormData formData, - @RequestPart(required = false) Optional<Collection<MultipartFile>> representations, - @RequestPart(required = false) Optional<Collection<MultipartFile>> attachments) { - - FormData mappedFormData = mapper.toFormData(formData); - mappedFormData = formDataHtmlCleaner.clean(mappedFormData); - mappedFormData = addRepresentations(representations, mappedFormData); - mappedFormData = addFiles(formData, attachments, mappedFormData); - mappedFormData = addServiceKonto(formData, mappedFormData); - mappedFormData = addVorgangNummer(mappedFormData); - - semantikAdapter.processFormData(mappedFormData); - - return FormCycleConfirmationResponse.newBuilder().setVorgangNummer(mappedFormData.getHeader().getVorgangNummer()).build(); - } - - private FormData addVorgangNummer(FormData mappedFormData) { - var formDataHeader = mappedFormData.getHeader().toBuilder().vorgangNummer(vorgangNummerSupplier.get()).build(); - return mappedFormData.toBuilder().header(formDataHeader).build(); - } - - private FormData addRepresentations(Optional<Collection<MultipartFile>> files, FormData mappedFormData) { - Collection<IncomingFile> representations = buildIncomingFiles(files); - return mappedFormData.toBuilder().representations(representations).numberOfRepresentations(representations.size()).build(); - } - - private Collection<IncomingFile> buildIncomingFiles(Optional<Collection<MultipartFile>> files) { - return files.orElseGet(Collections::emptyList).stream().map(this::buildIncomingFile).toList(); - } - - FormData addFiles(FormCycleFormData inFormData, Optional<Collection<MultipartFile>> attachments, FormData mappedFormData) { - var groups = new AttachmentGroupsBuilder(inFormData.getAttachmentGroupList(), attachments).buildGroups(); - - return mappedFormData.toBuilder().attachments(groups).numberOfAttachments(FilesMapperHelper.countAttachedFiles(groups)).build(); - } - - private IncomingFile buildIncomingFile(MultipartFile multipartFile) { - try { - return IncomingFile.builder() - .id(UUID.randomUUID().toString()) - .name(multipartFile.getOriginalFilename()) - .size(multipartFile.getSize()) - .contentType(multipartFile.getContentType()) - .file(TempFileUtils.writeTmpFile(multipartFile.getInputStream())) - .build(); - } catch (IOException e) { - throw new TechnicalException("Error reading incoming file", e); - } - } - - class AttachmentGroupsBuilder { - - private final Collection<FormCycleAttachmentGroup> attachmentGroups; - private final Map<String, IncomingFile> nameToFile = new HashMap<>(); - - public AttachmentGroupsBuilder(Collection<FormCycleAttachmentGroup> attachmentGroups, Optional<Collection<MultipartFile>> attachmentFiles) { - this.attachmentGroups = attachmentGroups; - - attachmentFiles.ifPresent(files -> files.stream().map(FormDataController.this::buildIncomingFile) - .forEach(file -> nameToFile.put(file.getName(), file))); - } - - public Collection<IncomingFileGroup> buildGroups() { - return attachmentGroups.stream().map(this::buildGroup).toList(); - } - - IncomingFileGroup buildGroup(FormCycleAttachmentGroup group) { - var groupBuilder = IncomingFileGroup.builder().name(group.getName()); - - group.getFileIdList().stream().map(this::getFile) - .filter(Optional::isPresent).map(Optional::get) - .forEach(groupBuilder::file); - - return groupBuilder.build(); - } - - Optional<IncomingFile> getFile(String name) { - var file = nameToFile.get(name); - - if (Objects.isNull(file)) { - LOG.warn("Cannot find Attachment-File with name '{}'.", name); - return Optional.empty(); - } - return Optional.of(file); - } - } - - FormData addServiceKonto(FormCycleFormData formData, FormData mappedFormData) { - if (formData.hasServiceKonto()) { - mappedFormData.getHeader().setServiceKonto(serviceKontoMapper.fromGrpc(formData.getServiceKonto())); - } - return mappedFormData; - } -} \ No newline at end of file diff --git a/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormDataHtmlCleaner.java b/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormDataHtmlCleaner.java deleted file mode 100644 index 7ad15573..00000000 --- a/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormDataHtmlCleaner.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.formcycle; - -import java.util.Collection; -import java.util.Map; -import java.util.stream.Collectors; - -import org.jsoup.Jsoup; -import org.jsoup.nodes.Document; -import org.jsoup.safety.Safelist; -import org.springframework.stereotype.Component; -import org.springframework.web.util.HtmlUtils; - -import de.ozgcloud.eingang.common.formdata.FormData; - -@Component -public class FormDataHtmlCleaner { - - public FormData clean(FormData formData) { - return formData.toBuilder().formData(cleanFormData(formData.getFormData())).build(); - } - - Map<String, Object> cleanFormData(Map<String, Object> formData) { - return formData.entrySet().stream().collect(Collectors.toMap(Map.Entry::getKey, entry -> cleanValue(entry.getValue()))); - } - - @SuppressWarnings("unchecked") - Object cleanValue(Object value) { - if (value instanceof Map) { - return cleanFormData((Map<String, Object>) value); - } else if (value instanceof Collection<?> values) { - return values.stream().map(this::cleanValue).toList(); - } else if (value instanceof String valueString) { - return parseHtml(valueString); - } - return value; - } - - String parseHtml(String html) { - var outputSettings = new Document.OutputSettings(); // keep new lines - outputSettings.prettyPrint(false); - var htmlText = Jsoup.clean(replaceNewLines(html), "", Safelist.none(), outputSettings); - return HtmlUtils.htmlUnescape(htmlText); - } - - private String replaceNewLines(String html) { - return html.replace("\\\\n", "\n"); - } -} diff --git a/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormcycleAdapterApplication.java b/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormcycleAdapterApplication.java deleted file mode 100644 index dddbd8f5..00000000 --- a/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormcycleAdapterApplication.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.formcycle; - -import java.nio.charset.StandardCharsets; -import java.util.ArrayList; -import java.util.TimeZone; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.context.annotation.Bean; -import org.springframework.http.MediaType; -import org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter; - -import de.ozgcloud.eingang.formcycle.common.errorhandling.FormcycleExceptionHandler; -import de.ozgcloud.eingang.formcycle.common.protobuf.CustomProtobufHttpMessageConverter; -import de.ozgcloud.eingang.semantik.enginebased.EngineBasedSemantikAdapter; -import de.ozgcloud.eingang.semantik.enginebased.formcycle.FormCycleEngineBasedAdapter; - -@SpringBootApplication(scanBasePackages = { "de.ozgcloud" }) -public class FormcycleAdapterApplication { - - public static void main(String[] args) { - TimeZone.setDefault(TimeZone.getTimeZone("UTC")); - SpringApplication.run(FormcycleAdapterApplication.class, args); - } - - @Bean - EngineBasedSemantikAdapter engineBasedAdapter() { - return new FormCycleEngineBasedAdapter(); - } - - @Bean - ProtobufHttpMessageConverter protobufMessageConverter() { - return addCustomProtobufMediaType(new CustomProtobufHttpMessageConverter()); - } - - @Deprecated(forRemoval = true, since = "2.1.0") - // FIXME: Remove this method after all customers have updated ozg-cloud plugin to version 1.4.0 or higher - private ProtobufHttpMessageConverter addCustomProtobufMediaType(ProtobufHttpMessageConverter protobufHttpMessageConverter) { - var supportetMediaTypes = new ArrayList<>(protobufHttpMessageConverter.getSupportedMediaTypes()); - supportetMediaTypes.add(new MediaType("application", "protobuf", StandardCharsets.UTF_8)); - protobufHttpMessageConverter.setSupportedMediaTypes(supportetMediaTypes); - return protobufHttpMessageConverter; - } - - @Bean - FormcycleExceptionHandler restResposeEntityExceptionHandler() { - return new FormcycleExceptionHandler(); - } -} diff --git a/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/common/errorhandling/FormcycleExceptionHandler.java b/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/common/errorhandling/FormcycleExceptionHandler.java deleted file mode 100644 index d98bdc6a..00000000 --- a/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/common/errorhandling/FormcycleExceptionHandler.java +++ /dev/null @@ -1,74 +0,0 @@ -package de.ozgcloud.eingang.formcycle.common.errorhandling; - -import java.util.UUID; - -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.ControllerAdvice; -import org.springframework.web.bind.annotation.ExceptionHandler; -import org.springframework.web.context.request.WebRequest; -import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler; - -import de.ozgcloud.common.errorhandling.ExceptionUtil; -import de.ozgcloud.common.errorhandling.TechnicalException; -import io.grpc.StatusRuntimeException; -import lombok.extern.log4j.Log4j2; - -@ControllerAdvice -@Log4j2 -public class FormcycleExceptionHandler extends ResponseEntityExceptionHandler { - - static final String TECHNICAL_EXCEPTION_MESSAGE = "Cannot process request."; - static final String CREATE_VORGANG_EXCEPTION_MESSAGE = "Cannot create vorgang."; - static final String UNEXPECTED_EXCEPTION_MESSAGE = "An unexpected error occurred."; - - private static final String EXCEPTION_ID_TEMPLATE = "(ExceptionId:"; - - @ExceptionHandler({ TechnicalException.class }) - public ResponseEntity<InternalExceptionDto> handleTechnicalException(TechnicalException e, WebRequest request) { - LOG.error(TECHNICAL_EXCEPTION_MESSAGE, e); - return buildResponseEntity(TECHNICAL_EXCEPTION_MESSAGE, e.getExceptionId()); - } - - @ExceptionHandler({ StatusRuntimeException.class }) - public ResponseEntity<InternalExceptionDto> handleStatusRuntimeException(StatusRuntimeException e, WebRequest request) { - var logMessage = TECHNICAL_EXCEPTION_MESSAGE; - var exceptionId = getExceptionId(e.getMessage()); - if (!hasExceptionId(e.getMessage())) { - logMessage = ExceptionUtil.formatMessageWithExceptionId(CREATE_VORGANG_EXCEPTION_MESSAGE, exceptionId); - } - LOG.error(logMessage, e); - return buildResponseEntity(CREATE_VORGANG_EXCEPTION_MESSAGE, exceptionId); - } - - boolean hasExceptionId(String message) { - return message.contains(EXCEPTION_ID_TEMPLATE); - } - - String getExceptionId(String message) { - try { - return message.substring(message.indexOf(EXCEPTION_ID_TEMPLATE) + 14, message.indexOf(")")); - } catch (IndexOutOfBoundsException e) { - return createExceptionId(); - } - } - - @ExceptionHandler({ RuntimeException.class }) - public ResponseEntity<InternalExceptionDto> handleUnexpectedException(RuntimeException e, WebRequest request) { - var exceptionId = createExceptionId(); - var messageWithExceptionId = ExceptionUtil.formatMessageWithExceptionId(UNEXPECTED_EXCEPTION_MESSAGE, exceptionId); - LOG.error(messageWithExceptionId, e); - return buildResponseEntity(UNEXPECTED_EXCEPTION_MESSAGE, exceptionId); - } - - String createExceptionId() { - return UUID.randomUUID().toString(); - } - - ResponseEntity<InternalExceptionDto> buildResponseEntity(String message, String exceptionId) { - return ResponseEntity.internalServerError().body(buildInternalExceptionDto(message, exceptionId)); - } - - InternalExceptionDto buildInternalExceptionDto(String message, String exceptionId) { - return InternalExceptionDto.builder().message(message).exceptionId(exceptionId).build(); - } -} diff --git a/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/common/errorhandling/InternalExceptionDto.java b/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/common/errorhandling/InternalExceptionDto.java deleted file mode 100644 index 9e72ccd3..00000000 --- a/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/common/errorhandling/InternalExceptionDto.java +++ /dev/null @@ -1,12 +0,0 @@ -package de.ozgcloud.eingang.formcycle.common.errorhandling; - -import lombok.Builder; -import lombok.Getter; - -@Builder -@Getter -public class InternalExceptionDto { - - private String exceptionId; - private String message; -} diff --git a/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/common/protobuf/CustomProtobufHttpMessageConverter.java b/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/common/protobuf/CustomProtobufHttpMessageConverter.java deleted file mode 100644 index 6a6ab8e0..00000000 --- a/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/common/protobuf/CustomProtobufHttpMessageConverter.java +++ /dev/null @@ -1,19 +0,0 @@ -package de.ozgcloud.eingang.formcycle.common.protobuf; - -import java.io.IOException; - -import org.springframework.http.HttpInputMessage; -import org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter; - -import com.google.protobuf.Message; - -@Deprecated(forRemoval = true, since = "2.1.0") -// FIXME: Remove this class after all customers have updated ozg-cloud plugin to version 1.4.0 or higher -public class CustomProtobufHttpMessageConverter extends ProtobufHttpMessageConverter { - - @Override - protected Message readInternal(Class<? extends Message> clazz, HttpInputMessage inputMessage) throws IOException { - inputMessage.getHeaders().setContentType(ProtobufHttpMessageConverter.PROTOBUF); - return super.readInternal(clazz, inputMessage); - } -} diff --git a/formcycle-adapter/formcycle-adapter-impl/src/main/resources/application-local.yml b/formcycle-adapter/formcycle-adapter-impl/src/main/resources/application-local.yml deleted file mode 100644 index 1a493ac9..00000000 --- a/formcycle-adapter/formcycle-adapter-impl/src/main/resources/application-local.yml +++ /dev/null @@ -1,21 +0,0 @@ -logging: - config: classpath:log4j2-local.xml - -server: - port: 9293 - error: - include-stacktrace: always - -management: - server.port: 8084 - -ozgcloud: - adapter: - targetVorgangManagerName: local - fallbackStrategy: DENY - -grpc: - client: - vorgang-manager-local: - address: static://127.0.0.1:9090 - negotiationType: PLAINTEXT diff --git a/formcycle-adapter/formcycle-adapter-impl/src/main/resources/application.yml b/formcycle-adapter/formcycle-adapter-impl/src/main/resources/application.yml deleted file mode 100644 index fc501824..00000000 --- a/formcycle-adapter/formcycle-adapter-impl/src/main/resources/application.yml +++ /dev/null @@ -1,46 +0,0 @@ -logging: - level: - ROOT: WARN - '[de.ozgcloud]': INFO - -spring: - profiles: - include: formcycle - servlet: - multipart: - max-file-size: 124MB - max-request-size: 256MB - file-size-threshold: 10MB - -server: - http2: - enabled: true - error: - include-stacktrace: never - -management: - server: - port: 8081 - health: - livenessState: - enabled: true - readinessState: - enabled: true - endpoint: - health: - group: - exploratory: - include: livenessState,readinessState,ping - show-details: always - probes: - enabled: true - prometheus: - enabled: true - endpoints: - web: - exposure: - include: health,prometheus - -ozgcloud: - adapter: - routingStrategy: SINGLE \ No newline at end of file diff --git a/formcycle-adapter/formcycle-adapter-impl/src/main/resources/banner.txt b/formcycle-adapter/formcycle-adapter-impl/src/main/resources/banner.txt deleted file mode 100644 index b3aff186..00000000 --- a/formcycle-adapter/formcycle-adapter-impl/src/main/resources/banner.txt +++ /dev/null @@ -1,6 +0,0 @@ - _____ ___ ____ __ __ ______ ______ _ _____ -| ___/ _ \| _ \| \/ |/ ___\ \ / / ___| | | ____| -| |_ | | | | |_) | |\/| | | \ V / | | | | _| -| _|| |_| | _ <| | | | |___ | || |___| |___| |___ -|_| \___/|_| \_\_| |_|\____| |_| \____|_____|_____| -${spring-boot.version} ${application.version} diff --git a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleAttachmentGroupTestFactory.java b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleAttachmentGroupTestFactory.java deleted file mode 100644 index 0d7eed09..00000000 --- a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleAttachmentGroupTestFactory.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.formcycle; - -import de.ozgcloud.eingang.common.formdata.IncomingFileGroupTestFactory; -import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory; - -public class FormCycleAttachmentGroupTestFactory { - - static FormCycleAttachmentGroup create() { - return createBuilder().build(); - } - - static FormCycleAttachmentGroup.Builder createBuilder() { - return FormCycleAttachmentGroup.newBuilder() - .setName(IncomingFileGroupTestFactory.NAME) - .addFileId(IncomingFileTestFactory.NAME); - } -} diff --git a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleFormDataMapperTest.java b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleFormDataMapperTest.java deleted file mode 100644 index 077a2203..00000000 --- a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleFormDataMapperTest.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.formcycle; - -import static org.assertj.core.api.Assertions.*; - -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mapstruct.factory.Mappers; -import org.mockito.InjectMocks; -import org.mockito.Spy; - -import de.ozgcloud.eingang.common.formdata.FormHeaderTestFactory; -import de.ozgcloud.eingang.common.formdata.ZustaendigeStelle; -import de.ozgcloud.vorgang.common.grpc.GrpcFormDataMapper; - -class FormCycleFormDataMapperTest { - - @InjectMocks - private FormCycleFormDataMapper mapper = Mappers.getMapper(FormCycleFormDataMapper.class); - - @Spy - private GrpcFormDataMapper formDataMapper = Mappers.getMapper(GrpcFormDataMapper.class); - - @Nested - class TestToFormData { - - @Test - void shouldMapHeader() { - var expectedFormHeader = FormHeaderTestFactory.create(); - - var mapped = mapper.toFormData(FormCycleFormDataTestFactory.create()); - - assertThat(mapped.getHeader()).usingRecursiveComparison() - .ignoringFields("vorgangNummer", "sender", "formEngineName", "serviceKonto").isEqualTo(expectedFormHeader); - } - - @Test - void shouldMapZustaendigeStelle() { - var mapped = mapper.toFormData(FormCycleFormDataTestFactory.create()); - - assertThat(mapped.getZustaendigeStelles()) - .extracting(ZustaendigeStelle::getOrganisationseinheitenId) - .containsExactly(FormCycleFormHeaderTestFactory.ORGANISATIONSEINHEIT_ID); - } - } - -} diff --git a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleFormDataTestFactory.java b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleFormDataTestFactory.java deleted file mode 100644 index 369bc8a1..00000000 --- a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleFormDataTestFactory.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.formcycle; - -import de.ozgcloud.eingang.common.formdata.IncomingFileGroupTestFactory; -import de.ozgcloud.eingang.formcycle.FormCycleFormData.Builder; -import de.ozgcloud.vorgang.common.grpc.GrpcFormDataTestFactory; -import de.ozgcloud.vorgang.vorgang.GrpcFormData; - -public class FormCycleFormDataTestFactory { - - public static final FormCycleServiceKonto SERVICE_KONTO = FormCycleServiceKontoTestFactory.create(); - - public static FormCycleFormData create() { - return createBuilder().build(); - } - - public static Builder createBuilder() { - return FormCycleFormData.newBuilder() - .setHeader(FormCycleFormHeaderTestFactory.create()) - .setServiceKonto(SERVICE_KONTO) - .setFormData(GrpcFormDataTestFactory.create()) - .addAttachmentGroup(FormCycleAttachmentGroup.newBuilder() - .setName(IncomingFileGroupTestFactory.NAME) - .addFileId(IncomingFileGroupTestFactory.VENDOR_ID_XXX) - .build()); - } - - public static FormCycleFormData withFormData(GrpcFormData formData) { - return createBuilder().clearFormData().setFormData(formData).build(); - } -} \ No newline at end of file diff --git a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleFormHeaderTestFactory.java b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleFormHeaderTestFactory.java deleted file mode 100644 index 3065efa6..00000000 --- a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleFormHeaderTestFactory.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.formcycle; - -import de.ozgcloud.eingang.common.formdata.FormHeaderTestFactory; -import de.ozgcloud.eingang.formcycle.FormCycleFormHeader.Builder; - -public class FormCycleFormHeaderTestFactory { - - static final String RECEIVED_AT = FormHeaderTestFactory.CREATED_AT_STR; - static final String ORGANISATIONSEINHEIT_ID = "9030229"; - - static FormCycleFormHeader create() { - return createBuilder().build(); - } - - static Builder createBuilder() { - return FormCycleFormHeader.newBuilder() - .setRequestId(FormHeaderTestFactory.REQUEST_ID) - .setFormName(FormHeaderTestFactory.FORM_NAME) - .setReceivedAt(RECEIVED_AT) - .setFormId(FormHeaderTestFactory.FORM_ID) - .setOrganisationsEinheitId(ORGANISATIONSEINHEIT_ID); - } -} diff --git a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCyclePostfachAddressTestFactory.java b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCyclePostfachAddressTestFactory.java deleted file mode 100644 index 57448644..00000000 --- a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCyclePostfachAddressTestFactory.java +++ /dev/null @@ -1,22 +0,0 @@ -package de.ozgcloud.eingang.formcycle; - -import java.util.UUID; - -import de.ozgcloud.eingang.common.formdata.PostfachAddressTestFactory; -import de.ozgcloud.eingang.formcycle.FormCyclePostfachAddress.Builder; - -public class FormCyclePostfachAddressTestFactory { - - public static final String POSTKORB_ID = UUID.randomUUID().toString(); - public static final String VERSION = PostfachAddressTestFactory.VERSION; - - static FormCyclePostfachAddress create() { - return createBuilder().build(); - } - - static Builder createBuilder() { - return FormCyclePostfachAddress.newBuilder() - .setIdentifier(POSTKORB_ID) - .setVersion(VERSION); - } -} diff --git a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleServiceKontoMapperTest.java b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleServiceKontoMapperTest.java deleted file mode 100644 index 562bd419..00000000 --- a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleServiceKontoMapperTest.java +++ /dev/null @@ -1,94 +0,0 @@ -package de.ozgcloud.eingang.formcycle; - -import static org.assertj.core.api.Assertions.*; - -import org.apache.commons.lang3.StringUtils; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mapstruct.factory.Mappers; - -import de.ozgcloud.eingang.common.formdata.ServiceKonto.PostfachAddress; -import de.ozgcloud.eingang.common.formdata.ServiceKontoTestFactory; -import de.ozgcloud.eingang.common.formdata.StringBasedIdentifier; -import de.ozgcloud.eingang.semantik.common.ServiceKontoFactory; - -class FormCycleServiceKontoMapperTest { - - private final FormCycleServiceKontoMapper mapper = Mappers.getMapper(FormCycleServiceKontoMapper.class); - - @DisplayName("From grpc serviceKonto") - @Nested - class TestFromGrpcServiceKonto { - - @Test - void shouldMapType() { - var result = mapper.fromGrpc(FormCycleServiceKontoTestFactory.create()); - - assertThat(result.getType()).isEqualTo(ServiceKontoFactory.POSTFACH_TYPE_BAYERN_ID); - } - - @DisplayName("trustLevel") - @Nested - class TestTrustLevel { - - @Test - void shouldMap() { - var serviceKonto = mapper.fromGrpc(FormCycleServiceKontoTestFactory.create()); - - assertThat(serviceKonto.getTrustLevel()).isEqualTo(ServiceKontoTestFactory.TRUST_LEVEL); - } - - @Test - void shouldMapAsNullIfEmpty() { - var serviceKontoWithEmptyTrustLevel = FormCycleServiceKontoTestFactory.createBuilder().setTrustLevel(StringUtils.EMPTY).build(); - - var serviceKonto = mapper.fromGrpc(serviceKontoWithEmptyTrustLevel); - - assertThat(serviceKonto.getTrustLevel()).isNull(); - } - } - - @Test - void shouldNotPostfachAddressIfNotExists() { - var serviceKonto = mapper.fromGrpc(FormCycleServiceKontoTestFactory.createBuilder().clearAddress().build()); - - assertThat(serviceKonto.getPostfachAddresses()).isEmpty(); - } - - @DisplayName("postfachAddress") - @Nested - class TestPostfachAddress { - - @Test - void shouldMapPostkorbId() { - var postfachAddress = mapPostfachAddressFromGrpc(); - - assertThat(((StringBasedIdentifier) postfachAddress.getIdentifier()).getPostfachId()) - .isEqualTo(FormCyclePostfachAddressTestFactory.POSTKORB_ID); - } - - @Test - void shouldMapIdentifier() { - var postfachAddress = mapPostfachAddressFromGrpc(); - - assertThat(getIdentifier(postfachAddress)).isEqualTo(FormCyclePostfachAddressTestFactory.POSTKORB_ID); - } - - private String getIdentifier(PostfachAddress postfachAddress) { - return ((StringBasedIdentifier) postfachAddress.getIdentifier()).getPostfachId(); - } - - @Test - void shouldMapVersion() { - var postfachAddress = mapPostfachAddressFromGrpc(); - - assertThat(postfachAddress.getVersion()).isEqualTo(FormCyclePostfachAddressTestFactory.VERSION); - } - - private PostfachAddress mapPostfachAddressFromGrpc() { - return mapper.fromGrpc(FormCycleServiceKontoTestFactory.create()).getPostfachAddresses().get(0); - } - } - } -} \ No newline at end of file diff --git a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleServiceKontoTestFactory.java b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleServiceKontoTestFactory.java deleted file mode 100644 index 74548a95..00000000 --- a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleServiceKontoTestFactory.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.formcycle; - -import java.util.UUID; - -import de.ozgcloud.eingang.common.formdata.ServiceKontoTestFactory; -import de.ozgcloud.eingang.formcycle.FormCycleServiceKonto.Builder; - -public class FormCycleServiceKontoTestFactory { - - public static final FormCyclePostfachAddress ADDRESS = FormCyclePostfachAddressTestFactory.create(); - public static final String TYPE = UUID.randomUUID().toString(); - - static FormCycleServiceKonto create() { - return createBuilder().build(); - } - - static Builder createBuilder() { - return FormCycleServiceKonto.newBuilder() - .setAddress(ADDRESS) - .setType(TYPE) - .setTrustLevel(ServiceKontoTestFactory.TRUST_LEVEL); - } -} diff --git a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormDataControllerITCase.java b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormDataControllerITCase.java deleted file mode 100644 index e3e87859..00000000 --- a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormDataControllerITCase.java +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.formcycle; - -import static de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory.*; -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; - -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; -import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.mock.web.MockMultipartFile; -import org.springframework.test.web.servlet.MockMvc; -import org.springframework.test.web.servlet.ResultActions; - -import de.ozgcloud.common.test.ITCase; -import de.ozgcloud.eingang.common.formdata.IncomingFileGroupTestFactory; -import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory; -import de.ozgcloud.eingang.semantik.SemantikAdapter; -import de.ozgcloud.vorgang.common.grpc.GrpcFormDataTestFactory; -import de.ozgcloud.vorgang.vorgang.GrpcFormField; -import de.ozgcloud.vorgang.vorgang.GrpcSubForm; -import lombok.SneakyThrows; - -@ITCase -//@SpringBootTest(properties = { -// "grpc.client.vorgang-manager-local.address=static://127.0.0.1:9090", -// "grpc.client.vorgang-manager-local.negotiationType=PLAINTEXT" -//}) -//@ActiveProfiles("itcase") -@AutoConfigureMockMvc -class FormDataControllerITCase { - - @Autowired - private MockMvc mockMvc; - - @MockBean - private SemantikAdapter semantikAdapter; - - @Nested - class ReceiveFormData { - - @Test - @SneakyThrows - void shouldProcessSuccessful() { - doPostRequest().andExpect(status().isOk()); - } - - @SneakyThrows - private ResultActions doPostRequest() { - return mockMvc.perform( - multipart("/formData") - .file(new MockMultipartFile("formData", null, FormDataController.HTTP_TYPE_PROTOBUF, buildTestFormData())) - .file(IncomingFileTestFactory.asMultipartFile("representations")) - .file(asMultipartFile("attachments", - createBuilder().name(IncomingFileGroupTestFactory.VENDOR_ID_XXX + "__" + NAME).build()))); - } - } - - private byte[] buildTestFormData() { - return FormDataControllerTest.buildTestFormData(FormCycleFormDataTestFactory.withFormData( - GrpcFormDataTestFactory.createBuilder() - .addField(GrpcFormField.newBuilder().setName("firstname").setLabel("Vorname").setValue("Theo").build()) - .addField(GrpcFormField.newBuilder().setName("lastname").setLabel("Nachname").setValue("Test").build()) - .addField(GrpcFormField.newBuilder().setName("Street").setLabel("Straße").setValue("Hwy 5").build()) - .addForm(GrpcSubForm.newBuilder() - .setTitle("Address").setLabel("Adresse") - .addField(GrpcFormField.newBuilder().setName("firstname").setLabel("Vorname").setValue("Theo").build()) - .addField(GrpcFormField.newBuilder().setName("lastname").setLabel("Nachname").setValue("Test").build()) - .addField(GrpcFormField.newBuilder().setName("street").setLabel("Straße").setValue("Hwy 5").build()) - .build()) - .build())); - } - -} diff --git a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormDataControllerTest.java b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormDataControllerTest.java deleted file mode 100644 index 4f753916..00000000 --- a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormDataControllerTest.java +++ /dev/null @@ -1,349 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.formcycle; - -import static de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory.*; -import static org.assertj.core.api.Assertions.*; -import static org.mockito.ArgumentMatchers.*; -import static org.mockito.Mockito.*; -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; - -import java.io.ByteArrayOutputStream; -import java.util.Collections; -import java.util.Optional; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mockito.ArgumentCaptor; -import org.mockito.Captor; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.Spy; -import org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter; -import org.springframework.mock.web.MockMultipartFile; -import org.springframework.test.web.servlet.MockMvc; -import org.springframework.test.web.servlet.ResultActions; -import org.springframework.test.web.servlet.setup.MockMvcBuilders; - -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; -import de.ozgcloud.eingang.common.formdata.FormHeader; -import de.ozgcloud.eingang.common.formdata.FormHeaderTestFactory; -import de.ozgcloud.eingang.common.formdata.IncomingFileGroupTestFactory; -import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory; -import de.ozgcloud.eingang.common.formdata.ServiceKonto; -import de.ozgcloud.eingang.common.formdata.ServiceKontoTestFactory; -import de.ozgcloud.eingang.common.vorgang.VorgangNummerSupplier; -import de.ozgcloud.eingang.semantik.SemantikAdapter; -import lombok.SneakyThrows; - -class FormDataControllerTest { - - @Spy - @InjectMocks - private FormDataController controller; - - @Mock - private FormCycleFormDataMapper mapper; - @Mock - private SemantikAdapter semantikAdapter; - @Mock - private VorgangNummerSupplier vorgangNummerSupplier; - @Mock - private FormDataHtmlCleaner htmlCleaner; - @Mock - private FormCycleServiceKontoMapper serviceKontoMapper; - - private MockMvc mockMvc; - - @BeforeEach - void init() { - mockMvc = MockMvcBuilders.standaloneSetup(controller) - .setMessageConverters(new ProtobufHttpMessageConverter()) - .build(); - } - - @Nested - class ReceiveFormData { - - private FormData mappedFormData = FormDataTestFactory.create(); - - @Captor - private ArgumentCaptor<FormData> formDataCaptor; - - @BeforeEach - void init() { - when(htmlCleaner.clean(any())).thenReturn(mappedFormData); - when(mapper.toFormData(any())).thenReturn(mappedFormData); - when(vorgangNummerSupplier.get()).thenReturn(FormHeaderTestFactory.VORGANG_NUMMER); - } - - @Test - void shouldReturnSuccess() throws Exception { - doPostRequest().andExpect(status().is2xxSuccessful()); - } - - @Test - void shouldCallVorgangNummerSupplier() { - doPostRequest(); - - verify(vorgangNummerSupplier).get(); - } - - @Test - @SneakyThrows - void shouldResponseWithVorgangNummer() { - - var confirmation = FormCycleConfirmationResponse.parseFrom( - doPostRequest().andReturn().getResponse().getContentAsByteArray()); - - assertThat(confirmation.getVorgangNummer()).isEqualTo(FormHeaderTestFactory.VORGANG_NUMMER); - } - - @Test - void shouldSetVorgangNummer() { - doPostRequest(); - - verify(semantikAdapter).processFormData(formDataCaptor.capture()); - assertThat(formDataCaptor.getValue().getHeader().getRequestId()).isEqualTo(FormHeaderTestFactory.REQUEST_ID); - } - - @Test - void shouldCallHtmlCleaner() { - doPostRequest(); - - verify(htmlCleaner).clean(mappedFormData); - } - - @Test - void shouldCallMapper() { - doPostRequest(); - - verify(mapper).toFormData(notNull()); - } - - @Test - void shouldCallSemantikAdapter() { - doPostRequest(); - - verify(semantikAdapter).processFormData(formDataCaptor.capture()); - assertThat(formDataCaptor.getValue()).usingRecursiveComparison() - .ignoringFields("representations", "attachments", "numberOfAttachments") - .isEqualTo(mappedFormData); - } - - @Test - void shouldCallAddServiceKonto() { - doReturn(mappedFormData).when(controller).addFiles(any(), any(), any()); - - doPostRequest(); - - verify(controller).addServiceKonto(notNull(), eq(mappedFormData)); - } - - @Nested - class Representations { - - @BeforeEach - void init() { - var formData = FormDataTestFactory.createBuilder().clearRepresentations().numberOfRepresentations(0).build(); - when(mapper.toFormData(any())).thenReturn(formData); - when(htmlCleaner.clean(any())).thenReturn(formData); - } - - @Test - void shouldBePresent() { - doPostRequest(); - - verify(semantikAdapter).processFormData(formDataCaptor.capture()); - var formData = formDataCaptor.getValue(); - assertThat(formData.getRepresentations()).hasSize(1); - assertThat(formData.getNumberOfRepresentations()).isEqualTo(1); - } - - @Test - void shouldBeFilled() { - doPostRequest(); - - verify(semantikAdapter).processFormData(formDataCaptor.capture()); - assertThat(formDataCaptor.getValue().getRepresentations()).first().usingRecursiveComparison() - .ignoringFields("id", "vendorId", "file") - .isEqualTo(IncomingFileTestFactory.create()); - } - - @Test - @SneakyThrows - void shouldBeFineWithoutRepresentations() { - mockMvc.perform( - multipart("/formData") - .file(new MockMultipartFile("formData", null, FormDataController.HTTP_TYPE_PROTOBUF, buildTestFormData()))) - .andExpect(status().isOk()); - } - } - - @Nested - class Attachments { - @BeforeEach - void init() { - var formData = FormDataTestFactory.createBuilder().clearAttachments().numberOfAttachments(0).build(); - when(mapper.toFormData(any())).thenReturn(formData); - when(htmlCleaner.clean(any())).thenReturn(formData); - } - - @Test - void shouldHaveGroup() { - doPostRequest(); - - verify(semantikAdapter).processFormData(formDataCaptor.capture()); - assertThat(formDataCaptor.getValue().getAttachments()).hasSize(1); - } - - @Test - void shouldSetNumberOfAttachments() { - doPostRequest(); - - verify(semantikAdapter).processFormData(formDataCaptor.capture()); - assertThat(formDataCaptor.getValue().getNumberOfAttachments()).isEqualTo(1); - } - - } - - @SneakyThrows - private ResultActions doPostRequest() { - return mockMvc.perform( - multipart("/formData") - .file(new MockMultipartFile("formData", null, FormDataController.HTTP_TYPE_PROTOBUF, buildTestFormData())) - .file(IncomingFileTestFactory.asMultipartFile("representations")) - .file(asMultipartFile("attachments", - createBuilder().name(IncomingFileGroupTestFactory.VENDOR_ID_XXX).build()))); - } - } - - @SneakyThrows - static byte[] buildTestFormData() { - return buildTestFormData(FormCycleFormDataTestFactory.create()); - } - - @SneakyThrows - static byte[] buildTestFormData(FormCycleFormData formData) { - var out = new ByteArrayOutputStream(); - formData.writeTo(out); - return out.toByteArray(); - } - - @Nested - class TestAttachmentGroupsBuilder { - - private FormDataController.AttachmentGroupsBuilder groupsBuilder; - - @BeforeEach - void init() { - groupsBuilder = controller.new AttachmentGroupsBuilder( - Collections.singleton(FormCycleAttachmentGroupTestFactory.create()), - Optional.of(Collections.singleton(IncomingFileTestFactory.asMultipartFile(NAME)))); - } - - @Nested - class TestBuildGroup { - @Test - void shouldSetName() { - var group = groupsBuilder.buildGroup(FormCycleAttachmentGroupTestFactory.create()); - - assertThat(group.getName()).isEqualTo(IncomingFileGroupTestFactory.NAME); - } - - @Test - void shouldHaveFile() { - var group = groupsBuilder.buildGroup(FormCycleAttachmentGroupTestFactory.create()); - - assertThat(group.getFiles()).hasSize(1).first() - .usingRecursiveComparison().ignoringFields("id", "vendorId", "file") - .isEqualTo(IncomingFileTestFactory.create()); - } - - @Test - void shouldBeFineWithoutFile() { - var group = groupsBuilder.buildGroup(FormCycleAttachmentGroupTestFactory.createBuilder().clearFileId().build()); - - assertThat(group.getFiles()).isEmpty(); - } - - @Test - void shouldBeFineWithMissingFile() { - var group = groupsBuilder.buildGroup(FormCycleAttachmentGroupTestFactory.createBuilder().clearFileId().addFileId("missing").build()); - - assertThat(group.getFiles()).isEmpty(); - } - } - } - - @DisplayName("Add serviceKonto") - @Nested - class TestServiceKontoMapping { - - @DisplayName("on existing") - @Nested - class TestOnExisting { - - private final ServiceKonto serviceKonto = ServiceKontoTestFactory.create(); - - @BeforeEach - void mock() { - when(serviceKontoMapper.fromGrpc(any(FormCycleServiceKonto.class))).thenReturn(serviceKonto); - } - - @Test - void shouldCallMapper() { - controller.addServiceKonto(FormCycleFormDataTestFactory.create(), buildEmptyFormDataWithHeader()); - - verify(serviceKontoMapper).fromGrpc(FormCycleFormDataTestFactory.SERVICE_KONTO); - } - - @Test - void shouldMapServiceKontoType() { - var formData = controller.addServiceKonto(FormCycleFormDataTestFactory.create(), buildEmptyFormDataWithHeader()); - - assertThat(getServiceKontoType(formData)).isEqualTo(ServiceKontoTestFactory.TYPE); - } - } - - @Test - void shouldBeNullIfNotExists() { - var formData = controller.addServiceKonto(FormCycleFormData.newBuilder().build(), buildEmptyFormDataWithHeader()); - - assertThat(formData.getHeader().getServiceKonto()).isNull(); - } - - private String getServiceKontoType(FormData formData) { - return formData.getHeader().getServiceKonto().getType(); - } - - private FormData buildEmptyFormDataWithHeader() { - return FormData.builder().header(FormHeader.builder().build()).build(); - } - } -} \ No newline at end of file diff --git a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormDataHtmlCleanerITCase.java b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormDataHtmlCleanerITCase.java deleted file mode 100644 index 8cfcd3e7..00000000 --- a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormDataHtmlCleanerITCase.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.formcycle; - -import static org.assertj.core.api.Assertions.*; - -import java.util.Map; - -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Spy; - -import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; - -class FormDataHtmlCleanerITCase { - - @Spy - @InjectMocks - private FormDataHtmlCleaner cleaner; - - static final String KEY_LABEL = "label"; - static final String KEY_VALUE = "value"; - - static final Map<String, Object> FORM_DATA_MAP = Map.of("tf1", Map.of( - KEY_LABEL, "<p><em>Label</em></p>", - KEY_VALUE, "<i>Value</i>"), - "fs1", Map.of( - KEY_LABEL, "Key", - KEY_VALUE, Map.of( - "tf3", Map.of( - KEY_LABEL, "<p><s>Label</s></p>", - KEY_VALUE, "ein Text mit <html><body><h1>Hello</h1><body><html>")), - "tf4", Map.of( - KEY_LABEL, "<p><span style=\"background-color:#1abc9c;\">Wichtig</span></p>", - KEY_VALUE, "Text"), - "ed1", Map.of( - KEY_LABEL, - "<ol>\n\t<li><em><strong><u>ganz</u></strong></em></li>\n\t<li><span style=\"color:#e74c3c;" - + "\">bunt</span></li>\n</ol>", - KEY_VALUE, "TExt\nmit\n Leerzeichen\nund\n Umbrüchen" - ))); - - static final Map<String, Object> EXPECTED_MAP = Map.of("tf1", Map.of( - KEY_LABEL, "Label", - KEY_VALUE, "Value"), - "fs1", Map.of( - KEY_LABEL, "Key", - KEY_VALUE, Map.of( - "tf3", Map.of( - KEY_LABEL, "Label", - KEY_VALUE, "ein Text mit Hello")), - "tf4", Map.of( - KEY_LABEL, "Wichtig", - KEY_VALUE, "Text"), - "ed1", Map.of( - KEY_LABEL, - "\n\tganz\n\tbunt\n", - KEY_VALUE, "TExt\nmit\n Leerzeichen\nund\n Umbrüchen" - ))); - - @Test - void shouldCleanHtml() { - var result = cleaner.clean(FormDataTestFactory.createBuilder().formData(FORM_DATA_MAP).build()); - - assertThat(result.getFormData()).usingRecursiveComparison().isEqualTo(EXPECTED_MAP); - } - -} \ No newline at end of file diff --git a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormDataHtmlCleanerTest.java b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormDataHtmlCleanerTest.java deleted file mode 100644 index ad121827..00000000 --- a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormDataHtmlCleanerTest.java +++ /dev/null @@ -1,205 +0,0 @@ -/* - * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.formcycle; - -import static org.assertj.core.api.Assertions.*; -import static org.mockito.Mockito.*; - -import java.util.List; -import java.util.Map; - -import org.assertj.core.data.MapEntry; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.CsvSource; -import org.mockito.InjectMocks; -import org.mockito.Spy; - -import de.ozgcloud.eingang.common.formdata.FormData; - -class FormDataHtmlCleanerTest { - - private static final String KEY = "key"; - private static final Object VALUE = "value"; - - @Spy - @InjectMocks - private FormDataHtmlCleaner cleaner; - - @Nested - class TestClean { - - private final static Map<String, Object> FORM_DATA_MAP = Map.of(KEY, VALUE); - private final static FormData FORM_DATA = FormData.builder().formData(FORM_DATA_MAP).build(); - - @Test - void shouldCallCleanFormData() { - cleaner.clean(FORM_DATA); - - verify(cleaner).cleanFormData(FORM_DATA_MAP); - } - - @Test - void shouldSetCleanedFormData() { - var cleanedFormData = Map.of(KEY, VALUE); - doReturn(cleanedFormData).when(cleaner).cleanFormData(anyMap()); - - var result = cleaner.clean(FORM_DATA); - - assertThat(result.getFormData()).isSameAs(cleanedFormData); - } - } - - @Nested - class TestCleanFormData { - - @Test - void shouldCallCleanValue() { - cleaner.cleanFormData(Map.of(KEY, VALUE)); - - verify(cleaner).cleanValue(VALUE); - } - - @Test - void shouldReturnCleanedMap() { - var cleanedValue = "noHtml"; - doReturn(cleanedValue).when(cleaner).cleanValue(any()); - - var result = cleaner.cleanFormData(Map.of(KEY, VALUE)); - - assertThat(result).containsOnly(MapEntry.entry(KEY, cleanedValue)); - } - } - - @Nested - class TestCleanValue { - - @Nested - class TestCleanMap { - - @Test - void shouldCallCleanFormData() { - var expectedMap = Map.of(KEY, VALUE); - - cleaner.cleanValue(expectedMap); - - verify(cleaner).cleanFormData(expectedMap); - } - - @Test - void shouldReturnValue() { - var expectedMap = Map.of(KEY, VALUE); - doReturn(expectedMap).when(cleaner).cleanFormData(anyMap()); - - var result = cleaner.cleanValue(Map.of("a", "b")); - - assertThat(result).isSameAs(expectedMap); - } - } - - @Nested - class TestCleanCollection { - - @Test - void shouldCallCleanValue() { - cleaner.cleanValue(List.of(VALUE)); - - verify(cleaner).cleanValue(VALUE); - } - - @Test - void shouldReturnValue() { - doReturn(List.of(VALUE)).when(cleaner).cleanValue(any()); - - var result = cleaner.cleanValue(List.of("a")); - - assertThat(result).isInstanceOf(List.class).asList().containsExactly(VALUE); - } - } - - @Nested - class TestCleanString { - - @Test - void shouldCallParseHtml() { - var stringValue = VALUE.toString(); - - cleaner.cleanValue(VALUE); - - verify(cleaner).parseHtml(stringValue); - } - - @Test - void shouldReturnValue() { - var cleanedValue = "noHtml"; - doReturn(cleanedValue).when(cleaner).parseHtml(anyString()); - - var result = cleaner.cleanValue(VALUE); - - assertThat(result).isEqualTo(cleanedValue); - } - } - - @Test - void shouldReturnUnmodifiedValue() { - var value = 1; - - var result = cleaner.cleanValue(value); - - assertThat(result).isEqualTo(1); - verify(cleaner, never()).parseHtml(any()); - } - } - - @Nested - class TestParseHtml { - - @Test - void shouldParseHtml() { - var result = cleaner.parseHtml("<html><body><h1>Hello</h1><body><html>"); - - assertThat(result).isEqualTo("Hello"); - } - - @DisplayName("should decode german characters") - @ParameterizedTest(name = "{0} => {2}") - @CsvSource({ "Ä, Ä", "Ö, Ö", "Ü, Ü", "ß, ß" }) - void shouldDecodeUmlaut(String srcValue, String expectedValue) { - var result = cleaner.parseHtml(srcValue); - - assertThat(result).isEqualTo(expectedValue); - } - - @DisplayName("should decode special characters") - @ParameterizedTest(name = "{0} => {1}") - @CsvSource(value = { "&, &", "<, <,", ">, >", "", \"", "', '" }, quoteCharacter = '`') - void shouldDecodeAmpersand(String src, String expected) { - var result = cleaner.parseHtml(src); - - assertThat(result).isEqualTo(expected); - } - } -} \ No newline at end of file diff --git a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormcycleAdapterApplicationTest.java b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormcycleAdapterApplicationTest.java deleted file mode 100644 index 194937da..00000000 --- a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormcycleAdapterApplicationTest.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.formcycle; - -import org.junit.jupiter.api.Test; - -import de.ozgcloud.common.test.ITCase; - -@ITCase -class FormcycleAdapterApplicationTest { - - @Test - void shouldStartApplication() { // NOSONAR - // just start without an error - } - -} diff --git a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/common/errorhandling/FormcycleExceptionHandlerTest.java b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/common/errorhandling/FormcycleExceptionHandlerTest.java deleted file mode 100644 index f5e8ffaf..00000000 --- a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/common/errorhandling/FormcycleExceptionHandlerTest.java +++ /dev/null @@ -1,126 +0,0 @@ -package de.ozgcloud.eingang.formcycle.common.errorhandling; - -import static de.ozgcloud.eingang.formcycle.common.errorhandling.InternalExceptionDtoTestFactory.*; -import static org.assertj.core.api.Assertions.*; -import static org.mockito.Mockito.*; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.Spy; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; - -import de.ozgcloud.common.errorhandling.ExceptionUtil; -import de.ozgcloud.common.errorhandling.TechnicalException; -import io.grpc.StatusRuntimeException; - -class FormcycleExceptionHandlerTest { - - @Spy - @InjectMocks - private FormcycleExceptionHandler exceptionHandler; - - @Nested - class TestHandleTechnicalException { - - @Mock - private TechnicalException technicalException; - - @Test - void shouldCallBuildResponseEntity() { - when(technicalException.getExceptionId()).thenReturn(EXCEPTION_ID); - - exceptionHandler.handleTechnicalException(technicalException, null); - - verify(exceptionHandler).buildResponseEntity(FormcycleExceptionHandler.TECHNICAL_EXCEPTION_MESSAGE, EXCEPTION_ID); - } - - } - - @Nested - class TestHandleStatusRuntimeException { - - @Mock - private StatusRuntimeException statusRuntimeException; - - @Test - void shouldCallBuildResponseEntity() { - when(statusRuntimeException.getStackTrace()).thenReturn(new StackTraceElement[0]); - when(statusRuntimeException.getMessage()).thenReturn(ExceptionUtil.formatMessageWithExceptionId(MESSAGE, EXCEPTION_ID)); - - exceptionHandler.handleStatusRuntimeException(statusRuntimeException, null); - - verify(exceptionHandler).buildResponseEntity(FormcycleExceptionHandler.CREATE_VORGANG_EXCEPTION_MESSAGE, EXCEPTION_ID); - } - - @Nested - class TestGetExceptionId { - - @Test - void shouldReturnExceptionIdFromMessage() { - var exceptionId = exceptionHandler.getExceptionId(messageWithExceptionId()); - - assertThat(exceptionId).isEqualTo(EXCEPTION_ID); - } - - @Test - void shouldCreateNewExceptionId() { - var exceptionId = exceptionHandler.getExceptionId(MESSAGE); - - assertThat(exceptionId).isNotEqualTo(EXCEPTION_ID); - } - - } - - } - - @Nested - class TestBuildResponseEntity { - - @Test - void shouldReturnInternaServerError() { - var response = buildResponseEntity(); - - assertThat(response.getStatusCode()).isEqualTo(HttpStatus.INTERNAL_SERVER_ERROR); - } - - @Test - void shouldCallBuildInternalExceptionDto() { - buildResponseEntity(); - - verify(exceptionHandler).buildInternalExceptionDto(InternalExceptionDtoTestFactory.MESSAGE, EXCEPTION_ID); - } - - private ResponseEntity<InternalExceptionDto> buildResponseEntity() { - return exceptionHandler.buildResponseEntity(InternalExceptionDtoTestFactory.MESSAGE, EXCEPTION_ID); - } - - } - - @Nested - class TestBuildInternalExceptionDto { - - @Test - void shouldSetExceptionId() { - var response = buildInternalExceptionDto(); - - assertThat(response.getExceptionId()).isEqualTo(EXCEPTION_ID); - } - - @Test - void shouldSetMessage() { - var response = buildInternalExceptionDto(); - - assertThat(response.getMessage()).isEqualTo(InternalExceptionDtoTestFactory.MESSAGE); - } - - private InternalExceptionDto buildInternalExceptionDto() { - return exceptionHandler.buildInternalExceptionDto(InternalExceptionDtoTestFactory.MESSAGE, EXCEPTION_ID); - } - - } -} \ No newline at end of file diff --git a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/common/errorhandling/InternalExceptionDtoTestFactory.java b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/common/errorhandling/InternalExceptionDtoTestFactory.java deleted file mode 100644 index 98a8e5f2..00000000 --- a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/common/errorhandling/InternalExceptionDtoTestFactory.java +++ /dev/null @@ -1,22 +0,0 @@ -package de.ozgcloud.eingang.formcycle.common.errorhandling; - -import de.ozgcloud.common.errorhandling.ExceptionUtil; -import de.ozgcloud.eingang.formcycle.common.errorhandling.InternalExceptionDto.InternalExceptionDtoBuilder; - -public class InternalExceptionDtoTestFactory { - - public static final String EXCEPTION_ID = "exception-id"; - public static final String MESSAGE = "exception message"; - - public static InternalExceptionDto create() { - return createBuilder().build(); - } - - private static InternalExceptionDtoBuilder createBuilder() { - return InternalExceptionDto.builder().exceptionId(EXCEPTION_ID).message(MESSAGE); - } - - public static String messageWithExceptionId() { - return ExceptionUtil.formatMessageWithExceptionId(MESSAGE, EXCEPTION_ID); - } -} diff --git a/formcycle-adapter/formcycle-adapter-impl/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension b/formcycle-adapter/formcycle-adapter-impl/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension deleted file mode 100644 index 79b126e6..00000000 --- a/formcycle-adapter/formcycle-adapter-impl/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension +++ /dev/null @@ -1 +0,0 @@ -org.mockito.junit.jupiter.MockitoExtension \ No newline at end of file diff --git a/formcycle-adapter/formcycle-adapter-impl/src/test/resources/application-itcase.yml b/formcycle-adapter/formcycle-adapter-impl/src/test/resources/application-itcase.yml deleted file mode 100644 index 54587478..00000000 --- a/formcycle-adapter/formcycle-adapter-impl/src/test/resources/application-itcase.yml +++ /dev/null @@ -1,4 +0,0 @@ -ozgcloud: - adapter: - targetVorgangManagerName: local - fallbackStrategy: DENY \ No newline at end of file diff --git a/formcycle-adapter/formcycle-adapter-impl/src/test/resources/junit-platform.properties b/formcycle-adapter/formcycle-adapter-impl/src/test/resources/junit-platform.properties deleted file mode 100644 index 1cebb76d..00000000 --- a/formcycle-adapter/formcycle-adapter-impl/src/test/resources/junit-platform.properties +++ /dev/null @@ -1 +0,0 @@ -junit.jupiter.extensions.autodetection.enabled = true \ No newline at end of file diff --git a/formcycle-adapter/formcycle-adapter-impl/src/test/resources/log4j2.xml b/formcycle-adapter/formcycle-adapter-impl/src/test/resources/log4j2.xml deleted file mode 100644 index 5d7001e1..00000000 --- a/formcycle-adapter/formcycle-adapter-impl/src/test/resources/log4j2.xml +++ /dev/null @@ -1,14 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<configuration> - <Appenders> - <Console name="CONSOLE" target="SYSTEM_OUT"> - <PatternLayout pattern="[%-5level] %c{1.} %msg%n"/> - </Console> - </Appenders> - - <Loggers> - <Root level="WARN"> - <appender-ref ref="CONSOLE" /> - </Root> - </Loggers> -</configuration> \ No newline at end of file diff --git a/formcycle-adapter/formcycle-adapter-interface/pom.xml b/formcycle-adapter/formcycle-adapter-interface/pom.xml deleted file mode 100644 index fb04eeba..00000000 --- a/formcycle-adapter/formcycle-adapter-interface/pom.xml +++ /dev/null @@ -1,102 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - - Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - Ministerpräsidenten des Landes Schleswig-Holstein - Staatskanzlei - Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - - Lizenziert unter der EUPL, Version 1.2 oder - sobald - diese von der Europäischen Kommission genehmigt wurden - - Folgeversionen der EUPL ("Lizenz"); - Sie dürfen dieses Werk ausschließlich gemäß - dieser Lizenz nutzen. - Eine Kopie der Lizenz finden Sie hier: - - https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - - Sofern nicht durch anwendbare Rechtsvorschriften - gefordert oder in schriftlicher Form vereinbart, wird - die unter der Lizenz verbreitete Software "so wie sie - ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - ausdrücklich oder stillschweigend - verbreitet. - Die sprachspezifischen Genehmigungen und Beschränkungen - unter der Lizenz sind dem Lizenztext zu entnehmen. - ---> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>de.ozgcloud.common</groupId> - <artifactId>ozgcloud-common-dependencies</artifactId> - <version>4.7.0</version> - <relativePath/> - </parent> - - <groupId>de.ozgcloud.eingang</groupId> - <artifactId>formcycle-adapter-interface</artifactId> - <name>EM - Formcycle Adapter - Interface</name> - <version>2.16.0-SNAPSHOT</version> - - <properties> - <vorgang-manager.version>2.0.0</vorgang-manager.version> - <java.version>21</java.version> - <maven.compiler.source>${java.version}</maven.compiler.source> - <maven.compiler.target>${java.version}</maven.compiler.target> - </properties> - - <dependencies> - <dependency> - <groupId>de.ozgcloud.vorgang</groupId> - <artifactId>vorgang-manager-interface</artifactId> - <version>${vorgang-manager.version}</version> - </dependency> - <dependency> - <groupId>de.ozgcloud.vorgang</groupId> - <artifactId>vorgang-manager-interface</artifactId> - <classifier>sources</classifier> - <scope>provided</scope> - <version>${vorgang-manager.version}</version> - </dependency> - - <!-- protobuf --> - <dependency> - <groupId>com.google.protobuf</groupId> - <artifactId>protobuf-java</artifactId> - </dependency> - <dependency> - <groupId>com.google.protobuf</groupId> - <artifactId>protobuf-java-util</artifactId> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>com.github.os72</groupId> - <artifactId>protoc-jar-maven-plugin</artifactId> - <version>${protoc-jar-plugin.version}</version> - <executions> - <execution> - <phase>generate-sources</phase> - <goals> - <goal>run</goal> - </goals> - <configuration> - <includeMavenTypes>direct</includeMavenTypes> - <outputTargets> - <outputTarget> - <type>java</type> - </outputTarget> - <outputTarget> - <type>grpc-java</type> - <pluginArtifact>io.grpc:protoc-gen-grpc-java:${protoc-gen.version}</pluginArtifact> - </outputTarget> - </outputTargets> - </configuration> - </execution> - </executions> - </plugin> - </plugins> - </build> -</project> diff --git a/formcycle-adapter/formcycle-adapter-interface/src/main/protobuf/form-data.model.proto b/formcycle-adapter/formcycle-adapter-interface/src/main/protobuf/form-data.model.proto deleted file mode 100644 index 28ff49eb..00000000 --- a/formcycle-adapter/formcycle-adapter-interface/src/main/protobuf/form-data.model.proto +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -syntax = "proto3"; - -package de.ozgcloud.eingang.formcycle; - -/*import "common.model.proto";*/ -import "vorgang.model.proto"; - -option java_multiple_files = true; -option java_package = "de.ozgcloud.eingang.formcycle"; -option java_outer_classname = "FormcycleFormDataProto"; - -message FormCycleConfirmationResponse { - string vorgangNummer = 1; -} - -message FormCycleFormData { - FormCycleFormHeader header = 1; - FormCycleServiceKonto serviceKonto = 2; - de.ozgcloud.vorgang.vorgang.GrpcFormData formData = 3; - repeated FormCycleAttachmentGroup attachmentGroup = 4; -} - -message FormCycleFormHeader { - string receivedAt = 1; - string formName = 2; - string organisationsEinheitId = 3; - string formId = 4; - string requestId = 5; -} - -message FormCycleServiceKonto { - string type = 1; - FormCyclePostfachAddress address = 2; - string trustLevel = 3; -} - -message FormCyclePostfachAddress { - string version = 1; - string identifier = 2; -} - -message FormCycleAttachmentGroup { - string name = 1; - repeated string fileId = 2; -} \ No newline at end of file diff --git a/formcycle-adapter/pom.xml b/formcycle-adapter/pom.xml deleted file mode 100644 index e4696b1b..00000000 --- a/formcycle-adapter/pom.xml +++ /dev/null @@ -1,72 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - - Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - Ministerpräsidenten des Landes Schleswig-Holstein - Staatskanzlei - Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - - Lizenziert unter der EUPL, Version 1.2 oder - sobald - diese von der Europäischen Kommission genehmigt wurden - - Folgeversionen der EUPL ("Lizenz"); - Sie dürfen dieses Werk ausschließlich gemäß - dieser Lizenz nutzen. - Eine Kopie der Lizenz finden Sie hier: - - https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - - Sofern nicht durch anwendbare Rechtsvorschriften - gefordert oder in schriftlicher Form vereinbart, wird - die unter der Lizenz verbreitete Software "so wie sie - ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - ausdrücklich oder stillschweigend - verbreitet. - Die sprachspezifischen Genehmigungen und Beschränkungen - unter der Lizenz sind dem Lizenztext zu entnehmen. - ---> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>de.ozgcloud.eingang</groupId> - <artifactId>eingang-manager</artifactId> - <version>2.16.0-SNAPSHOT</version> - </parent> - - <artifactId>formcycle-adapter</artifactId> - <name>EM - Formcycle Adapter</name> - <description>Eingang Adapter für Formcycle basierte Formulare</description> - <packaging>pom</packaging> - - <modules> - <module>formcycle-adapter-interface</module> - <module>formcycle-adapter-impl</module> - </modules> - - <properties> - <spring-boot.build-image.imageName>docker.ozg-sh.de/formcycle-adapter:build-latest</spring-boot.build-image.imageName> - </properties> - - <dependencies> - <dependency> - <groupId>de.ozgcloud.vorgang</groupId> - <artifactId>vorgang-manager-utils</artifactId> - </dependency> - <dependency> - <groupId>de.ozgcloud.vorgang</groupId> - <artifactId>vorgang-manager-utils</artifactId> - <type>test-jar</type> - <scope>test</scope> - </dependency> - <dependency> - <groupId>de.ozgcloud.vorgang</groupId> - <artifactId>vorgang-manager-interface</artifactId> - </dependency> - <dependency> - <groupId>de.ozgcloud.vorgang</groupId> - <artifactId>vorgang-manager-interface</artifactId> - <classifier>sources</classifier> - <scope>compile</scope> - <version>${vorgang-manager.version}</version> - </dependency> - </dependencies> -</project> diff --git a/formsolutions-adapter/pom.xml b/formsolutions-adapter/pom.xml deleted file mode 100644 index 850c94ad..00000000 --- a/formsolutions-adapter/pom.xml +++ /dev/null @@ -1,210 +0,0 @@ -<?xml version="1.0"?> -<!-- - - Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - Ministerpräsidenten des Landes Schleswig-Holstein - Staatskanzlei - Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - - Lizenziert unter der EUPL, Version 1.2 oder - sobald - diese von der Europäischen Kommission genehmigt wurden - - Folgeversionen der EUPL ("Lizenz"); - Sie dürfen dieses Werk ausschließlich gemäß - dieser Lizenz nutzen. - Eine Kopie der Lizenz finden Sie hier: - - https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - - Sofern nicht durch anwendbare Rechtsvorschriften - gefordert oder in schriftlicher Form vereinbart, wird - die unter der Lizenz verbreitete Software "so wie sie - ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - ausdrücklich oder stillschweigend - verbreitet. - Die sprachspezifischen Genehmigungen und Beschränkungen - unter der Lizenz sind dem Lizenztext zu entnehmen. - ---> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - - <parent> - <groupId>de.ozgcloud.eingang</groupId> - <artifactId>eingang-manager</artifactId> - <version>2.16.0-SNAPSHOT</version> - <relativePath>../</relativePath> - </parent> - - <artifactId>formsolutions-adapter</artifactId> - <name>Eingangs Adapter - FormSolutions</name> - <packaging>jar</packaging> - - <properties> - <spring-boot.build-image.imageName>docker.ozg-sh.de/formsolutions-adapter:build-latest</spring-boot.build-image.imageName> - </properties> - - <dependencies> - <!-- own projects --> - <dependency> - <groupId>de.ozgcloud.eingang</groupId> - <artifactId>common</artifactId> - </dependency> - <dependency> - <groupId>de.ozgcloud.eingang</groupId> - <artifactId>router</artifactId> - </dependency> - <dependency> - <groupId>de.ozgcloud.eingang</groupId> - <artifactId>semantik-adapter</artifactId> - </dependency> - - <!-- Spring --> - <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-web-services</artifactId> - </dependency> - <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-actuator</artifactId> - </dependency> - <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-json</artifactId> - </dependency> - - <!-- tag::springws[] --> - <dependency> - <groupId>wsdl4j</groupId> - <artifactId>wsdl4j</artifactId> - </dependency> - - <dependency> - <groupId>org.apache.ws.xmlschema</groupId> - <artifactId>xmlschema-core</artifactId> - </dependency> - <!-- end::springws[] --> - - <!-- Dev --> - <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-devtools</artifactId> - <scope>runtime</scope> - </dependency> - <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-configuration-processor</artifactId> - <optional>true</optional> - </dependency> - <dependency> - <groupId>org.projectlombok</groupId> - <artifactId>lombok</artifactId> - </dependency> - - <!-- Test --> - <dependency> - <groupId>de.ozgcloud.common</groupId> - <artifactId>ozgcloud-common-test</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>de.ozgcloud.eingang</groupId> - <artifactId>common</artifactId> - <type>test-jar</type> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-test</artifactId> - <scope>test</scope> - <exclusions> - <exclusion> - <groupId>org.junit.vintage</groupId> - <artifactId>junit-vintage-engine</artifactId> - </exclusion> - </exclusions> - </dependency> - </dependencies> - - <build> - <finalName>${project.artifactId}</finalName> - <plugins> - <!-- tag::wsdl/xsd[] --> - <plugin> - <groupId>com.evolvedbinary.maven.jvnet</groupId> - <artifactId>jaxb30-maven-plugin</artifactId> - <executions> - <execution> - <goals> - <goal>generate</goal> - </goals> - </execution> - </executions> - <configuration> - <schemaLanguage>WSDL</schemaLanguage> - <generatePackage>de.ozgcloud.eingang.formsolutions</generatePackage> - <schemas> - <schema> - <fileset> - <directory>${basedir}/src/main/resources/wsdl</directory> - <includes> - <include>*.wsdl</include> - </includes> - </fileset> - </schema> - </schemas> - <schemaLanguage>WSDL</schemaLanguage> - </configuration> - </plugin> - - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-surefire-plugin</artifactId> - </plugin> - - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-failsafe-plugin</artifactId> - </plugin> - - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-compiler-plugin</artifactId> - </plugin> - - <plugin> - <groupId>pl.project13.maven</groupId> - <artifactId>git-commit-id-plugin</artifactId> - </plugin> - <plugin> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-maven-plugin</artifactId> - </plugin> - <plugin> - <groupId>org.jacoco</groupId> - <artifactId>jacoco-maven-plugin</artifactId> - </plugin> - </plugins> - </build> - - <profiles> - <profile> - <id>ci-build</id> - <build> - <plugins> - <plugin> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-maven-plugin</artifactId> - <executions> - <execution> - <id>build-image</id> - <phase>install</phase> - <goals> - <goal>build-image-no-fork</goal> - </goals> - </execution> - </executions> - </plugin> - </plugins> - </build> - </profile> - </profiles> -</project> diff --git a/formsolutions-adapter/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension b/formsolutions-adapter/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension deleted file mode 100644 index 79b126e6..00000000 --- a/formsolutions-adapter/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension +++ /dev/null @@ -1 +0,0 @@ -org.mockito.junit.jupiter.MockitoExtension \ No newline at end of file diff --git a/formsolutions-adapter/src/test/resources/junit-platform.properties b/formsolutions-adapter/src/test/resources/junit-platform.properties deleted file mode 100644 index 1cebb76d..00000000 --- a/formsolutions-adapter/src/test/resources/junit-platform.properties +++ /dev/null @@ -1 +0,0 @@ -junit.jupiter.extensions.autodetection.enabled = true \ No newline at end of file diff --git a/forwarder/pom.xml b/forwarder/pom.xml deleted file mode 100644 index 54f6c0f5..00000000 --- a/forwarder/pom.xml +++ /dev/null @@ -1,102 +0,0 @@ -<?xml version="1.0"?> -<!-- - - Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - Ministerpräsidenten des Landes Schleswig-Holstein - Staatskanzlei - Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - - Lizenziert unter der EUPL, Version 1.2 oder - sobald - diese von der Europäischen Kommission genehmigt wurden - - Folgeversionen der EUPL ("Lizenz"); - Sie dürfen dieses Werk ausschließlich gemäß - dieser Lizenz nutzen. - Eine Kopie der Lizenz finden Sie hier: - - https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - - Sofern nicht durch anwendbare Rechtsvorschriften - gefordert oder in schriftlicher Form vereinbart, wird - die unter der Lizenz verbreitete Software "so wie sie - ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - ausdrücklich oder stillschweigend - verbreitet. - Die sprachspezifischen Genehmigungen und Beschränkungen - unter der Lizenz sind dem Lizenztext zu entnehmen. - ---> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>de.ozgcloud.eingang</groupId> - <artifactId>eingang-manager</artifactId> - <version>2.16.0-SNAPSHOT</version> - <relativePath>../</relativePath> - </parent> - - <artifactId>forwarder</artifactId> - <name>Eingangs Adapter - Forwarder</name> - <packaging>jar</packaging> - - <properties> - <spring-boot.build-image.imageName>docker.ozg-sh.de/forwarder:build-latest</spring-boot.build-image.imageName> - </properties> - - <dependencies> - <!-- own projects --> - <dependency> - <groupId>de.ozgcloud.eingang</groupId> - <artifactId>common</artifactId> - </dependency> - <dependency> - <groupId>de.ozgcloud.eingang</groupId> - <artifactId>router</artifactId> - </dependency> - - <!-- spring --> - <dependency> - <groupId>net.devh</groupId> - <artifactId>grpc-server-spring-boot-starter</artifactId> - </dependency> - <dependency> - <groupId>io.grpc</groupId> - <artifactId>grpc-inprocess</artifactId> - </dependency> - - <!-- Tools --> - <dependency> - <groupId>org.apache.commons</groupId> - <artifactId>commons-lang3</artifactId> - </dependency> - - <!-- Dev --> - <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-devtools</artifactId> - <scope>runtime</scope> - </dependency> - <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-configuration-processor</artifactId> - <optional>true</optional> - </dependency> - <dependency> - <groupId>org.projectlombok</groupId> - <artifactId>lombok</artifactId> - </dependency> - - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-maven-plugin</artifactId> - </plugin> - - <plugin> - <groupId>org.jacoco</groupId> - <artifactId>jacoco-maven-plugin</artifactId> - </plugin> - </plugins> - </build> -</project> diff --git a/forwarder/src/main/java/de/ozgcloud/eingang/forwarder/RouteCriteria.java b/forwarder/src/main/java/de/ozgcloud/eingang/forwarder/RouteCriteria.java deleted file mode 100644 index a5d26ad1..00000000 --- a/forwarder/src/main/java/de/ozgcloud/eingang/forwarder/RouteCriteria.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.forwarder; - -import java.util.Optional; - -import lombok.Builder; -import lombok.Getter; - -@Getter -@Builder -public class RouteCriteria { - - private Optional<String> gemeindeSchluessel; - private Optional<String> webserviceUrl; - private Optional<String> organisationseinheitenId; -} diff --git a/forwarder/src/main/java/de/ozgcloud/eingang/forwarder/RouteCriteriaMapper.java b/forwarder/src/main/java/de/ozgcloud/eingang/forwarder/RouteCriteriaMapper.java deleted file mode 100644 index 16bf07f3..00000000 --- a/forwarder/src/main/java/de/ozgcloud/eingang/forwarder/RouteCriteriaMapper.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.forwarder; - -import java.util.Optional; - -import org.apache.commons.lang3.StringUtils; -import org.mapstruct.Mapper; - -import de.ozgcloud.eingang.forwarding.GrpcRouteCriteria; - -@Mapper -interface RouteCriteriaMapper { - - RouteCriteria fromGrpc(GrpcRouteCriteria grpcRouteCriteria); - - default Optional<String> wrapWithOptional(String val) { - return Optional.ofNullable(StringUtils.trimToNull(val)); - } -} diff --git a/forwarder/src/main/java/de/ozgcloud/eingang/forwarder/RouteForwardingGrpcService.java b/forwarder/src/main/java/de/ozgcloud/eingang/forwarder/RouteForwardingGrpcService.java deleted file mode 100644 index 8b0b197d..00000000 --- a/forwarder/src/main/java/de/ozgcloud/eingang/forwarder/RouteForwardingGrpcService.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.forwarder; - -import org.springframework.beans.factory.annotation.Autowired; - -import de.ozgcloud.eingang.forwarding.GrpcRouteForwardingRequest; -import de.ozgcloud.eingang.forwarding.GrpcRouteForwardingResponse; -import de.ozgcloud.eingang.router.GrpcEingangMapper; -import io.grpc.stub.StreamObserver; -import net.devh.boot.grpc.server.service.GrpcService; - -@GrpcService -public class RouteForwardingGrpcService extends RouteForwardingServiceGrpc.RouteForwardingServiceImplBase { - - @Autowired - private RouteForwardingService service; - @Autowired - private RouteCriteriaMapper criteriaMapper; - - @Autowired - private GrpcEingangMapper eingangMapper; - - @Override - public void routeForwarding(GrpcRouteForwardingRequest request, StreamObserver<GrpcRouteForwardingResponse> responseObserver) { - service.route(criteriaMapper.fromGrpc(request.getRouteCriteria()), eingangMapper.toFormData(request.getEingang())); - } -} diff --git a/forwarder/src/main/java/de/ozgcloud/eingang/forwarder/RouteForwardingService.java b/forwarder/src/main/java/de/ozgcloud/eingang/forwarder/RouteForwardingService.java deleted file mode 100644 index feca46f3..00000000 --- a/forwarder/src/main/java/de/ozgcloud/eingang/forwarder/RouteForwardingService.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.forwarder; - -import org.springframework.stereotype.Service; - -import de.ozgcloud.eingang.common.formdata.FormData; - -@Service -class RouteForwardingService { - - public void route(RouteCriteria criteria, FormData formData) { -//FIXME implement me - } -} diff --git a/forwarder/src/test/java/de/ozgcloud/eingang/forwarder/ForwarderApplicationTest.java b/forwarder/src/test/java/de/ozgcloud/eingang/forwarder/ForwarderApplicationTest.java deleted file mode 100644 index b72c4b8f..00000000 --- a/forwarder/src/test/java/de/ozgcloud/eingang/forwarder/ForwarderApplicationTest.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.forwarder; - -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.context.SpringBootTest; - -import de.ozgcloud.eingang.Application; - -@SpringBootTest(classes = Application.class) -class ForwarderApplicationTest { - - @Test - void contextLoads() { // NOSONAR nothing to check - it it starts it is fine - } -} diff --git a/forwarder/src/test/java/de/ozgcloud/eingang/forwarder/GrpcRouteForwardingRequestTestFactory.java b/forwarder/src/test/java/de/ozgcloud/eingang/forwarder/GrpcRouteForwardingRequestTestFactory.java deleted file mode 100644 index 7a62f93b..00000000 --- a/forwarder/src/test/java/de/ozgcloud/eingang/forwarder/GrpcRouteForwardingRequestTestFactory.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.forwarder; - -import de.ozgcloud.eingang.forwarding.GrpcRouteForwardingRequest; - -public class GrpcRouteForwardingRequestTestFactory { - - public static GrpcRouteForwardingRequest create() { - return createBuilder().build(); - } - - public static GrpcRouteForwardingRequest.Builder createBuilder() { - return GrpcRouteForwardingRequest.newBuilder() - .setRouteCriteria(RouteCriteriaTestFactory.createGrpc()); - } -} diff --git a/forwarder/src/test/java/de/ozgcloud/eingang/forwarder/RouteCriteriaTestFactory.java b/forwarder/src/test/java/de/ozgcloud/eingang/forwarder/RouteCriteriaTestFactory.java deleted file mode 100644 index 7175f025..00000000 --- a/forwarder/src/test/java/de/ozgcloud/eingang/forwarder/RouteCriteriaTestFactory.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.forwarder; - -import java.util.Optional; - -import de.ozgcloud.eingang.forwarding.GrpcRouteCriteria; - -public class RouteCriteriaTestFactory { - - public static final String GEMEINDE_SCHLUSSEL = "0815"; - public static final String WEBSERVICE_URL = "http://nimmerland.by.kop-cloud.de/ws"; - public static final String ORGANISATIONSEINHEITEN_ID = "4711"; - - public static RouteCriteria create() { - return createBuilder().build(); - } - - public static RouteCriteria.RouteCriteriaBuilder createBuilder() { - return RouteCriteria.builder() - .gemeindeSchluessel(Optional.of(GEMEINDE_SCHLUSSEL)) - .webserviceUrl(Optional.of(WEBSERVICE_URL)) - .organisationseinheitenId(Optional.of(ORGANISATIONSEINHEITEN_ID)); - } - - public static GrpcRouteCriteria createGrpc() { - return createGrpcBuilder().build(); - } - - public static GrpcRouteCriteria.Builder createGrpcBuilder() { - return GrpcRouteCriteria.newBuilder() - .setGemeindeSchluessel(GEMEINDE_SCHLUSSEL) - .setWebserviceUrl(WEBSERVICE_URL) - .setOrganisationseinheitenId(ORGANISATIONSEINHEITEN_ID); - } -} diff --git a/forwarder/src/test/java/de/ozgcloud/eingang/forwarder/RouteForwardingGrpcServiceTest.java b/forwarder/src/test/java/de/ozgcloud/eingang/forwarder/RouteForwardingGrpcServiceTest.java deleted file mode 100644 index 93958168..00000000 --- a/forwarder/src/test/java/de/ozgcloud/eingang/forwarder/RouteForwardingGrpcServiceTest.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.forwarder; - -import static org.assertj.core.api.Assertions.*; -import static org.mockito.ArgumentMatchers.*; -import static org.mockito.Mockito.*; - -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mapstruct.factory.Mappers; -import org.mockito.ArgumentCaptor; -import org.mockito.Captor; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.Spy; - -import de.ozgcloud.eingang.forwarding.GrpcRouteForwardingResponse; -import de.ozgcloud.eingang.router.GrpcEingangMapper; -import io.grpc.stub.StreamObserver; - -class RouteForwardingGrpcServiceTest { - - @InjectMocks - private RouteForwardingGrpcService service; - - @Mock - private StreamObserver<GrpcRouteForwardingResponse> responseObserver; - - @Mock - private RouteForwardingService routeService; - @Spy - private RouteCriteriaMapper criteriaMapper = Mappers.getMapper(RouteCriteriaMapper.class); - @Spy - private GrpcEingangMapper eingangMapper = Mappers.getMapper(GrpcEingangMapper.class); - - @Nested - class TestRouteForwarding { - - @Captor - private ArgumentCaptor<RouteCriteria> criteriaCaptor; - - @Test - void shouldCallService() { - service.routeForwarding(GrpcRouteForwardingRequestTestFactory.create(), responseObserver); - - verify(routeService).route(any(), any()); - } - - @Test - void shouldHaveRouteCriteria() { - service.routeForwarding(GrpcRouteForwardingRequestTestFactory.create(), responseObserver); - - verify(routeService).route(criteriaCaptor.capture(), any()); - - assertThat(criteriaCaptor.getValue()).usingRecursiveComparison().isEqualTo(RouteCriteriaTestFactory.create()); - } - - @Test - void shouldHaveFormData() { - service.routeForwarding(GrpcRouteForwardingRequestTestFactory.create(), responseObserver); - - verify(routeService).route(any(), notNull()); - verify(eingangMapper).toFormData(any()); - } - } - -} diff --git a/forwarder/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension b/forwarder/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension deleted file mode 100644 index 79b126e6..00000000 --- a/forwarder/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension +++ /dev/null @@ -1 +0,0 @@ -org.mockito.junit.jupiter.MockitoExtension \ No newline at end of file diff --git a/forwarder/src/test/resources/application-itcase.yml b/forwarder/src/test/resources/application-itcase.yml deleted file mode 100644 index 7c31e3bb..00000000 --- a/forwarder/src/test/resources/application-itcase.yml +++ /dev/null @@ -1,3 +0,0 @@ -grpc: - server: - port: 0 \ No newline at end of file diff --git a/forwarder/src/test/resources/application.yml b/forwarder/src/test/resources/application.yml deleted file mode 100644 index 3306e2e6..00000000 --- a/forwarder/src/test/resources/application.yml +++ /dev/null @@ -1,19 +0,0 @@ -spring: - profiles: - active: - - itcase - -logging: - level: - ROOT: ERROR - -grpc: - client: - vorgang-manager-nf: - address: static://127.0.0.1:9090 - negotiationType: PLAINTEXT - -ozgcloud: - adapter: - routingStrategy: SINGLE - targetVorgangManagerName: nf \ No newline at end of file diff --git a/forwarder/src/test/resources/junit-platform.properties b/forwarder/src/test/resources/junit-platform.properties deleted file mode 100644 index 1cebb76d..00000000 --- a/forwarder/src/test/resources/junit-platform.properties +++ /dev/null @@ -1 +0,0 @@ -junit.jupiter.extensions.autodetection.enabled = true \ No newline at end of file diff --git a/intelliform-adapter/README.md b/intelliform-adapter/README.md deleted file mode 100644 index 7e447177..00000000 --- a/intelliform-adapter/README.md +++ /dev/null @@ -1,4 +0,0 @@ -# intelliform-adapter - -Adapter für die Anbindung von IntelliForm - diff --git a/intelliform-adapter/pom.xml b/intelliform-adapter/pom.xml deleted file mode 100644 index b459d13f..00000000 --- a/intelliform-adapter/pom.xml +++ /dev/null @@ -1,257 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - - Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - Ministerpräsidenten des Landes Schleswig-Holstein - Staatskanzlei - Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - - Lizenziert unter der EUPL, Version 1.2 oder - sobald - diese von der Europäischen Kommission genehmigt wurden - - Folgeversionen der EUPL ("Lizenz"); - Sie dürfen dieses Werk ausschließlich gemäß - dieser Lizenz nutzen. - Eine Kopie der Lizenz finden Sie hier: - - https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - - Sofern nicht durch anwendbare Rechtsvorschriften - gefordert oder in schriftlicher Form vereinbart, wird - die unter der Lizenz verbreitete Software "so wie sie - ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - ausdrücklich oder stillschweigend - verbreitet. - Die sprachspezifischen Genehmigungen und Beschränkungen - unter der Lizenz sind dem Lizenztext zu entnehmen. - ---> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> - - <modelVersion>4.0.0</modelVersion> - - <parent> - <groupId>de.ozgcloud.eingang</groupId> - <artifactId>eingang-manager</artifactId> - <version>2.16.0-SNAPSHOT</version> - <relativePath>../</relativePath> - </parent> - - <artifactId>intelliform-adapter</artifactId> - <name>Eingangs Adapter - intelliform</name> - <description>IntelliForm-Adapter </description> - - <properties> - <spring-boot.build-image.imageName>docker.ozg-sh.de/intelliform-adapter:build-latest</spring-boot.build-image.imageName> - </properties> - - - <dependencies> - <!-- own projects --> - <dependency> - <groupId>de.ozgcloud.eingang</groupId> - <artifactId>common</artifactId> - </dependency> - <dependency> - <groupId>de.ozgcloud.eingang</groupId> - <artifactId>router</artifactId> - </dependency> - <dependency> - <groupId>de.ozgcloud.eingang</groupId> - <artifactId>semantik-adapter</artifactId> - </dependency> - - <!-- spring --> - <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-web-services</artifactId> - </dependency> - - <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-actuator</artifactId> - </dependency> - - <dependency> - <groupId>org.jsoup</groupId> - <artifactId>jsoup</artifactId> - </dependency> - - - <!-- tools --> - <!-- commons --> - <dependency> - <groupId>org.apache.commons</groupId> - <artifactId>commons-lang3</artifactId> - </dependency> - - <dependency> - <groupId>org.mapstruct</groupId> - <artifactId>mapstruct</artifactId> - </dependency> - - <!-- Dev --> - <dependency> - <groupId>org.projectlombok</groupId> - <artifactId>lombok</artifactId> - </dependency> - <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-devtools</artifactId> - <scope>runtime</scope> - </dependency> - <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-configuration-processor</artifactId> - <optional>true</optional> - </dependency> - - <!-- tag::springws[] --> - <dependency> - <groupId>wsdl4j</groupId> - <artifactId>wsdl4j</artifactId> - </dependency> - - <dependency> - <groupId>org.apache.ws.xmlschema</groupId> - <artifactId>xmlschema-core</artifactId> - </dependency> - - - <!-- end::springws[] --> - - <!-- Test --> - <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-test</artifactId> - <scope>test</scope> - <exclusions> - <exclusion> - <groupId>org.junit.vintage</groupId> - <artifactId>junit-vintage-engine</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>org.junit.jupiter</groupId> - <artifactId>junit-jupiter-engine</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.junit.jupiter</groupId> - <artifactId>junit-jupiter-params</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.mockito</groupId> - <artifactId>mockito-core</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.mockito</groupId> - <artifactId>mockito-junit-jupiter</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.assertj</groupId> - <artifactId>assertj-core</artifactId> - <scope>test</scope> - </dependency> - - <dependency> - <groupId>org.springframework.ws</groupId> - <artifactId>spring-ws-test</artifactId> - <scope>test</scope> - </dependency> - - <dependency> - <groupId>de.ozgcloud.eingang</groupId> - <artifactId>common</artifactId> - <type>test-jar</type> - <scope>test</scope> - </dependency> - - </dependencies> - - <build> - <finalName>${project.artifactId}</finalName> - <plugins> - <!-- tag::wsdl[] --> - <plugin> - <groupId>com.evolvedbinary.maven.jvnet</groupId> - <artifactId>jaxb30-maven-plugin</artifactId> - <executions> - <execution> - <goals> - <goal>generate</goal> - </goals> - </execution> - </executions> - <configuration> - <strict>false</strict> - <schemaLanguage>WSDL</schemaLanguage> - <generatePackage>de.ozgcloud.eingang.intelliform</generatePackage> - <schemas> - <schema> - <fileset> - <directory>${basedir}/src/main/resources/intelliform</directory> - <includes> - <include>*.wsdl</include> - </includes> - </fileset> - </schema> - </schemas> - </configuration> - </plugin> - <!-- end::wsdl[] --> - - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-compiler-plugin</artifactId> - </plugin> - <plugin> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-maven-plugin</artifactId> - </plugin> - - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-failsafe-plugin</artifactId> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-surefire-plugin</artifactId> - </plugin> - <plugin> - <groupId>org.jacoco</groupId> - <artifactId>jacoco-maven-plugin</artifactId> - </plugin> - <plugin> - <groupId>pl.project13.maven</groupId> - <artifactId>git-commit-id-plugin</artifactId> - </plugin> - </plugins> - </build> - - <profiles> - <profile> - <id>ci-build</id> - <build> - <plugins> - <plugin> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-maven-plugin</artifactId> - <executions> - <execution> - <id>build-image</id> - <phase>install</phase> - <goals> - <goal>build-image-no-fork</goal> - </goals> - </execution> - </executions> - </plugin> - </plugins> - </build> - </profile> - </profiles> - -</project> diff --git a/intelliform-adapter/src/main/java/de/ozgcloud/eingang/WebServiceConfiguration.java b/intelliform-adapter/src/main/java/de/ozgcloud/eingang/WebServiceConfiguration.java deleted file mode 100644 index f5c5c3b2..00000000 --- a/intelliform-adapter/src/main/java/de/ozgcloud/eingang/WebServiceConfiguration.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang; - -import org.springframework.boot.web.servlet.ServletRegistrationBean; -import org.springframework.context.ApplicationContext; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.core.io.ClassPathResource; -import org.springframework.ws.config.annotation.EnableWs; -import org.springframework.ws.config.annotation.WsConfigurerAdapter; -import org.springframework.ws.transport.http.MessageDispatcherServlet; -import org.springframework.ws.wsdl.wsdl11.DefaultWsdl11Definition; -import org.springframework.xml.xsd.SimpleXsdSchema; -import org.springframework.xml.xsd.XsdSchema; - -@EnableWs -@Configuration -public class WebServiceConfiguration extends WsConfigurerAdapter { - - @Bean - public ServletRegistrationBean<MessageDispatcherServlet> messageDispatcherServlet(ApplicationContext applicationContext) { - MessageDispatcherServlet servlet = new MessageDispatcherServlet(); - servlet.setApplicationContext(applicationContext); - servlet.setTransformWsdlLocations(true); - return new ServletRegistrationBean<>(servlet, "/ws/*"); - } - - @Bean(name = "intelliform_formDatas") - public DefaultWsdl11Definition defaultWsdl11Definition(XsdSchema applicationServiceSchema) { - DefaultWsdl11Definition wsdl11Definition = new DefaultWsdl11Definition(); - wsdl11Definition.setPortTypeName("Application"); - wsdl11Definition.setLocationUri("/ws/if"); - wsdl11Definition.setTargetNamespace("http://xmlns.cit.de/intelliform/2009/webservices/backend"); - wsdl11Definition.setSchema(applicationServiceSchema); - return wsdl11Definition; - } - - @Bean - public XsdSchema applicationServiceSchema() { - return new SimpleXsdSchema(new ClassPathResource("intelliform/ApplicationService.xsd")); - } -} diff --git a/intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/DepositDataMapper.java b/intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/DepositDataMapper.java deleted file mode 100644 index f4b42d22..00000000 --- a/intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/DepositDataMapper.java +++ /dev/null @@ -1,188 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.intelliform; - -import static java.util.stream.Collectors.*; - -import java.io.IOException; -import java.util.Collection; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.UUID; -import java.util.stream.Collectors; -import java.util.stream.IntStream; -import java.util.stream.Stream; - -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.ParserConfigurationException; - -import org.springframework.stereotype.Component; -import org.w3c.dom.Document; -import org.w3c.dom.Element; -import org.w3c.dom.NodeList; -import org.xml.sax.SAXException; - -import de.ozgcloud.common.binaryfile.TempFileUtils; -import de.ozgcloud.eingang.common.errorhandling.TechnicalException; -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.IncomingFile; -import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; -import lombok.RequiredArgsConstructor; - -@Component -@RequiredArgsConstructor -class DepositDataMapper { - - // TODO Resolve code duplication (xta-adapter: de.ozgcloud.eingang.xdomea.XMLHelper) - private static final DocumentBuilder DOCUMENT_BUILDER = createDocumentBuilder(); - - private static DocumentBuilder createDocumentBuilder() { - var documentBuilderFactory = DocumentBuilderFactory.newInstance(); - try { - documentBuilderFactory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); - return documentBuilderFactory.newDocumentBuilder(); - } catch (ParserConfigurationException e) { - throw new TechnicalException("Failed to configure document builder", e); - } - } - - public FormData mapToFormData(DepositData depositData) { - var incomingFileMap = mapDepositAttachmentsToSortedIncomingFiles(depositData); - var document = parsePrimaryXmlRepresentation(depositData, incomingFileMap); - var attachmentGroups = findAttachmentGroups(document); - - return mapToFormDataWithRepresentationsAndAttachments( - getRepresentations(incomingFileMap, getAttachmentFileIds(attachmentGroups)), - getAttachmentFileGroups(attachmentGroups, incomingFileMap) - ); - } - - private List<String> getAttachmentFileIds(Map<String, List<String>> attachmentGroups) { - return attachmentGroups.values().stream() - .flatMap(Collection::stream) - .toList(); - } - - private FormData mapToFormDataWithRepresentationsAndAttachments( - List<IncomingFile> representations, - List<IncomingFileGroup> attachments - ) { - return FormData.builder() - .attachments(attachments) - .numberOfAttachments(attachments.size()) - .representations(representations) - .numberOfRepresentations(representations.size()) - .build(); - } - - Map<String, IncomingFile> mapDepositAttachmentsToSortedIncomingFiles(DepositData depositData) { - var incomingFilesMap = mapDepositAttachmentsToIncomingFiles(depositData); - var primaryId = depositData.getPrimaryDataAttachmentId(); - incomingFilesMap.putFirst(primaryId, getIncomingFileById(primaryId, incomingFilesMap)); - return incomingFilesMap; - } - - private LinkedHashMap<String, IncomingFile> mapDepositAttachmentsToIncomingFiles(DepositData depositData) { - return depositData.getAttachments() - .stream() - .collect(Collectors.toMap( - Attachment::getId, - this::mapAttachmentToIncomingFile, - (u, v) -> v, - LinkedHashMap::new)); - } - - IncomingFile mapAttachmentToIncomingFile(Attachment attachment) { - var file = TempFileUtils.writeTmpFile(attachment.content); - return IncomingFile.builder() - .id(UUID.randomUUID().toString()) - .vendorId(attachment.id) - .name(attachment.name) - .contentType(attachment.contentType) - .size(file.length()) - .file(file) - .build(); - } - - private Document parsePrimaryXmlRepresentation(DepositData depositData, Map<String, IncomingFile> incomingFileMap) { - // Expect that the <primaryDataAttachmentId> refers to the XML file - return parseDocument( - getIncomingFileById(depositData.getPrimaryDataAttachmentId(), incomingFileMap) - ); - } - - private static Document parseDocument(IncomingFile incomingFile) { - try (var inputStream = incomingFile.getContentStream()) { - return DOCUMENT_BUILDER.parse(inputStream); - } catch (SAXException | IOException e) { - throw new TechnicalException("Failed to parse xml document!", e); - } - } - - Map<String, List<String>> findAttachmentGroups(Document document) { - return streamElements(document.getElementsByTagName("file")) - .collect(groupingBy( - element -> element.getParentNode().getNodeName(), - mapping( - element -> element.getAttribute("id"), - toList()))); - } - - private List<IncomingFileGroup> getAttachmentFileGroups(Map<String, List<String>> attachmentGroups, Map<String, IncomingFile> incomingFileMap) { - return attachmentGroups.entrySet().stream() - .map(entry -> IncomingFileGroup.builder() - .name(entry.getKey()) - .files(entry.getValue().stream().map(id -> getIncomingFileById(id, incomingFileMap)).toList()) - .build()) - .toList(); - } - - private List<IncomingFile> getRepresentations(Map<String, IncomingFile> incomingFileMap, List<String> attachmentFileIds) { - return getNamesWithout(incomingFileMap.keySet(), attachmentFileIds).stream() - .map(id -> getIncomingFileById(id, incomingFileMap)) - .toList(); - } - - private IncomingFile getIncomingFileById(String id, Map<String, IncomingFile> incomingFileMap) { - if (!incomingFileMap.containsKey(id)) { - throw new TechnicalException("Failed to find <file> attachment ID '%s' in deposit data!".formatted(id)); - } - return incomingFileMap.get(id); - } - - private List<String> getNamesWithout(Collection<String> names, Collection<String> excludedStrings) { - var excludedStringsSet = Set.copyOf(excludedStrings); - return names.stream().filter(name -> !excludedStringsSet.contains(name)).toList(); - } - - private Stream<Element> streamElements(NodeList nodeList) { - return IntStream.range(0, nodeList.getLength()) - .mapToObj(nodeList::item) - .map(Element.class::cast); - } - -} diff --git a/intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/FormDataEndpoint.java b/intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/FormDataEndpoint.java deleted file mode 100644 index 34027676..00000000 --- a/intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/FormDataEndpoint.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.intelliform; - -import java.io.IOException; - -import javax.xml.namespace.QName; -import javax.xml.parsers.ParserConfigurationException; - -import jakarta.xml.bind.JAXBElement; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.ws.server.endpoint.annotation.Endpoint; -import org.springframework.ws.server.endpoint.annotation.PayloadRoot; -import org.springframework.ws.server.endpoint.annotation.RequestPayload; -import org.springframework.ws.server.endpoint.annotation.ResponsePayload; - -import de.ozgcloud.eingang.semantik.SemantikAdapter; -import lombok.extern.log4j.Log4j2; - -@Endpoint -@Log4j2 -public class FormDataEndpoint { - - static final String NAMESPACE_URI = "http://xmlns.cit.de/intelliform/2009/webservices/backend"; - static final String PAYLOAD_LOCAL_PART = "deposit"; - - private static final ObjectFactory objectFactory = new ObjectFactory(); - - private static final QName _DepositResponse_QNAME = new QName(NAMESPACE_URI, "depositResponse"); - private static final QName _PrefillResponse_QNAME = new QName(NAMESPACE_URI, "prefillResponse"); - - - @Autowired - private DepositDataMapper depositDataMapper; - @Autowired - private SemantikAdapter semantikAdapter; - - @PayloadRoot(namespace = NAMESPACE_URI, localPart = PAYLOAD_LOCAL_PART) - @ResponsePayload - public JAXBElement<DepositResponse> inputFormData(@RequestPayload Deposit deposit) - throws IOException, ParserConfigurationException { - try { - var formData = depositDataMapper.mapToFormData(deposit.getData()); - semantikAdapter.processFormData(formData); - } catch (Exception e) { - LOG.error("Error processing form data", e); - throw e; - } - - return new JAXBElement<>(_DepositResponse_QNAME, DepositResponse.class, objectFactory.createDepositResponse()); - } - - @PayloadRoot(namespace = NAMESPACE_URI, localPart = "prefill") - @ResponsePayload - public JAXBElement<PrefillResponse> prefillForm(@RequestPayload Prefill prefillRequest) { - PrefillResponse rsp = objectFactory.createPrefillResponse(); - rsp.setReturn(objectFactory.createPrefillResult()); - rsp.getReturn().setPrimaryDataAttachmentId("OZGCloudTeamId"); - - return new JAXBElement<>(_PrefillResponse_QNAME, PrefillResponse.class, rsp); - } -} diff --git a/intelliform-adapter/src/main/resources/application-dev.yml b/intelliform-adapter/src/main/resources/application-dev.yml deleted file mode 100644 index 69939e05..00000000 --- a/intelliform-adapter/src/main/resources/application-dev.yml +++ /dev/null @@ -1,13 +0,0 @@ -grpc: - client: - vorgang-manager-kiel: - address: vorgang-manager-clusterip.sh-kiel-dev:9090 - negotiationType: PLAINTEXT - -ozgcloud: - adapter: - organisationseinheiten: - 9081994: kiel - 9080859: kiel - fallbackStrategy: FUNDSTELLE - fundstelleVorgangManagerName: kiel \ No newline at end of file diff --git a/intelliform-adapter/src/main/resources/application-local.yml b/intelliform-adapter/src/main/resources/application-local.yml deleted file mode 100644 index 10ee8e73..00000000 --- a/intelliform-adapter/src/main/resources/application-local.yml +++ /dev/null @@ -1,26 +0,0 @@ -logging: - config: classpath:log4j2-local.xml - level: - '[de.ozgcloud]': INFO - - -grpc: - client: - vorgang-manager-local: - address: static://127.0.0.1:9090 - negotiationType: PLAINTEXT - -management: - server: - port: 8082 - -server: - port: 9292 - -ozgcloud: - adapter: - targetVorgangManagerName: local - fallbackStrategy: DENY - routingStrategy: SINGLE - - diff --git a/intelliform-adapter/src/main/resources/application-test.yml b/intelliform-adapter/src/main/resources/application-test.yml deleted file mode 100644 index 6626522d..00000000 --- a/intelliform-adapter/src/main/resources/application-test.yml +++ /dev/null @@ -1,20 +0,0 @@ -grpc: - client: - vorgang-manager-kiel: - address: vorgang-manager-clusterip.sh-kiel-test:9090 - negotiationType: PLAINTEXT - vorgang-manager-sl: - address: vorgang-manager-clusterip.sh-sl-test:9090 - negotiationType: PLAINTEXT - -ozgcloud: - adapter: - organisationseinheiten: - 9081994: kiel - 9080859: kiel - 9535669: sl - 235046657: sl - fallbackStrategy: FUNDSTELLE - fundstelleVorgangManagerName: kiel - - diff --git a/intelliform-adapter/src/main/resources/application.yml b/intelliform-adapter/src/main/resources/application.yml deleted file mode 100644 index 8d7d9cb1..00000000 --- a/intelliform-adapter/src/main/resources/application.yml +++ /dev/null @@ -1,50 +0,0 @@ -logging: - level: - ROOT: WARN - '[de.ozgcloud]': INFO - -server: - port: 9292 - -management: - server: - port: 8081 - health: - livenessState: - enabled: true - readinessState: - enabled: true - endpoint: - health: - group: - exploratory: - include: livenessState,readinessState,ping - show-details: always - probes: - enabled: true - prometheus: - enabled: true - endpoints: - web: - exposure: - include: "*" - -grpc: - client: - vorgang-manager-schleswigflensburg: - address: static://127.0.0.1:9090 - negotiationType: PLAINTEXT - vorgang-manager-kiel: - address: static://127.0.0.1:9090 - negotiationType: PLAINTEXT - vorgang-manager-nf: - address: static://127.0.0.1:9090 - negotiationType: PLAINTEXT - -ozgcloud: - adapter: - routingStrategy: MULTI - organisationseinheiten: - 123: kiel - 234: nf - fallbackStrategy: DENY \ No newline at end of file diff --git a/intelliform-adapter/src/main/resources/banner.txt b/intelliform-adapter/src/main/resources/banner.txt deleted file mode 100644 index bc39bb03..00000000 --- a/intelliform-adapter/src/main/resources/banner.txt +++ /dev/null @@ -1,5 +0,0 @@ - ___ ___ ___ ___ ___ ___ _____ ___ ___ -|_ _|| __| / \| \ / \| _ \|_ _|| __|| _ \ - | | | _| | - || |) || - || _/ | | | _| | / -|___||_| |_|_||___/ |_|_||_| |_| |___||_|_\ -${spring-boot.version} ${application.version} \ No newline at end of file diff --git a/intelliform-adapter/src/main/resources/intelliform/ApplicationService.wsdl b/intelliform-adapter/src/main/resources/intelliform/ApplicationService.wsdl deleted file mode 100644 index 0c2ef5de..00000000 --- a/intelliform-adapter/src/main/resources/intelliform/ApplicationService.wsdl +++ /dev/null @@ -1,67 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://xmlns.cit.de/intelliform/2009/webservices/backend" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://xmlns.cit.de/intelliform/2009/webservices/backend" name="ApplicationService"> - <types> - <xsd:schema> - <xsd:import namespace="http://xmlns.cit.de/intelliform/2009/webservices/backend" schemaLocation="ApplicationService.xsd" /> - </xsd:schema> - </types> - <message name="deposit"> - <part name="parameters" element="tns:deposit" /> - </message> - <message name="depositResponse"> - <part name="parameters" element="tns:depositResponse" /> - </message> - <message name="ApplicationFault"> - <part name="fault" element="tns:ApplicationFault" /> - </message> - <message name="prefill"> - <part name="parameters" element="tns:prefill" /> - </message> - <message name="prefillResponse"> - <part name="parameters" element="tns:prefillResponse" /> - </message> - <portType name="Application"> - <operation name="deposit"> - <input message="tns:deposit" /> - <output message="tns:depositResponse" /> - <fault message="tns:ApplicationFault" name="ApplicationFault" /> - </operation> - <operation name="prefill"> - <input message="tns:prefill" /> - <output message="tns:prefillResponse" /> - <fault message="tns:ApplicationFault" name="ApplicationFault" /> - </operation> - </portType> - <binding name="ApplicationPortBinding" type="tns:Application"> - <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" /> - <operation name="deposit"> - <soap:operation soapAction="" /> - <input> - <soap:body use="literal" /> - </input> - <output> - <soap:body use="literal" /> - </output> - <fault name="ApplicationFault"> - <soap:fault name="ApplicationFault" use="literal" /> - </fault> - </operation> - <operation name="prefill"> - <soap:operation soapAction="" /> - <input> - <soap:body use="literal" /> - </input> - <output> - <soap:body use="literal" /> - </output> - <fault name="ApplicationFault"> - <soap:fault name="ApplicationFault" use="literal" /> - </fault> - </operation> - </binding> - <service name="ApplicationService"> - <port name="ApplicationPort" binding="tns:ApplicationPortBinding"> - <soap:address location="http://localhost:9000/ApplicationService" /> - </port> - </service> -</definitions> \ No newline at end of file diff --git a/intelliform-adapter/src/main/resources/intelliform/ApplicationService.xsd b/intelliform-adapter/src/main/resources/intelliform/ApplicationService.xsd deleted file mode 100644 index cd286752..00000000 --- a/intelliform-adapter/src/main/resources/intelliform/ApplicationService.xsd +++ /dev/null @@ -1,134 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<xs:schema xmlns:tns="http://xmlns.cit.de/intelliform/2009/webservices/backend" xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0" targetNamespace="http://xmlns.cit.de/intelliform/2009/webservices/backend"> - - <xs:element name="ApplicationFault" type="tns:ApplicationFault" /> - - <xs:element name="deposit" type="tns:deposit" /> - - <xs:element name="depositResponse" type="tns:depositResponse" /> - - <xs:element name="prefill" type="tns:prefill" /> - - <xs:element name="prefillResponse" type="tns:prefillResponse" /> - - <xs:complexType name="prefill"> - <xs:sequence> - <xs:element name="data" type="tns:prefillData" minOccurs="0" /> - </xs:sequence> - </xs:complexType> - - <xs:complexType name="prefillData"> - <xs:sequence> - <xs:element name="caller" type="xs:string" minOccurs="0" /> - <xs:element name="client" type="xs:string" minOccurs="0" /> - <xs:element name="clientId" type="xs:string" minOccurs="0" /> - <xs:element name="customParameters" minOccurs="0"> - <xs:complexType> - <xs:sequence> - <xs:element name="entry" type="tns:entry" minOccurs="0" maxOccurs="unbounded" /> - </xs:sequence> - </xs:complexType> - </xs:element> - <xs:element name="customer" type="xs:string" minOccurs="0" /> - <xs:element name="customerId" type="xs:string" minOccurs="0" /> - <xs:element name="form" type="xs:string" minOccurs="0" /> - <xs:element name="formId" type="xs:string" minOccurs="0" /> - <xs:element name="id" type="xs:string" minOccurs="0" /> - <xs:element name="sender" type="xs:string" minOccurs="0" /> - <xs:element name="username" type="xs:string" minOccurs="0" /> - </xs:sequence> - </xs:complexType> - - <xs:complexType name="entry"> - <xs:sequence> - <xs:element name="key" type="xs:string" minOccurs="0" /> - <xs:element name="value" type="xs:string" minOccurs="0" /> - </xs:sequence> - </xs:complexType> - - <xs:complexType name="prefillResponse"> - <xs:sequence> - <xs:element name="return" type="tns:prefillResult" minOccurs="0" /> - </xs:sequence> - </xs:complexType> - - <xs:complexType name="prefillResult"> - <xs:sequence> - <xs:element name="attachments" minOccurs="0"> - <xs:complexType> - <xs:sequence> - <xs:element name="attachment" type="tns:attachment" minOccurs="0" maxOccurs="unbounded" /> - </xs:sequence> - </xs:complexType> - </xs:element> - <xs:element name="customParameters" minOccurs="0"> - <xs:complexType> - <xs:sequence> - <xs:element name="entry" type="tns:entry" minOccurs="0" maxOccurs="unbounded" /> - </xs:sequence> - </xs:complexType> - </xs:element> - <xs:element name="primaryDataAttachmentId" type="xs:string" minOccurs="0" /> - <xs:element name="primaryFormAttachmentId" type="xs:string" minOccurs="0" /> - </xs:sequence> - </xs:complexType> - - <xs:complexType name="attachment"> - <xs:sequence> - <xs:element name="attributes" type="tns:entry" nillable="true" minOccurs="0" maxOccurs="unbounded" /> - <xs:element name="content" type="xs:base64Binary" minOccurs="0" /> - <xs:element name="contentType" type="xs:string" minOccurs="0" /> - <xs:element name="description" type="xs:string" minOccurs="0" /> - <xs:element name="id" type="xs:string" minOccurs="0" /> - <xs:element name="name" type="xs:string" minOccurs="0" /> - </xs:sequence> - </xs:complexType> - - <xs:complexType name="ApplicationFault"> - <xs:sequence> - <xs:element name="customParameters" type="tns:entry" nillable="true" minOccurs="0" maxOccurs="unbounded" /> - <xs:element name="faultId" type="xs:string" minOccurs="0" /> - <xs:element name="message" type="xs:string" minOccurs="0" /> - <xs:element name="userMessage" type="xs:string" minOccurs="0" /> - </xs:sequence> - </xs:complexType> - - <xs:complexType name="deposit"> - <xs:sequence> - <xs:element name="data" type="tns:depositData" minOccurs="0" /> - </xs:sequence> - </xs:complexType> - - <xs:complexType name="depositData"> - <xs:sequence> - <xs:element name="attachments" type="tns:attachment" nillable="true" minOccurs="0" maxOccurs="unbounded" /> - <xs:element name="caller" type="xs:string" minOccurs="0" /> - <xs:element name="client" type="xs:string" minOccurs="0" /> - <xs:element name="clientId" type="xs:string" minOccurs="0" /> - <xs:element name="customParameters" type="tns:entry" nillable="true" minOccurs="0" maxOccurs="unbounded" /> - <xs:element name="customer" type="xs:string" minOccurs="0" /> - <xs:element name="customerId" type="xs:string" minOccurs="0" /> - <xs:element name="form" type="xs:string" minOccurs="0" /> - <xs:element name="formId" type="xs:string" minOccurs="0" /> - <xs:element name="id" type="xs:string" minOccurs="0" /> - <xs:element name="primaryDataAttachmentId" type="xs:string" minOccurs="0" /> - <xs:element name="primaryFormAttachmentId" type="xs:string" minOccurs="0" /> - <xs:element name="sender" type="xs:string" minOccurs="0" /> - <xs:element name="timestamp" type="xs:dateTime" minOccurs="0" /> - <xs:element name="username" type="xs:string" minOccurs="0" /> - </xs:sequence> - </xs:complexType> - - <xs:complexType name="depositResponse"> - <xs:sequence> - <xs:element name="return" type="tns:depositResult" minOccurs="0" /> - </xs:sequence> - </xs:complexType> - - <xs:complexType name="depositResult"> - <xs:sequence> - <xs:element name="attachments" type="tns:attachment" nillable="true" minOccurs="0" maxOccurs="unbounded" /> - <xs:element name="customParameters" type="tns:entry" nillable="true" minOccurs="0" maxOccurs="unbounded" /> - </xs:sequence> - </xs:complexType> -</xs:schema> \ No newline at end of file diff --git a/intelliform-adapter/src/main/resources/logback-spring.xml b/intelliform-adapter/src/main/resources/logback-spring.xml deleted file mode 100644 index ac9706e9..00000000 --- a/intelliform-adapter/src/main/resources/logback-spring.xml +++ /dev/null @@ -1,20 +0,0 @@ -<configuration> - <include resource="org/springframework/boot/logging/logback/defaults.xml"/> - <include resource="org/springframework/boot/logging/logback/console-appender.xml"/> - - <springProfile name="!oc"> - <root> - <appender-ref ref="CONSOLE"/> - </root> - </springProfile> - - <springProfile name="oc"> - <appender name="LOGSTASH" class="ch.qos.logback.core.ConsoleAppender"> - <encoder class="net.logstash.logback.encoder.LogstashEncoder"/> - </appender> - <root> - <appender-ref ref="LOGSTASH"/> - </root> - </springProfile> - -</configuration> diff --git a/intelliform-adapter/src/main/scripts/create-demo-vorgang.sh b/intelliform-adapter/src/main/scripts/create-demo-vorgang.sh deleted file mode 100755 index f7a904da..00000000 --- a/intelliform-adapter/src/main/scripts/create-demo-vorgang.sh +++ /dev/null @@ -1,45 +0,0 @@ -#!/bin/bash -# -# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -set -e -set -x - -# Dev: https://kiel-afm.dev.by.ozg-cloud.de/ws/if -# Test: https://kiel-afm.test.by.ozg-cloud.de/ws/if - -URL=http://localhost:9292/ws/if -if [ -n "$1" ]; then - URL=$1 -fi - -echo "Send request to ${URL} ..." -echo - -SCRIPT_DIR=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) - -for file in ${SCRIPT_DIR}/vorgang-*.xml; -do - curl -v --header "Content-Type: text/xml;charset=UTF-8" --data @$file ${URL}; -done diff --git a/intelliform-adapter/src/main/scripts/vorgang-A12-deutschlandticket.xml b/intelliform-adapter/src/main/scripts/vorgang-A12-deutschlandticket.xml deleted file mode 100644 index 6ffd8154..00000000 --- a/intelliform-adapter/src/main/scripts/vorgang-A12-deutschlandticket.xml +++ /dev/null @@ -1,1379 +0,0 @@ -<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> - <soap:Body> - <ns2:deposit xmlns:ns2="http://xmlns.cit.de/intelliform/2009/webservices/backend"> - <data> - <attachments> - <attributes> - <key>X-IntelliForm-Signed</key> - <value>false</value> - </attributes> - <content>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG15Rm9ybSB4bWxuczpwZGY9 -Imh0dHA6Ly94bWxucy5jaXQuZGUvYXNzaXN0YW50cy9wZGYiIHhtbG5zOnQ9Imh0dHA6Ly94bWxu -cy5jaXQuZGUvaW50ZWxsaWZvcm0vdHJhbnNhY3Rpb24iIHQ6dXVpZD0iYjIyYWFkZTktZWI5OS00 -OTE5LWJmZDItNWIyN2NjZTEwZjdmIiB0OmlkPSIyMDI0MDIwMTUzOTk1MDM4NDQwNyIgdDp0aW1l -c3RhbXA9IjIwMjQtMDItMDFUMTM6NTk6NTUuMDUyWiIgdDpzZW5kZXI9InRlc3QuYWZtLnNjaGxl -c3dpZy1ob2xzdGVpbi5kZSIgdDpmb3JtPSJEZXV0c2NobGFuZHRpY2tldCBFcnN0YXR0dW5nIiB0 -OmZvcm0taWQ9Im1vYl9kdGlja2Vyc3QvbW9iX2R0aWNrZXJzdCIgdDpjdXN0b21lcj0iS3JlaXMg -Tm9yZGZyaWVzbGFuZCIgdDpjdXN0b21lci1pZD0ia3JlaXMtbm9yZGZyaWVzbGFuZC9rcmVpcy1u -b3JkZnJpZXNsYW5kIiB0OmNsaWVudD0iU2NobGVzd2lnLUhvbHN0ZWluIiB0OmNsaWVudC1pZD0i -bGFuZCIgdDpsYW5nPSJkZSI+PERTX2phX25laW4+dHJ1ZTwvRFNfamFfbmVpbj48T3JnYW5pc2F0 -aW9uc2VpbmhlaXRlbklEPjEwMzYzNDU1PC9PcmdhbmlzYXRpb25zZWluaGVpdGVuSUQ+PG5hbWVp -ZD41MjU4MzYyYi04MTg1LTQ1N2ItYTVhNy0wOGQ4NGZkYmNjNmQ8L25hbWVpZD48QW50cmFnc3Rl -bGxlcj48cGVyc192b3JuYW1lPlJpdGE8L3BlcnNfdm9ybmFtZT48cGVyc19uYWNobmFtZT5BYmJh -cmE8L3BlcnNfbmFjaG5hbWU+PHNoX3N0cmFzc2U+QnJhY2tlbjwvc2hfc3RyYXNzZT48c2hfaGF1 -c251bW1lcj41MDwvc2hfaGF1c251bW1lcj48c2hfcGx6PjI1ODczPC9zaF9wbHo+PG9ydD5SYW50 -cnVtPC9vcnQ+PHBlcnNfaWJhbj5ERTcxNTAwMTA1MTc1Mzg2NDc2NzIwPC9wZXJzX2liYW4+PC9B -bnRyYWdzdGVsbGVyPjxkYz50cnVlPC9kYz48c2NodWVsZXJfdm9ybmFtZT5Sb215PC9zY2h1ZWxl -cl92b3JuYW1lPjxzY2h1ZWxlcl9uYWNobmFtZT5BYmJhcmE8L3NjaHVlbGVyX25hY2huYW1lPjxz -Y2h1ZWxlcl9nZWJ1cnRzZGF0dW0+MTk4NS0xMi0xOTwvc2NodWVsZXJfZ2VidXJ0c2RhdHVtPjxz -Y2h1ZWxlcl9zdHJhc3NlPkJyYWNrZW48L3NjaHVlbGVyX3N0cmFzc2U+PHNjaHVlbGVyX2hhdXNu -dW1tZXI+NTA8L3NjaHVlbGVyX2hhdXNudW1tZXI+PHNjaHVlbGVyX3Bsej4yNTg3Mzwvc2NodWVs -ZXJfcGx6PjxzY2h1ZWxlcl9vcnQ+UmFudHJ1bTwvc2NodWVsZXJfb3J0Pjx0aWNrMl92b3JuYW1l -PlJvbXk8L3RpY2syX3Zvcm5hbWU+PHRpY2syX25hY2huYW1lPkFiYmFyYTwvdGljazJfbmFjaG5h -bWU+PHRpY2syX2dlYnVydHNkYXR1bT4xOTg1LTEyLTE5PC90aWNrMl9nZWJ1cnRzZGF0dW0+PHRp -Y2syX3N0cmFzc2U+QnJhY2tlbjwvdGljazJfc3RyYXNzZT48dGljazJfaG51bW1lcj41MDwvdGlj -azJfaG51bW1lcj48dGljazJfcGx6PjI1ODczPC90aWNrMl9wbHo+PHRpY2syX29ydD5SYW50cnVt -PC90aWNrMl9vcnQ+PHNjaHVsX29ydD5IdXN1bTwvc2NodWxfb3J0PjxzY2h1bF9uYW1lPlJ1bmdo -b2x0c2NodWxlIEh1c3VtPC9zY2h1bF9uYW1lPjx0aWNrZXRlcmZhc3N1bmc+PHRpY2tldGVyZmFz -c3VuZy1pdGVtPjx0aWNrZXRtb25hdD4xMjwvdGlja2V0bW9uYXQ+PHRpY2tldGphaHI+MjAyMzwv -dGlja2V0amFocj48dGlja2V0Zm90bz48ZmlsZSBjb250ZW50LXR5cGU9ImFwcGxpY2F0aW9uL3Bk -ZiIgZGVzY3JpcHRpb249IiIgaWQ9ImFzc2lzdGFudHMuODFDMDcyNTUxQTdFNTU2M0YxRUVFNDZB -Q0ExMDcwRDE1MEQ5RTFCMCIgbGVuZ3RoPSIxODk4OSI+ZG9taW5pb25fc21hbGwucGRmPC9maWxl -PjwvdGlja2V0Zm90bz48L3RpY2tldGVyZmFzc3VuZy1pdGVtPjx0aWNrZXRlcmZhc3N1bmctaXRl -bT48dGlja2V0bW9uYXQ+MTwvdGlja2V0bW9uYXQ+PHRpY2tldGphaHI+MjAyNDwvdGlja2V0amFo -cj48dGlja2V0Zm90bz48ZmlsZSBjb250ZW50LXR5cGU9ImFwcGxpY2F0aW9uL3BkZiIgZGVzY3Jp -cHRpb249IiIgaWQ9ImFzc2lzdGFudHMuMkJCNkExQzMzN0QyOEY2MkQ5RkZFMUY1NTBCRDM5Mjcw -M0JEM0M4OCIgbGVuZ3RoPSIxODk4OSI+ZG9taW5pb25fc21hbGwgKDEpLnBkZjwvZmlsZT48L3Rp -Y2tldGZvdG8+PC90aWNrZXRlcmZhc3N1bmctaXRlbT48L3RpY2tldGVyZmFzc3VuZz48L215Rm9y -bT4= - - - -</content> - <contentType>text/xml</contentType> - <id>myForm-xml</id> - <name>XML-Daten.xml</name> - </attachments> - <attachments> - <attributes> - <key>X-IntelliForm-Signed</key> - <value>false</value> - </attributes> - <content>JVBERi0xLjYNCiXi48/TDQolQ3JlYXRlZCBieSBjaXQgcGRmc3VpdGUgKHd3dy5jaXQuZGUpIGJ1 -aWxkIDk4MTQNCjEgMCBvYmoKPDwNCi9Hcm91cCA8PA0KL1MgL1RyYW5zcGFyZW5jeQ0KL0kgdHJ1 -ZQ0KL0NTIC9EZXZpY2VSR0INCj4+DQovQ29udGVudHMgMiAwIFINCi9UeXBlIC9QYWdlDQovUmVz -b3VyY2VzIDI1IDAgUg0KL1BhcmVudCA4IDAgUg0KL01lZGlhQm94IFsgMCAwIDU5NS4yNDcyNCA4 -NDEuODYxNDEgXQ0KPj4KZW5kb2JqCjIgMCBvYmoKPDwNCi9GaWx0ZXIgL0ZsYXRlRGVjb2RlDQov -TGVuZ3RoIDMgMCBSDQo+PnN0cmVhbQ0KeJzNWUuP3DYMvs+v0DnAOCL1sAQMDIznUbS3tAvkUPTU -Ni2KbIvNJX+/oijJdkbS7AZotljElmTx9ZEixYkcQHzePQkp5CDRCePNgOCE0zA4pcSn33fv34i/ -dyDo79MfO2MHa4T14QUgHndGucEsCx9FXnByMLzAFF/OM8Huz92HN6xB+AsS5gcS4sQ46sFZEA+/ -ibfXID2MPvx8kDDhQeK0D081wUHqSR+kmfbuIC0Nx2kfno4+8S4/QRgf4zKvRJJIzHQzzU80P9PD -T788/LC7POzeVdWyOMCtWpfCM8gggVGZKy2sORetaBFkX5L2g7mRBFDomRXg5IkV2WfSGycrD6Di -2NITdF+UshWswZCSlh4jPdy0Hw8QjWCmx2AjzBHI+IJTXwrAYhCuPBo1BsKP3bOPrmExI7lUp7lj -FGkX+/k4FYJ54WB4aPM8RcOW4eIWopdp9VLctuJ3TmCPSSzIyJJcAUwXnKDTPrfQRUxURE3T0LCT -ijanrCcwnipDzZwUR9LYBdV6N/hbUCNI4LJ5WXEf8GIxmj1atEpIdEU5NeiVKM1RciT+gd9eEQNF -opQmt7oImlr8GoaGXBD3ENHMQo2i0GEtAxhnuIR/V7ikCUoERCSgUCGEBUQNV/oaNqHpK61XaaTg -g3bjfXYVjtkzjMnaK5r35+hhf5tGiGyia86LcCfUb2MuqbFxUFHWxVUShn5KXNZh9mXQz1kjDltG -IIYJHldbK7DMfYAVDnibO86TGTd5+JwjnlydsndwcUlRC25lQ0MshBQ8tuReE8cAC+dCyvYpLZ7Y -RCMPSGUEyWRcTmLOzF1rpV2OW5EaYhMPJffm/Iya3bm1M2ZNtpNTZ44dE5NF3+aq9LXNZimPUQUL -yGWJY9emuI7B3rPTeF1BNwRdTqe51Mxc+Ij5gjR6ln7koNYbAHCeMkztCsj21rVY2bspUUEHjLgu -JSrEwPowrl30nIplrKt5+xxZE9QxjtoZOllR5bKyQkZ08EIMTyUvJy+RVWNe5JEt01MsLjYbzXWa -wg6vy2fNQ2C07jlewSD/F/ky6uzbtRHTJ9ZA5xyI55fnMANuUK+Qwxpyb3KYKxyVpATmtwmMAHt2 -BjPSDOONTAVRkMoZkXNTPqTx2sLX11M5RrSld4KSiVVx6yNMxilMVyVdLiWbOX9Pwd+zTnu1hO83 -z8916f9Fftahn9Kvnp/rWny7/KyNqTRj0dtoo3Uwp8uPvnsY68xuDiOUi5RSBUNXpOTTssiHjRMi -KpXGaWkaNbcStc3Urt7BJdmiseKYlKSiFFsuRytZsn+4lFG1XoOasFUqvrlEnjkGtrVhVQZia3I3 -2T8njyt0g80KqlWHGVhTVOnyo8Gqw8TUjeTuEsgi6GMxtkSFcAsVVNFgRQ2RGsSG8tfHnRys+Jx4 -//jdToq9HLx4DE1L+BDHH8VPty5GGFRHAcT2S8EzX63wuid7HMeG8VvSjvWKUGpbb9wAX+VpS5mG -fzXIkXVp2mma0RSs1KB9y8oVYcdGAyFcmzai9N0Q06/65PB+8auB9D1bR29bEbUl7aAdynIHbSVV -oPvKiLouvzDZNGwYSmJMz6kodcPQLWkvrELabxvKORJMrRtJt67mcfAEUZ3UlMbEcHVvAmDo5FaZ -cN5d7rm5MkEacYGNVZcdkLadSnmNxTfeGJVZJfJuuQiwVq7fz4KiTvpCKKpMXgUKKyu/NS+WKL6t -lT6U51+YG3rOFmYAISSrMta3kfxs1h4dQKtyWTpmvq9FpVizZd5pHVCFc1PhTIwf/qqT+HAkayQB -mwaJwhA5d6S8E0/x9mbEKDF2Ts4IBwN6X/435imsDdJE1uGTMnzfYxIHMUO8/f5Ri/M/gjj+C3bw -j/oNCmVuZHN0cmVhbQplbmRvYmoKMyAwIG9iagoxNDAzCmVuZG9iago0IDAgb2JqCjw8DQovQ29s -b3JTcGFjZSBbIC9JbmRleGVkIC9EZXZpY2VSR0IgODMgPDAwMzQ5NDAwMzg5NjAwM2U5YTAwNDI5 -YzA1NDg5ZTBkNDc5ZTA4NDg5ZjA2NDlhMDBjNGRhMTBmNTBhMzEwNGVhMjExNTBhMzE5NTZhNjFi -NThhNzFkNTlhODIyNWRhYTI4NWVhYjI2NjBhYjJiNjNhZDMwNjZhZjMxNjhhZjMyNjdiMDM0NmFi -MTM5NmRiMjNkNzBiNDQyNzRiNjQ1NzdiODQ2NzhiODQ4NzdiNzQ4NzdiODRiN2FiOTUwN2ViYjU0 -ODFiZDU5ODRiZTViODZjMDVkODhjMDYzOGNjMjY4OGZjNDY3OTBjNDZiOTJjNjZmOTZjODcwOTVj -NzcxOTZjODc1OTljOTc5OWRjYjdkYTBjZDgxYTNjZTg1YTVkMDg3YThkMTg4YTdkMThjYWFkMjkx -YWVkNDk1YjFkNTk4YjNkNzliYjVkODllYjhkOWEzYmJkYmE4YmZkZGFiYzFkZWFlYzRlMGIyYzZl -MWI1YzhlMmJhY2NlNGJmZDBlNmMxZDFlNmM1ZDRlOGM4ZDZlOWNjZDllYmQxZGRlZGQ1ZTBlZWQ4 -ZTFlZmQ3ZTJmMGRiZTRmMWRmZThmMmUwZTdmMmUyZWFmM2U4ZWVmNmViZjBmNmVlZjJmOGYyZjVm -OWY2ZjhmYmZkZmVmZTAwMDAwMGZmZmZmZj4gXQ0KL1N1YnR5cGUgL0ltYWdlDQovSGVpZ2h0IDMz -OA0KL0ZpbHRlciAvRmxhdGVEZWNvZGUNCi9UeXBlIC9YT2JqZWN0DQovV2lkdGggMzQyDQovU01h -c2sgNiAwIFINCi9CaXRzUGVyQ29tcG9uZW50IDgNCi9MZW5ndGggNSAwIFINCj4+c3RyZWFtDQp4 -nO19bVcbubJ1aN1utWSMubCIgWcBCZcs5hACi5BwICEEjkkOC8bY+v9/5lGV3qqkNiEzSciHaSfG -bnerpa1dpSq9lO7u/jl+6HFv7NHrqX9eP/AldgHVtm3lP/9/2P+2Cqj+c/zA4x9Uf8Yh/kH1Jxz/ -cPVnHP+g+jOOfzTATzhU9QdBVcl/Xj/kRVGVqlbwX4UP//z/a/+V1atTylWEupbuUxNO/K6f2/T9 -MXmGO35J2Whr5dgbf+J/frfP8EdIewBM8PaoPNs71M/PX6ZXa4tp+B3I3ODr9/wsxdLKkmptGUDm -HpNnJXY/b8g2UKdxyfz4zzXTAJHHSjZBYqRiH4M6fvLzrZRvJ8bc3t3d3Nz8+VGC9qofvlequbdm -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 -T3gw0a5Wm1OT62la+bLkxOwXy3bvAd+KaN/HpNwFGxe3PI3CA6OXp4qlsol/U4i/DAh2ZwJKslQY -oTNweUbIj0wT0WynuqX4P+RbyTLXivTNuw86fOi4uviSpcApmsjEM8x0pKRbIOctUgcq5ATX10zj -NOmR9AdCfpIifZNZcv7jTN8qvXQK/UW5m78XGWWi1Xl7k3tgCR9J/+SaiwZALm/k1xaPpqZQB4Il -UpwtuUbJeOrOFHtcJlLFeyIzdJfk+4BqNKJxV4FY7nSe6RRXjuSw4XdE2UiBJUNCHNimSEunhEht -0qsUa/kJQdMQXzK7eRUxmYwe6wzfKvyPYfEiSRhALEggk4MOaykkKJXOqp2FQqSSHeiuQ1FigDcW -66+DsfSUlhzsmI8uqqd7yIUdtgqpMeXwCb84vfr/Adje284NCmVuZHN0cmVhbQplbmRvYmoKNSAw -IG9iagoyNDMxOAplbmRvYmoKNiAwIG9iago8PA0KL0NvbG9yU3BhY2UgL0RldmljZUdyYXkNCi9E -ZWNvZGUgWyAxIDAgXQ0KL1N1YnR5cGUgL0ltYWdlDQovSGVpZ2h0IDMzOA0KL0ZpbHRlciAvRmxh -dGVEZWNvZGUNCi9UeXBlIC9YT2JqZWN0DQovV2lkdGggMzQyDQovQml0c1BlckNvbXBvbmVudCA4 -DQovTGVuZ3RoIDcgMCBSDQo+PnN0cmVhbQ0KeJzt0sEJAkEQAMEVD8xTxLwvABNQcPwYwvavKoSm -z5OtXvOdOdjpdjznM7PY6bLu81Z1s+t6eHU7VQuqFlQtqFpQtaBqQdWCqgVVC6oWVC2oWlC1oGpB -1YKqBVULqhZULahaULWgakHVgqoFVQuqFlQtqFpQtaBqQdWCqgVVC6oWVC2oWlC1oGpB1YKqBVUL -qhZULahaULWgakHVgqoFVQuqFlQtqFpQtaBqQdWCqgVVC6oWVC2oWlC1oGpB1YKqBVULqhZULaha -ULWgakHVgqoFVQuqFlQtqFpQtaBqQdWCqgVVC6oWVC2oWlC1oGpB1YKqBVULqhZULahaULWgakHV -gqoFVQuqFlQtqFpQtaBqQdWCqgVVC6oWVC2oWlC1oGpB1YKqBVULqhZULahaULWgakHVgqoFVQuq -FlQtqFpQtaBqQdWCqgVVC6oWVC2oWlC1oGpB1YKqBVULqhZULahaULWgakHVgqoFVQuqFlQtqFpQ -taBqQdWCqgVVC6oWVC2oWlC1oGpB1YKqBVULqhZULahaULWgakHVgqoFVQuqFlQtqFpQtaBqQdWC -qgVVC6oWVC2oWlC1oGpB1YKqBVULqhZULahaULWgakHVgqoFVQuqFlQtqFpQtaBqQdWCqgVVC6oW -VC2oWlC1oGpB1YKqBVULqhZULahaULWgakHVgqoFVQuqFlQtqFpQtaBqQdWCqgVVC6oWVC2oWlC1 -oGpB1YKqBVULqhZULahaULWgakHVgqoFVQuqFlQtqFpQtaBqQdWCqgVVC6oWVC2oWlC1oGpB1YKq -BVULqhZULahaULWgakHVgqoFVQuqFlQtqFpQtaBqQdWCqgVVC6oWVC2oWlC1oGpB1YKqBVULqhZU -LahaULWgakHVgqoFVQuqFlQtqFpQtaBqQdWCqgVVC6oWVC2oWlC1oGpB1YKqBVULqhZULahaULWg -akHVgqoFVQuqFlQtqFpQtaBqQdWCqgVVC6oWVC2oWlC1oGpB1YKqBVULqhZULahaULXwr/oDLdXz -xA0KZW5kc3RyZWFtCmVuZG9iago3IDAgb2JqCjc3MgplbmRvYmoKOCAwIG9iago8PA0KL0tpZHMg -WyAxIDAgUiBdDQovVHlwZSAvUGFnZXMNCi9Db3VudCAxDQovUmVzb3VyY2VzIDI1IDAgUg0KL01l -ZGlhQm94IFsgMCAwIDU5NSA4NDEgXQ0KPj4KZW5kb2JqCjkgMCBvYmoKPDwNCi9MZW5ndGgxIDE3 -MzAwDQovRmlsdGVyIC9GbGF0ZURlY29kZQ0KL0xlbmd0aCAxMCAwIFINCj4+c3RyZWFtDQp4nN17 -e3yTVdLwmeeSe5p7G5pCnjRtAVPa0rRgAWm4tBYBCZRCA0IbeqFVaGMTQFCh3LQUkaqIi6CgogKi -pFAFvFGv642V3fWyu75Kve276w2WxfUCTd95zvMkFGTd7/d+319fSp7MmTNnzpyZOXNmTkKkZUkd -0ZFWwhJfzeJg6M6mYBsh5B1CwFyzNCKwk9/PQriHEKatPrRw8f2HrztLCNdAiLJr4aLl9cfypnxF -iC6NkKzTDXXB2oo5y7MJ8eqQx4gGRNwWW6PE9kRsZzQsjtz0rA3+jG0cT/5rUXNNsJH/5BQhBWJ/ -aHHwplADO43Bdhe2habg4rqFhpsHYPs9QrRzQ83hyFbS3UeIL0/sD7XUhe6YdOgItv2EsBMQB/gn -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 -OP9ReoXzdKnHWXVq1SnGcGraqapTm08dOMVrv/xikPPzz0qdhs/A91lpsvPTnlLnuz0ne071sL4e -74jSnlK787tv+5zfwt8qvin7uuKrfFLx97/9reK/y0jFX0mf8+OrTlacBLbik6vYiv9i+5yG953v -M/The8vuKH33ZXihe4zzJX+W8/kXhzj7joL/SOhI6xH2SF+3r++IOb/Uebj48LTDzYdXHd55+MBh -pf0ZCB3cdTB6kDUchI6nIfo0GJ4GleFQ8aFTh9jWaEeUiUa7oyeibO6B4gPMriejTzLdT554ksnd -X7yf2fkEdO87sY+ZtnfzXiZ3b/PeY3v79nI7tmc4/duheSsc2wpbSwc6792S4jRscW5ZtWXzlr4t -fN5dvruY1rsgtLl1M9OxGbo3n9jMTLuj6o7mO9jbSvucO9fDurXDnZFwsTOMC2luGuNsKi10poK9 -YoDXXqH0shUKXHo19lXh+7rS4c65c8qcc/DTkm+u4FE9XD5bsYgFHTuGncIuYm9h+VPT+3y10xnf -9MIrS33TM4eUvuuHSaWCsww5X43vA6VwsvRUKdNaCsn5tgoTGCqM+YYKBtD+BJxOQ7GhyrDKwBkM -uYZphmbDZsNJQ59BWYy4Uwa2mcA0Aq3JwMMR6OicWe7xTD6i7JsxOar0z41CWzSzXHz6ps+JKtqi -pGLO3MpOgDsD6zdtIuMHTo7ml1dGqwcGJkdrEfCJQCsCxoGdyWR8IBwJR5Z4xBdIAIl4POGwCIHY -8kh9FAJPGLuRDAdhI7KEhD3hCITDuFkiiA/DfITDGGoQH8aKEImQROaf4IQTzEdG+IhIU4TDOC6M -fMLydPb55H8Ai6DrtA0KZW5kc3RyZWFtCmVuZG9iagoxMCAwIG9iagoxMDk2MQplbmRvYmoKMTEg -MCBvYmoKPDwNCi9EZXNjZW50IDANCi9DYXBIZWlnaHQgOTc5DQovU3RlbVYgODANCi9UeXBlIC9G -b250RGVzY3JpcHRvcg0KL0ZvbnRGaWxlMiA5IDAgUg0KL0ZsYWdzIDQNCi9Gb250TmFtZSAvQkFB -QUFBK0xpYmVyYXRpb25TYW5zDQovRm9udEJCb3ggWyAtNTQzIC0zMDMgMTMwMCA5NzkgXQ0KL0l0 -YWxpY0FuZ2xlIDANCi9Bc2NlbnQgMA0KPj4KZW5kb2JqCjEyIDAgb2JqCjw8DQovRmlsdGVyIC9G -bGF0ZURlY29kZQ0KL0xlbmd0aCA0NjANCj4+c3RyZWFtDQp4nF2Ty27bMBBF9/oKLtNFIJHUIwEM -AY4dA16kDer0A2SJdgXUlEDLC/99eOcyLdCFjUNyZnhIDfPNfrv345K/h6k/uEWdRj8Ed51uoXfq -6M6jz7RRw9gvaST//aWbszzmHu7XxV32/jStVln+M65dl3BXD+thOrpvWf4jDC6M/qwefm0OcXy4 -zfMfd3F+UUXWtmpwp1jnrZu/dxeXS9bjfojL43J/jCn/Aj7us1NGxpoq/TS469z1LnT+7LJVUbRq -tdu1mfPDf2tVyZTjqf/dhRiqY2hRlC9tZCPcGLAVritwSX4GV4yx4FrYFOCGdV7BT4zfgZ/JJXhN -rsEv5A14Q9bgLVnqvLKm5O7IiNcFHTCvk/8WTP8aZ9H0N6ij6W+xr6a/xRk1/S3OqOlvn8D0t/DR -9Lc4r6Z/KTH0byQ3+YsD/SvZi/5GnOlv15EN/Ss4mOSPvUzyl3n6V9jX0H+L+zT0LyWG/rXEJH98 -C0P/Spj+jeyb7h/+hv6l1KS/bcD0L/GtTbp/nNEkf9y5TfePGJv8kWvpb2U+9Y/M07/CXjb1D9xs -6h82aupItCze1NdTUP0thPgM5OFJ/6PzR+/+vs15mpElv0+6fem/DQplbmRzdHJlYW0KZW5kb2Jq -CjEzIDAgb2JqCjw8DQovU3VidHlwZSAvVHJ1ZVR5cGUNCi9GaXJzdENoYXIgMA0KL1R5cGUgL0Zv -bnQNCi9CYXNlRm9udCAvQkFBQUFBK0xpYmVyYXRpb25TYW5zDQovRm9udERlc2NyaXB0b3IgMTEg -MCBSDQovVG9Vbmljb2RlIDEyIDAgUg0KL0xhc3RDaGFyIDU0DQovV2lkdGhzIFsgNzUwIDY2NiAz -MzMgNTU2IDIyMiA1MDAgMjc3IDcyMiA1NTYgNTU2IDI3NyAyMjIgNTU2IDU1NiA3MjIgNTU2DQoy -NzcgODMzIDUwMCAyNzcgNTU2IDU1NiA1NTYgNTU2IDU1NiA1NTYgNzIyIDU1NiA4MzMgNjY2IDI3 -NyAyNzcNCjcyMiA2NjYgNTU2IDY2NiA2MTAgNjY2IDUwMCA1NTYgNjY2IDUwMCA1NTYgNzc3IDU1 -NiAyNzcgNjY2IDU1Ng0KNTAwIDc3NyA1NTYgNTU2IDU1NiA1NTYgMjc3IF0NCj4+CmVuZG9iagox -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 -F15b+hr3GuF7fWsNpATdWPAq4inhyU8/S0okV+m81lf5adfzz027lj5Hnm6zuZ4MRF1P9E27Tp4o -diW/T5zMzik5ifg9YnlMfEx6jO87kToxfoI3H9t+jJvkV7lOkiJp+kitS3542uU73ng8cJz/ynEi -Ha+obHUd9R1tPHrvUcF8lEhHTcWt9x4h30W1Rx6+2PVwV4XrnsOLXXcfLnd9A0843HeYGz989jB3 -b8e0y3y763bOfIPrBu62QxWuW2+pcH3lpgrXzXiaD7oOctsPJg/uPzh9UAgcJNLBwpJW803kurZa -173XkmuGp13jOKkx9D+KZxbPDJ6+PY17Anv4XUmXK9VmdiXbFrjKiKO3tM7Rq6vje7Vo8tAwqRwm -Q0iF0aBve61rO94jbfNcpf3v9nNiv83eWtlf39/ez1/R5nRt2zLt2rqlzrWlrVbqdhURW29hra1X -g5ALtXxvkidmvpEP8El+P6+5M0QO7SCBnu09nNSzpLpV6lmwEC+Fjtad3Vd139jNbwjMc3XhWRqo -DHChQCLAnSTFxzHJ0SeJHa4jdmkt13UZuW+9vP7Z9fz6tiJXJ863A89L21yu6XbSjpNahyy0kXnO -cVdxrb3XSsy9llpzL0ewswCLSqzHnKV4s0g1eHeZG83bzfvNgtnsMwfMSfNXzK+bp826RpT92cwn -gQSAjBcTDTlJDk1u7Kmq6jipm+7ukHVdW2RyQC7voVdpw2ZZe0CG3s1bgpOE3By67uBBaJrfIdf2 -BOW++aEOOYqERIlxJCzzJ4uhKZTJZrKjVepBslVV2SpAKpvJVGWQyyCdyRDcEJkSYYMZVKpiA4oM -hRnVQaYKqOGoOkxdKApZSjMWvaE7ZkuqsszfKLVnalWEjdED1TJQNedQYzj+G9uWtogNCmVuZHN0 -cmVhbQplbmRvYmoKMTUgMCBvYmoKNjA3NAplbmRvYmoKMTYgMCBvYmoKPDwNCi9EZXNjZW50IDAN -Ci9DYXBIZWlnaHQgMTAyOQ0KL1N0ZW1WIDgwDQovVHlwZSAvRm9udERlc2NyaXB0b3INCi9Gb250 -RmlsZTIgMTQgMCBSDQovRmxhZ3MgNjgNCi9Gb250TmFtZSAvREFBQUFBK0xpYmVyYXRpb25TYW5z -LUJvbGRJdGFsaWMNCi9Gb250QkJveCBbIC00NzcgLTM3NiAxMzU2IDEwMjkgXQ0KL0l0YWxpY0Fu -Z2xlIC0zMA0KL0FzY2VudCAwDQo+PgplbmRvYmoKMTcgMCBvYmoKPDwNCi9GaWx0ZXIgL0ZsYXRl -RGVjb2RlDQovTGVuZ3RoIDI5MA0KPj5zdHJlYW0NCnicXdFLb4MwDADge35Fjt2h4tFCWwkh9YXE -YQ+N7gdAYrpII0QhHPj3i+Nuk3YAfbbjKHGic32ptXLRmx1FA473SksL0zhbAbyDu9IsSblUwj2i -8BdDa1jke5tlcjDUuh+LgkXvvjY5u/DVUY4dPLHo1UqwSt/56uPc+LiZjfmCAbTjMStLLqH3+zy3 -5qUdIApd61r6snLL2rf8LbgtBnga4oSOIkYJk2kF2FbfgRVxXPKiqkoGWv6rJRm1dL34bK1fmvil -cZxtS+80OD+gN+QNeks+oTNyhs6Dd6F3R/kLek+u0AfyFX0kJ+hTcBqjz5Q/oi/kPfpK+6foivJ5 -uNTj9Hg9nP/P2LiYrfUjC48UZoVTUhp+39GMBrvC9w0F8I6QDQplbmRzdHJlYW0KZW5kb2JqCjE4 -IDAgb2JqCjw8DQovU3VidHlwZSAvVHJ1ZVR5cGUNCi9GaXJzdENoYXIgMA0KL1R5cGUgL0ZvbnQN -Ci9CYXNlRm9udCAvREFBQUFBK0xpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMNCi9Gb250RGVzY3Jp -cHRvciAxNiAwIFINCi9Ub1VuaWNvZGUgMTcgMCBSDQovTGFzdENoYXIgMTUNCi9XaWR0aHMgWyA3 -NTAgNjEwIDI3NyA1NTYgNTU2IDU1NiAzMzMgODg5IDYxMCA2MTAgNTU2IDI3NyAyNzcgNjEwIDM4 -OSAzMzMNCl0NCj4+CmVuZG9iagoxOSAwIG9iago8PA0KL0xlbmd0aDEgMTUzNjANCi9GaWx0ZXIg -L0ZsYXRlRGVjb2RlDQovTGVuZ3RoIDIwIDAgUg0KPj5zdHJlYW0NCnic3Xp7fFTVtfBe5zHvZOZM -5pFkkswZhrzMYyAPXgI5QBKCoHkRzfBKhmRCgklmzExArEqobZEghlZtbbHA7fXzWqsw+CK+8Vr1 -9gotVC21XAutWPtQoS3YFsjJXXvPTAhU7e/3/b6/vpPsc/ZjrbXXXq+99jkTHRgMEhMZIjxROvoC -4VIz/zdCyGFCwNqxISrvW++vwvopQri7u8Lr+r53cNU5QoRuQrRPr+vd1LV4XdmnhJiyCMkp7g4G -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 -ZPPIyIh47z157vodYL4HlHuM5lrzNvc27htfN7vbvg4zvlr7VW4Dzj2IJYolgqUwDK4w8GE4F4Zf -hH8X5rrD4A/D6PhZ5Y4wijPUX+fury1zZ0J6S0Z5eou2nG/RoF4CiNveVuZuw+eaFXXuVbX57pUr -bnWvqJ3uTiuztoioXaGMbwnxYOar+Ho+xG/mxbZmUJoLimuV5pwpeEtLr7256StN25v4xvosdwOW -jPrCes5f31PPjYJVKanNdS+pzXDX1Xrci3HRf69FIUBWnavFUWZvkcDcYikzt3CAFkvG3aMgPenS -48OilODTba4yt5k3mwWz2WeuN4fMI+aT5nGztgr7zpj5EIF6AkMOEGEUdh5Y3lxUtHRUO960NKZt -WBmDu2O5zfSuNK6Iae6OkZYVK1sPANzr//qOHWRh9tJYWXNrrD3bvzTWiRWFVoawYsk+4CAL/ZFo -JDpYlLggEqUPQh8RrEQidAho1wQI645EotEoiaNEiiKkiN5xAPBOIgwQYSgwpZX4B3ondDo2DTDI -SJQCMeRBemct2ksJsQtniExMzyjHH+n/C94y3Q8NCmVuZHN0cmVhbQplbmRvYmoKMjAgMCBvYmoK -OTczNgplbmRvYmoKMjEgMCBvYmoKPDwNCi9EZXNjZW50IDANCi9DYXBIZWlnaHQgMTAzMw0KL1N0 -ZW1WIDgwDQovVHlwZSAvRm9udERlc2NyaXB0b3INCi9Gb250RmlsZTIgMTkgMCBSDQovRmxhZ3Mg -NA0KL0ZvbnROYW1lIC9DQUFBQUErTGliZXJhdGlvblNhbnMtQm9sZA0KL0ZvbnRCQm94IFsgLTQ4 -MSAtMzc2IDEzMDMgMTAzMyBdDQovSXRhbGljQW5nbGUgMA0KL0FzY2VudCAwDQo+PgplbmRvYmoK -MjIgMCBvYmoKPDwNCi9GaWx0ZXIgL0ZsYXRlRGVjb2RlDQovTGVuZ3RoIDQyOA0KPj5zdHJlYW0N -CnicXZPBbqMwEIbvPIWP3UMFHgNpJYSUJkHKYdtq030AApMUqTHIIYe8/Xrmp7vSHhJ9Nv/YH6Mh -3ey3ez/M6XsYuwPP5jT4PvB1vIWOzZHPg08smX7o5mWl/92lnZI01h7u15kve38aqypJf8Vn1znc -zcO6H4/8I0nfQs9h8Gfz8HtziOvDbZq++MJ+NllS16bnUzznZzu9thdOtepx38fHw3x/jCX/Ah/3 -iQ3p2kKlG3u+Tm3HofVnTqosq03VNHXCvv/vWV6g5HjqPtsQozZGsyy3dWRSLnfCTnmVC+dgEi6Q -0XwJXgmvlCkTfkK+EH5GphRe4y7df0HGCW+Q0bu2YM3skH8RbrAfX6qyGWrXwvAvt8Lwz+UcC/9S -zrfwL5+EF/+N8OL/LAz/Uu6y8G80A/9Cz1n8NQ//XHpl4U/K8HfSKwt/Jz2x8HfiRvB30kOCv5P3 -Jfg7uYvg7+Qugr8Tf4K/k54T/FdyPsG/kT4T/El6RYu/9Irgv1MH+Dvdh3+h+0v/SYdnmRIZI5nz -7/E03S2EOJr6MehMyjQOnv9+L9M4SZX+/gBXmNTFDQplbmRzdHJlYW0KZW5kb2JqCjIzIDAgb2Jq -Cjw8DQovU3VidHlwZSAvVHJ1ZVR5cGUNCi9GaXJzdENoYXIgMA0KL1R5cGUgL0ZvbnQNCi9CYXNl -Rm9udCAvQ0FBQUFBK0xpYmVyYXRpb25TYW5zLUJvbGQNCi9Gb250RGVzY3JpcHRvciAyMSAwIFIN -Ci9Ub1VuaWNvZGUgMjIgMCBSDQovTGFzdENoYXIgNDUNCi9XaWR0aHMgWyA3NTAgNzIyIDYxMCAz -MzMgMzg5IDU1NiA2MTAgMjc3IDYxMCAzMzMgNjY2IDU1NiA2MTAgNTU2IDcyMiA2MTANCjUwMCA4 -ODkgNzIyIDU1NiA2MTAgMjc3IDI3NyA1NTYgNjEwIDY2NiAyNzcgNzIyIDI3NyA1NTYgNTU2IDU1 -Ng0KNTU2IDU1NiA1NTYgNTU2IDU1NiA1NTYgNjEwIDYxMCAyNzcgNjEwIDU1NiAzMzMgNjEwIDYx -MCBdDQo+PgplbmRvYmoKMjQgMCBvYmoKPDwNCi9GMSAxMyAwIFINCi9GMiAyMyAwIFINCi9GMyAx -OCAwIFINCj4+CmVuZG9iagoyNSAwIG9iago8PA0KL1Byb2NTZXQgWyAvUERGIC9UZXh0IC9JbWFn -ZUMgL0ltYWdlSSAvSW1hZ2VCIF0NCi9Gb250IDI0IDAgUg0KL1hPYmplY3QgPDwNCi9JbTQgNCAw -IFINCj4+DQo+PgplbmRvYmoKMjYgMCBvYmoKPDwNCi9PcGVuQWN0aW9uIFsgMSAwIFIgL1hZWiBu -dWxsIG51bGwgMSBdDQovVHlwZSAvQ2F0YWxvZw0KL0xhbmcgKGRlLURFKQ0KL1BhZ2VzIDggMCBS -DQo+PgplbmRvYmoKMjcgMCBvYmoKPDwNCi9DcmVhdG9yIDxmZWZmMDA1NzAwNzIwMDY5MDA3NDAw -NjUwMDcyPg0KL0NyZWF0aW9uRGF0ZSAoRDoyMDI0MDIwMTE1MDAwNSswMScwMCcpDQovUHJvZHVj -ZXIgPGZlZmYwMDRjMDA2OTAwNjIwMDcyMDA2NTAwNGYwMDY2MDA2NjAwNjkwMDYzMDA2NTAwMjAw -MDM3MDAyZTAwMzI+DQo+PgplbmRvYmoKeHJlZg0KMCAyOCANCjAwMDAwMDAwMDAgNjU1MzUgZg0K -MDAwMDAwMDA2NyAwMDAwMCBuDQowMDAwMDAwMjUwIDAwMDAwIG4NCjAwMDAwMDE3MzEgMDAwMDAg -bg0KMDAwMDAwMTc1MSAwMDAwMCBuDQowMDAwMDI2Nzg3IDAwMDAwIG4NCjAwMDAwMjY4MDggMDAw -MDAgbg0KMDAwMDAyNzc3OSAwMDAwMCBuDQowMDAwMDI3Nzk4IDAwMDAwIG4NCjAwMDAwMjc5MDcg -MDAwMDAgbg0KMDAwMDAzODk2MyAwMDAwMCBuDQowMDAwMDM4OTg1IDAwMDAwIG4NCjAwMDAwMzkx -OTMgMDAwMDAgbg0KMDAwMDAzOTczMCAwMDAwMCBuDQowMDAwMDQwMTI3IDAwMDAwIG4NCjAwMDAw -NDYyOTYgMDAwMDAgbg0KMDAwMDA0NjMxNyAwMDAwMCBuDQowMDAwMDQ2NTQyIDAwMDAwIG4NCjAw -MDAwNDY5MDkgMDAwMDAgbg0KMDAwMDA0NzE1OSAwMDAwMCBuDQowMDAwMDU2OTkxIDAwMDAwIG4N -CjAwMDAwNTcwMTIgMDAwMDAgbg0KMDAwMDA1NzIyOCAwMDAwMCBuDQowMDAwMDU3NzMzIDAwMDAw -IG4NCjAwMDAwNTgwOTggMDAwMDAgbg0KMDAwMDA1ODE1NyAwMDAwMCBuDQowMDAwMDU4MjcyIDAw -MDAwIG4NCjAwMDAwNTgzODAgMDAwMDAgbg0KdHJhaWxlcg0KPDwNCi9JbmZvIDI3IDAgUg0KL0lE -IFsgPGQwMjBiYzk5MTViOTc3YWY1YmYwZmQ1NDIxMTJhN2ZjPiA8NzhiN2Y4MjI2OWIxY2U1NmNi -OWJmMGI1ZmQ5NjEwNDQ+IF0NCi9Sb290IDI2IDAgUg0KL1NpemUgMjgNCi9Eb2NDaGVja3N1bSAv -QjMwRjcxMzFEM0EyMzI2QjBFMkU3NTQ5NjdBNjY3MTkNCj4+DQpzdGFydHhyZWYNCjU4NTYzDQol -JUVPRg0K -</content> - <contentType>application/pdf</contentType> - <id>assistants.E0FBA361C191F8B723949467AE302BEA24E4745E</id> - <name>20240201539950384407_Antrag_20240201539950384407.pdf</name> - </attachments> - - <attachments> - <attributes> - <key>X-IntelliForm-Signed</key> - <value>false</value> - </attributes> - <content> - JVBERi0xLjYKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0ZpbHRlci9GbGF0ZURl -Y29kZT4+CnN0cmVhbQp4nCXKuwrCQBBG4X6e4q+FjDOTbHYWli0CpkgXGEghdl46wTS+voqc6oMj -rHjTCwJhMUcqiS0n+KDso2K/0XbA83982x80BaWRHTn3XLwgrjjOCjXE/VxFm1WxplX61tnPl1jo -FLTSig8XpBemCmVuZHN0cmVhbQplbmRvYmoKCjMgMCBvYmoKMTA5CmVuZG9iagoKNSAwIG9iago8 -PC9MZW5ndGggNiAwIFIvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aDEgNzc5Mj4+CnN0cmVhbQp4 -nOU3e2wb532/746UqCcpRZJl0xY/5iLZepGSaLuWY1m0JFKSJVvUgw7pl3giTyIT8RGSkmOnQdRt -SQw6XlxnS+bEWBpgDdIig09R1ilFZqvr0q3o2rQLiiJNvBpYi/0xG/bSJBvaxdrv++4ky46TYMP+ -20nf3e/9/j7eZdMzChTDHIjgDsflVAUxCADwjwCkPDybpR1DlfcjfAVA+KfJ1FT8hb8+/BGA4Q2A -/Dempo9PvvyD9HcAiqPIH4wqcuTdlosNAKXIh+1RJOy9eTwf8auI3xeNZx9ZJBtLAcwWxC3TybB8 -ERIEcYp4YVx+JGU3tKN/cxPiNCHHlf/88+9HEB8EKMqkkplsBE4uA2xYYvxUWkkNvjDxNuIYn3gG -aQT/2FWMYB7DBRH+X1/G01AJfcYOMEOK32+7xNdgPZwDWGb9WXO/Obj8u//LKEza48/gFXgDTsN7 -cERneMEHMZhBytrre/AzpLLLBwfh25D7HLOvwSLyNbkQPMMyuevlg+dhAf7+Ni8+iMOjGMtfwXuk -FX6Io5KED4kJvgZvo9UPkbbvbqYEnF6Y5ODkGur78KJwCvYKv0bkHOMITsECfwfnyVG0nMU8T69m -vOszRp+Cx/A+ClGYRZhfxo7/+iUULP8Ws3oM9sIfwB6YXqPxFnlJLMT+jcFLWNPvcZpzhZnfJz4o -fEcQPn0Wka/DFC6ZYO7CaXHP51Tof3yJfigh9WItFNyNK2wF883fCW3LH4n3QSH4l2+s0JYHln8r -yjcThnHDRmOH4Udf5CPv64Y4asPyb24+ejNi3G98Bbv1KoC799DBYMA/Njoy7Bvav29wYG9/X6/X -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 -SBbJmfmx0cbGgcX85ZEB1eQ7pJKTau0ou7uHD6p5J1XwHzwUmCfkj4NPnD4NXZsG1LbRgBraFBxQ -Iwi4GTCHgGXTfBV0BTOZbCO/SGMjwjN4h8aZRiQezWhUWOVDY4Zk8IjKcCXSyAQ0nOC9kfGQwPQI -ah/NALsxZqOmxLQzujmurN04UH30vwEOosbUCmVuZHN0cmVhbQplbmRvYmoKCjYgMCBvYmoKNDQx -NwplbmRvYmoKCjcgMCBvYmoKPDwvVHlwZS9Gb250RGVzY3JpcHRvci9Gb250TmFtZS9CQUFBQUEr -TGliZXJhdGlvblNlcmlmCi9GbGFncyA0Ci9Gb250QkJveFstNTQzIC0zMDMgMTI3NyA5ODFdL0l0 -YWxpY0FuZ2xlIDAKL0FzY2VudCAwCi9EZXNjZW50IDAKL0NhcEhlaWdodCA5ODEKL1N0ZW1WIDgw -Ci9Gb250RmlsZTIgNSAwIFIKPj4KZW5kb2JqCgo4IDAgb2JqCjw8L0xlbmd0aCAyMzUvRmlsdGVy -L0ZsYXRlRGVjb2RlPj4Kc3RyZWFtCnicXVC7bsQgEOz5ii0vxQls59FYSKeLTnKRh+LkAzCsHaQY -EMaF/z4LviRSCtAMM7Malp+7x87ZxF+j1z0mGK0zERe/Ro0w4GQdq2owVqcrK7eeVWCcsv22JJw7 -N/q2ZfyNtCXFDQ4n4we8YfwlGozWTXD4OPfE+zWEL5zRJRBMSjA40pwnFZ7VjLykjp0h2abtSJE/ -w/sWEOrCq72K9gaXoDRG5SZkrRAS2stFMnTmn9bsiWHUnyqSsyKnEA+3knBd8P1dxs3+3pQZV3ee -lr/70xL0GiM1LDsp1XIp6/B3bcGHnCrnG97uchYKZW5kc3RyZWFtCmVuZG9iagoKOSAwIG9iago8 -PC9UeXBlL0ZvbnQvU3VidHlwZS9UcnVlVHlwZS9CYXNlRm9udC9CQUFBQUErTGliZXJhdGlvblNl -cmlmCi9GaXJzdENoYXIgMAovTGFzdENoYXIgMwovV2lkdGhzWzAgMjc3IDQ0MyAzODkgXQovRm9u -dERlc2NyaXB0b3IgNyAwIFIKL1RvVW5pY29kZSA4IDAgUgo+PgplbmRvYmoKCjEwIDAgb2JqCjw8 -L0YxIDkgMCBSCj4+CmVuZG9iagoKMTEgMCBvYmoKPDwvRm9udCAxMCAwIFIKL1Byb2NTZXRbL1BE -Ri9UZXh0XQo+PgplbmRvYmoKCjEgMCBvYmoKPDwvVHlwZS9QYWdlL1BhcmVudCA0IDAgUi9SZXNv -dXJjZXMgMTEgMCBSL01lZGlhQm94WzAgMCA1OTUuMzAzOTM3MDA3ODc0IDg0MS44ODk3NjM3Nzk1 -MjhdL0NvbnRlbnRzIDIgMCBSPj4KZW5kb2JqCgo0IDAgb2JqCjw8L1R5cGUvUGFnZXMKL1Jlc291 -cmNlcyAxMSAwIFIKL01lZGlhQm94WyAwIDAgNTk1LjMwMzkzNzAwNzg3NCA4NDEuODg5NzYzNzc5 -NTI4IF0KL0tpZHNbIDEgMCBSIF0KL0NvdW50IDE+PgplbmRvYmoKCjEyIDAgb2JqCjw8L1R5cGUv -Q2F0YWxvZy9QYWdlcyA0IDAgUgovT3BlbkFjdGlvblsxIDAgUiAvWFlaIG51bGwgbnVsbCAwXQov -TGFuZyhkZS1ERSkKPj4KZW5kb2JqCgoxMyAwIG9iago8PC9DcmVhdG9yPEZFRkYwMDU3MDA3MjAw -NjkwMDc0MDA2NTAwNzI+Ci9Qcm9kdWNlcjxGRUZGMDA0QzAwNjkwMDYyMDA3MjAwNjUwMDRGMDA2 -NjAwNjYwMDY5MDA2MzAwNjUwMDIwMDAzNzAwMkUwMDM0PgovQ3JlYXRpb25EYXRlKEQ6MjAyNDA0 -MTgxMjMwMDcrMDInMDAnKT4+CmVuZG9iagoKeHJlZgowIDE0CjAwMDAwMDAwMDAgNjU1MzUgZiAK -MDAwMDAwNTQ5MSAwMDAwMCBuIAowMDAwMDAwMDE5IDAwMDAwIG4gCjAwMDAwMDAxOTkgMDAwMDAg -biAKMDAwMDAwNTYxNSAwMDAwMCBuIAowMDAwMDAwMjE5IDAwMDAwIG4gCjAwMDAwMDQ3MjAgMDAw -MDAgbiAKMDAwMDAwNDc0MSAwMDAwMCBuIAowMDAwMDA0OTMxIDAwMDAwIG4gCjAwMDAwMDUyMzUg -MDAwMDAgbiAKMDAwMDAwNTQwNCAwMDAwMCBuIAowMDAwMDA1NDM2IDAwMDAwIG4gCjAwMDAwMDU3 -NDAgMDAwMDAgbiAKMDAwMDAwNTgzNyAwMDAwMCBuIAp0cmFpbGVyCjw8L1NpemUgMTQvUm9vdCAx -MiAwIFIKL0luZm8gMTMgMCBSCi9JRCBbIDwwQTQzOEYyNEUzREM5QThCMjFFNjZCNkNCMTBFRTQy -Mj4KPDBBNDM4RjI0RTNEQzlBOEIyMUU2NkI2Q0IxMEVFNDIyPiBdCi9Eb2NDaGVja3N1bSAvRkM1 -QzYxM0I4RUM3NDM4NEY2MjM4NEQ5QjYzNjQ5M0YKPj4Kc3RhcnR4cmVmCjYwMTIKJSVFT0YK - - </content> - <contentType>application/pdf</contentType> - <id>assistants.81C072551A7E5563F1EEE46ACA1070D150D9E1B0</id> - <name>dominion_small.pdf</name> - </attachments> - - <attachments> - <attributes> - <key>X-IntelliForm-Signed</key> - <value>false</value> - </attributes> - <content> - JVBERi0xLjYKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0ZpbHRlci9GbGF0ZURl -Y29kZT4+CnN0cmVhbQp4nCXKuwrCQBBG4X6e4q+FjDOTbHYWli0CpkgXGEghdl46wTS+voqc6oMj -rHjTCwJhMUcqiS0n+KDso2K/0XbA83982x80BaWRHTn3XLwgrjjOCjXE/VxFm1WxplX61tnPl1jo -FLTSig8XpBemCmVuZHN0cmVhbQplbmRvYmoKCjMgMCBvYmoKMTA5CmVuZG9iagoKNSAwIG9iago8 -PC9MZW5ndGggNiAwIFIvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aDEgNzc5Mj4+CnN0cmVhbQp4 -nOU3e2wb532/746UqCcpRZJl0xY/5iLZepGSaLuWY1m0JFKSJVvUgw7pl3giTyIT8RGSkmOnQdRt -SQw6XlxnS+bEWBpgDdIig09R1ilFZqvr0q3o2rQLiiJNvBpYi/0xG/bSJBvaxdrv++4ky46TYMP+ -20nf3e/9/j7eZdMzChTDHIjgDsflVAUxCADwjwCkPDybpR1DlfcjfAVA+KfJ1FT8hb8+/BGA4Q2A -/Dempo9PvvyD9HcAiqPIH4wqcuTdlosNAKXIh+1RJOy9eTwf8auI3xeNZx9ZJBtLAcwWxC3TybB8 -ERIEcYp4YVx+JGU3tKN/cxPiNCHHlf/88+9HEB8EKMqkkplsBE4uA2xYYvxUWkkNvjDxNuIYn3gG -aQT/2FWMYB7DBRH+X1/G01AJfcYOMEOK32+7xNdgPZwDWGb9WXO/Obj8u//LKEza48/gFXgDTsN7 -cERneMEHMZhBytrre/AzpLLLBwfh25D7HLOvwSLyNbkQPMMyuevlg+dhAf7+Ni8+iMOjGMtfwXuk -FX6Io5KED4kJvgZvo9UPkbbvbqYEnF6Y5ODkGur78KJwCvYKv0bkHOMITsECfwfnyVG0nMU8T69m -vOszRp+Cx/A+ClGYRZhfxo7/+iUULP8Ws3oM9sIfwB6YXqPxFnlJLMT+jcFLWNPvcZpzhZnfJz4o -fEcQPn0Wka/DFC6ZYO7CaXHP51Tof3yJfigh9WItFNyNK2wF883fCW3LH4n3QSH4l2+s0JYHln8r -yjcThnHDRmOH4Udf5CPv64Y4asPyb24+ejNi3G98Bbv1KoC799DBYMA/Njoy7Bvav29wYG9/X6/X -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 -SBbJmfmx0cbGgcX85ZEB1eQ7pJKTau0ou7uHD6p5J1XwHzwUmCfkj4NPnD4NXZsG1LbRgBraFBxQ -Iwi4GTCHgGXTfBV0BTOZbCO/SGMjwjN4h8aZRiQezWhUWOVDY4Zk8IjKcCXSyAQ0nOC9kfGQwPQI -ah/NALsxZqOmxLQzujmurN04UH30vwEOosbUCmVuZHN0cmVhbQplbmRvYmoKCjYgMCBvYmoKNDQx -NwplbmRvYmoKCjcgMCBvYmoKPDwvVHlwZS9Gb250RGVzY3JpcHRvci9Gb250TmFtZS9CQUFBQUEr -TGliZXJhdGlvblNlcmlmCi9GbGFncyA0Ci9Gb250QkJveFstNTQzIC0zMDMgMTI3NyA5ODFdL0l0 -YWxpY0FuZ2xlIDAKL0FzY2VudCAwCi9EZXNjZW50IDAKL0NhcEhlaWdodCA5ODEKL1N0ZW1WIDgw -Ci9Gb250RmlsZTIgNSAwIFIKPj4KZW5kb2JqCgo4IDAgb2JqCjw8L0xlbmd0aCAyMzUvRmlsdGVy -L0ZsYXRlRGVjb2RlPj4Kc3RyZWFtCnicXVC7bsQgEOz5ii0vxQls59FYSKeLTnKRh+LkAzCsHaQY -EMaF/z4LviRSCtAMM7Malp+7x87ZxF+j1z0mGK0zERe/Ro0w4GQdq2owVqcrK7eeVWCcsv22JJw7 -N/q2ZfyNtCXFDQ4n4we8YfwlGozWTXD4OPfE+zWEL5zRJRBMSjA40pwnFZ7VjLykjp0h2abtSJE/ -w/sWEOrCq72K9gaXoDRG5SZkrRAS2stFMnTmn9bsiWHUnyqSsyKnEA+3knBd8P1dxs3+3pQZV3ee -lr/70xL0GiM1LDsp1XIp6/B3bcGHnCrnG97uchYKZW5kc3RyZWFtCmVuZG9iagoKOSAwIG9iago8 -PC9UeXBlL0ZvbnQvU3VidHlwZS9UcnVlVHlwZS9CYXNlRm9udC9CQUFBQUErTGliZXJhdGlvblNl -cmlmCi9GaXJzdENoYXIgMAovTGFzdENoYXIgMwovV2lkdGhzWzAgMjc3IDQ0MyAzODkgXQovRm9u -dERlc2NyaXB0b3IgNyAwIFIKL1RvVW5pY29kZSA4IDAgUgo+PgplbmRvYmoKCjEwIDAgb2JqCjw8 -L0YxIDkgMCBSCj4+CmVuZG9iagoKMTEgMCBvYmoKPDwvRm9udCAxMCAwIFIKL1Byb2NTZXRbL1BE -Ri9UZXh0XQo+PgplbmRvYmoKCjEgMCBvYmoKPDwvVHlwZS9QYWdlL1BhcmVudCA0IDAgUi9SZXNv -dXJjZXMgMTEgMCBSL01lZGlhQm94WzAgMCA1OTUuMzAzOTM3MDA3ODc0IDg0MS44ODk3NjM3Nzk1 -MjhdL0NvbnRlbnRzIDIgMCBSPj4KZW5kb2JqCgo0IDAgb2JqCjw8L1R5cGUvUGFnZXMKL1Jlc291 -cmNlcyAxMSAwIFIKL01lZGlhQm94WyAwIDAgNTk1LjMwMzkzNzAwNzg3NCA4NDEuODg5NzYzNzc5 -NTI4IF0KL0tpZHNbIDEgMCBSIF0KL0NvdW50IDE+PgplbmRvYmoKCjEyIDAgb2JqCjw8L1R5cGUv -Q2F0YWxvZy9QYWdlcyA0IDAgUgovT3BlbkFjdGlvblsxIDAgUiAvWFlaIG51bGwgbnVsbCAwXQov -TGFuZyhkZS1ERSkKPj4KZW5kb2JqCgoxMyAwIG9iago8PC9DcmVhdG9yPEZFRkYwMDU3MDA3MjAw -NjkwMDc0MDA2NTAwNzI+Ci9Qcm9kdWNlcjxGRUZGMDA0QzAwNjkwMDYyMDA3MjAwNjUwMDRGMDA2 -NjAwNjYwMDY5MDA2MzAwNjUwMDIwMDAzNzAwMkUwMDM0PgovQ3JlYXRpb25EYXRlKEQ6MjAyNDA0 -MTgxMjMwMDcrMDInMDAnKT4+CmVuZG9iagoKeHJlZgowIDE0CjAwMDAwMDAwMDAgNjU1MzUgZiAK -MDAwMDAwNTQ5MSAwMDAwMCBuIAowMDAwMDAwMDE5IDAwMDAwIG4gCjAwMDAwMDAxOTkgMDAwMDAg -biAKMDAwMDAwNTYxNSAwMDAwMCBuIAowMDAwMDAwMjE5IDAwMDAwIG4gCjAwMDAwMDQ3MjAgMDAw -MDAgbiAKMDAwMDAwNDc0MSAwMDAwMCBuIAowMDAwMDA0OTMxIDAwMDAwIG4gCjAwMDAwMDUyMzUg -MDAwMDAgbiAKMDAwMDAwNTQwNCAwMDAwMCBuIAowMDAwMDA1NDM2IDAwMDAwIG4gCjAwMDAwMDU3 -NDAgMDAwMDAgbiAKMDAwMDAwNTgzNyAwMDAwMCBuIAp0cmFpbGVyCjw8L1NpemUgMTQvUm9vdCAx -MiAwIFIKL0luZm8gMTMgMCBSCi9JRCBbIDwwQTQzOEYyNEUzREM5QThCMjFFNjZCNkNCMTBFRTQy -Mj4KPDBBNDM4RjI0RTNEQzlBOEIyMUU2NkI2Q0IxMEVFNDIyPiBdCi9Eb2NDaGVja3N1bSAvRkM1 -QzYxM0I4RUM3NDM4NEY2MjM4NEQ5QjYzNjQ5M0YKPj4Kc3RhcnR4cmVmCjYwMTIKJSVFT0YK - - </content> - <contentType>application/pdf</contentType> - <id>assistants.2BB6A1C337D28F62D9FFE1F550BD392703BD3C88</id> - <name>dominion_small (1).pdf</name> - </attachments> - - <caller /> - <client>Schleswig-Holstein</client> - <clientId>land</clientId> - <customer>Kreis Nordfriesland</customer> - <customerId>kreis-nordfriesland/kreis-nordfriesland</customerId> - <form>Deutschlandticket Erstattung</form> - <formId>mob_dtickerst/mob_dtickerst</formId> - <id>20240201539950384407</id> - <primaryDataAttachmentId>myForm-xml</primaryDataAttachmentId> - <sender>intelliform.by.kop-cloud.de</sender> - <timestamp>2021-04-15T08:33:39.443Z</timestamp> - <username /> - </data> - </ns2:deposit> - </soap:Body> -</soap:Envelope> \ No newline at end of file diff --git a/intelliform-adapter/src/main/scripts/vorgang-Eingliederungshilfe.xml b/intelliform-adapter/src/main/scripts/vorgang-Eingliederungshilfe.xml deleted file mode 100644 index 01381559..00000000 --- a/intelliform-adapter/src/main/scripts/vorgang-Eingliederungshilfe.xml +++ /dev/null @@ -1,117 +0,0 @@ -<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> - <soap:Body> - <ns2:deposit xmlns:ns2="http://xmlns.cit.de/intelliform/2009/webservices/backend"> - <data> - <attachments> - <attributes> - <key>X-IntelliForm-Signed</key> - <value>false</value> - </attributes> - <content>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG15Rm9ybSB4bWxuczpwZGY9Imh0dHA6Ly94bWxucy5jaXQuZGUvYXNzaXN0YW50cy9wZGYiIHhtbG5zOnQ9Imh0dHA6Ly94bWxucy5jaXQuZGUvaW50ZWxsaWZvcm0vdHJhbnNhY3Rpb24iIHhtbG5zOnU9Imh0dHA6Ly94bWxucy5jaXQuZGUvaW50ZWxsaWZvcm0vdXNlciIgdDppZD0iMjAyMTA0MTQzMjQxMjAwOTAyMDciIHQ6dGltZXN0YW1wPSIyMDIxLTA0LTE0VDA3OjAwOjEyLjQ4OFoiIHQ6c2VuZGVyPSJzdGFnZS5hZm0uc2NobGVzd2lnLWhvbHN0ZWluLmRlIiB0OmZvcm09IkVpbmdsaWVkZXJ1bmdzaGlsZmUgTWluZGVyasOkaHJpZ2UiIHQ6Zm9ybS1pZD0icGZtX3Bvc3RmYWNobWl0dGVpbHVuZyIgdDpjdXN0b21lcj0iS3JlaXMgU2VnZWJlcmciIHQ6Y3VzdG9tZXItaWQ9ImtyZWlzLXNlZ2ViZXJnL2tyZWlzLXNlZ2ViZXJnIiB0OmNsaWVudD0iU2NobGVzd2lnLUhvbHN0ZWluIiB0OmNsaWVudC1pZD0ibGFuZCIgdTpVc2VybmFtZT0iYWZtdDcwQHdlYi5kZSIgdTpQcmluY2lwYWxUeXBlPSJDaXRpemVuIiB1OnVzZXJuYW1lPSJkZTkzN2ExNy1iMTU2LTRhYWYtOTQ3Ni0yNjU4YmM4NzI2NTkiIHU6R2l2ZW5OYW1lcz0iRGF0YXBvcnQiIHU6QXNzdXJhbmNlTGV2ZWw9IkxvdyIgdTpkaXNwbGF5TmFtZT0iRGF0YXBvcnQgU0gtVXNlciIgdTptYWlsQWRkcmVzcz0iYWZtdDcwQHdlYi5kZSIgdTpFbWFpbEFkZHJlc3M9ImFmbXQ3MEB3ZWIuZGUiIHU6Zmlyc3ROYW1lPSJEYXRhcG9ydCIgdTpsYXN0TmFtZT0iU0gtVXNlciI+PGxlaXN0dW5nZW4+PGhlaWxwIGxhYmVsPSJIZWlscMOkZGFnb2dpc2NoZSBMZWlzdHVuZ2VuIj50cnVlPC9oZWlscD48aGlsZmUgbGFiZWw9IkhpbGZlIHp1ciBUZWlsaGFiZSBpbiBkZXIgR2VtZWluc2NoYWZ0Ij5mYWxzZTwvaGlsZmU+PG90aGVyIGxhYmVsPSIiPmZhbHNlPC9vdGhlcj48c2NodWwgbGFiZWw9IkxlaXN0dW5nZW4genVyIFRlaWxoYWJlIGFuIEJpbGR1bmciPmZhbHNlPC9zY2h1bD48dW50ZXJiIGxhYmVsPSJMZWlzdHVuZ2VuIMO8YmVyIFRhZyB1bmQgTmFjaHQiPmZhbHNlPC91bnRlcmI+PC9sZWlzdHVuZ2VuPjxiZWdydWVuZHVuZz50ZXN0PC9iZWdydWVuZHVuZz48bmFtZWlkPmRlOTM3YTE3LWIxNTYtNGFhZi05NDc2LTI2NThiYzg3MjY1OTwvbmFtZWlkPjxyZXN0X3Jlc3BvbnNlX25hbWU+W3sibWVtYmVyY29udGV4dCI6ImRlOTM3YTE3LWIxNTYtNGFhZi05NDc2LTI2NThiYzg3MjY1OSIsIm1lbWJlcnNjb3BlIjpbeyJ0ZW5hbnQiOiJTSCIsIm1haWxib3hndWlkIjoiYzVhNDQ2YjctZDZiMC00YzYxLTlhZDItYWFlNjAwODU3OTgyIiwibWFpbGJveG5hbWUiOiJOL0EiLCJtYWlsYm94ZGVzY3JpcHRpb24iOiJUZXN0IiwibWFpbGJveHR5cGUiOjEsImd1aWQiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJpZCI6MjM1OTkxNn1dfV08L3Jlc3RfcmVzcG9uc2VfbmFtZT48bWFpbGJveGd1aWQ+YzVhNDQ2YjctZDZiMC00YzYxLTlhZDItYWFlNjAwODU3OTgyPC9tYWlsYm94Z3VpZD48bmFjaG5hbWU+dGVydDwvbmFjaG5hbWU+PHZvcm5hbWU+dGVzdDwvdm9ybmFtZT48Z2VidXJ0c2RhdHVtPjIwMDAtMDQtMDc8L2dlYnVydHNkYXR1bT48ZGV1dHNjaD5kZXV0c2NoPC9kZXV0c2NoPjxiZXRyZXV1bmdfb19zY2h1bGU+ZGFoZWltPC9iZXRyZXV1bmdfb19zY2h1bGU+PHN0cmFzc2U+dGVzdDwvc3RyYXNzZT48aGF1c251bW1lcj4xMjI8L2hhdXNudW1tZXI+PHBsej4yMjIyMjwvcGx6PjxvcnQ+dGVzdDwvb3J0PjxwZmxlZ2VncmFkPmtlaW5lcjwvcGZsZWdlZ3JhZD48a3Jhbmtlbmthc3NlPnRlc3Q8L2tyYW5rZW5rYXNzZT48dmVyc2ljaGVydW5nc251bW1lcj53ZXRzZXQ8L3ZlcnNpY2hlcnVuZ3NudW1tZXI+PHNjaHdlcmJlaGluZGVydW5nPmZhbHNlPC9zY2h3ZXJiZWhpbmRlcnVuZz48ZWdoX2ZvbGdlYW50cmFnPmZhbHNlPC9lZ2hfZm9sZ2VhbnRyYWc+PGJldHJldXVuZz5kYWhlaW08L2JldHJldXVuZz48ZWx0ZXJuPjxlbHRlcm4taXRlbT48cm9sbGVfZWx0ZXI+dmF0ZXI8L3JvbGxlX2VsdGVyPjxuYWNobmFtZV9lbHRlcj5TSC1Vc2VyPC9uYWNobmFtZV9lbHRlcj48dm9ybmFtZV9lbHRlcj5EYXRhcG9ydDwvdm9ybmFtZV9lbHRlcj48Z2VidXJ0c3RhZ19lbHRlcj4yMDAwLTA0LTA5PC9nZWJ1cnRzdGFnX2VsdGVyPjxmZXN0bmV0el9lbHRlcj4yMzQ8L2Zlc3RuZXR6X2VsdGVyPjxtYWlsX2VsdGVyPmFmbXQ3MEB3ZWIuZGU8L21haWxfZWx0ZXI+PGFsdF9hZHJfZWx0ZXI+ZmFsc2U8L2FsdF9hZHJfZWx0ZXI+PC9lbHRlcm4taXRlbT48L2VsdGVybj48c29yZ2VyZWNodD52YXRlcjwvc29yZ2VyZWNodD48Z2VzY2h3aXN0ZXIvPjxwZmxlZ2VmYW1pbGllPmZhbHNlPC9wZmxlZ2VmYW1pbGllPjxhcnp0PnRlc3Q8L2FyenQ+PGRpYWdub3Nlbj50ZXN0PC9kaWFnbm9zZW4+PHVudGVyc3VjaHVuZ2VuPjxhdWdlbiBsYWJlbD0iQXVnZW5hcnp0Ij5mYWxzZTwvYXVnZW4+PGhubyBsYWJlbD0iSE5PLUFyenQiPnRydWU8L2hubz48a2ggbGFiZWw9IkRpYWdub3N0aWtlbiBpbSBLcmFua2VuaGF1cyI+ZmFsc2U8L2toPjxvcnRobyBsYWJlbD0iT3J0aG9ww6RkaWUiPmZhbHNlPC9vcnRobz48b3RoZXIgbGFiZWw9IiI+ZmFsc2U8L290aGVyPjxwc3ljaGF0ZXIgbGFiZWw9IktpbmRlci0gdW5kIEp1Z2VuZHBzeWNoaWF0ZXIiPmZhbHNlPC9wc3ljaGF0ZXI+PHNvemlhbCBsYWJlbD0iU296aWFscMOkZGlhdHJpc2NoZXMgWmVudHJ1bSI+ZmFsc2U8L3NvemlhbD48L3VudGVyc3VjaHVuZ2VuPjxtYXNzbmFobWVuPjxlcmdvIGxhYmVsPSJFcmdvdGhlcmFwaWUiPnRydWU8L2VyZ28+PGtnIGxhYmVsPSJLcmFua2VuZ3ltbmFzdGlrIj5mYWxzZTwva2c+PGxvZ28gbGFiZWw9IkxvZ29ww6RkaWUiPmZhbHNlPC9sb2dvPjxtdXNpayBsYWJlbD0iVGVpbG5haG1lIGFuIGVpbmVyIE11c2lrZ3J1cHBlIj5mYWxzZTwvbXVzaWs+PG90aGVyIGxhYmVsPSIiPmZhbHNlPC9vdGhlcj48cHN5Y2hvIGxhYmVsPSJQc3ljaG90aGVyYXBpZSI+ZmFsc2U8L3BzeWNobz48c2Nod2ltbWVuIGxhYmVsPSJTY2h3aW1tZW4iPmZhbHNlPC9zY2h3aW1tZW4+PHNwcmFjaCBsYWJlbD0iU3ByYWNoZsO2cmRlcnVuZyBpbiBkZXIgS2luZGVydGFnZXNzdMOkdHRlIj5mYWxzZTwvc3ByYWNoPjx2ZXJlaW4gbGFiZWw9Ik1pdGdsaWVkc2NoYWZ0IGluIGVpbmVtIFR1cm4tL1Nwb3J0dmVyZWluIj5mYWxzZTwvdmVyZWluPjwvbWFzc25haG1lbj48anVnZW5kYW10X2tvbnRha3Q+ZmFsc2U8L2p1Z2VuZGFtdF9rb250YWt0PjxqdWdlbmRhbXRfYWt0ZW5laW5zaWNodD50cnVlPC9qdWdlbmRhbXRfYWt0ZW5laW5zaWNodD48cGVyc29uYWxhdXN3ZWlzPjxwZXJzb25hbGF1c3dlaXMtaXRlbT48ZmlsZSBjb250ZW50LXR5cGU9ImFwcGxpY2F0aW9uL3BkZiIgZGVzY3JpcHRpb249IiIgaWQ9ImFzc2lzdGFudHMuM0Y0QzVGOUI5NzM3MzMzOTMzQjkzNTZFNDlBQTM1RUIzRDkyNzJCOSIgbGVuZ3RoPSIxODE5MjYiPnRlc3QucGRmPC9maWxlPjwvcGVyc29uYWxhdXN3ZWlzLWl0ZW0+PC9wZXJzb25hbGF1c3dlaXM+PHNvcmdlcmVjaHRzbmFjaHdlaXM+PGZpbGUgY29udGVudC10eXBlPSJhcHBsaWNhdGlvbi9wZGYiIGRlc2NyaXB0aW9uPSIiIGlkPSJhc3Npc3RhbnRzLjdDOUFDMDc0M0NFMDY1QTc0RTBEQzJEODVGOTY4MkJGQzQ5MDM1QkIiIGxlbmd0aD0iMTgxOTI2Ij50ZXN0ICgxKS5wZGY8L2ZpbGU+PC9zb3JnZXJlY2h0c25hY2h3ZWlzPjxlcmtsYWVydW5nX2VpbnZlcnN0YWVuZG5pcz50cnVlPC9lcmtsYWVydW5nX2VpbnZlcnN0YWVuZG5pcz48ZGF0ZW5zY2h1dHo+dHJ1ZTwvZGF0ZW5zY2h1dHo+PHBvc3RmYWNoYmV0cmVmZj5JaHIgQW50cmFnIGF1ZiBFaW5nbGllZGVydW5nc2hpbGZlIGbDvHIgTWluZGVyasOkaHJpZ2U8L3Bvc3RmYWNoYmV0cmVmZj48cG9zdGZhY2huYWNocmljaHQ+U2VociBnZWVocnRlL3IgQW50cmFnc3RlbGxlcippbiwgJmx0O2JyLyZndDsmbHQ7YnIvJmd0O0lociBBbnRyYWcgd3VyZGUgZXJmb2xncmVpY2ggw7xiZXJtaXR0ZWx0LiZsdDtici8mZ3Q7Jmx0O2JyLyZndDtCaXR0ZSBiZWFjaHRlbiBTaWUsIGRhc3MgZGllIEJlYXJiZWl0dW5nc3plaXQgbmFjaCBFaW5nYW5nIGFsbGVyIFVudGVybGFnZW4gMiBXb2NoZW4gYmlzIDIgTW9uYXRlIGJldHLDpGd0LiBTaWUgZXJoYWx0ZW4gdW5hdWZnZWZvcmRlcnQgZWluZSBSw7xja21lbGR1bmcgenUgSWhyZW0gQW50cmFnLiZsdDtici8mZ3Q7Jmx0O2JyLyZndDtJaHJlIFZvcmdhbmdzbnVtbWVyIGZpbmRlbiBTaWUgaW0gYW5nZWjDpG5ndGVuIERva3VtZW50LiAmbHQ7YnIvJmd0O0JpdHRlIGdlYmVuIFNpZSBkaWVzZSBWb3JnYW5nc251bW1lciBiZWkgYWxsZW4gQW5mcmFnZW4genUgSWhyZW0gQW50cmFnIGFuLiZsdDtici8mZ3Q7Jmx0O2JyLyZndDsmbHQ7YnIvJmd0O01pdCBmcmVuZGxpY2hlbiBHcsO8w59lbiZsdDtici8mZ3Q7SWhyIEtyZWlzIFNlZ2ViZXJnJmx0O2JyLyZndDsmbHQ7YnIvJmd0Oy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSZsdDtici8mZ3Q7Jmx0O2JyLyZndDtLcmVpcyBTZWdlYmVyZyAmbHQ7YnIvJmd0O0VpbmdsaWVkZXJ1bmdzaGlsZmUgZsO8ciBNaW5kZXJqw6RocmlnZSZsdDtici8mZ3Q7Jmx0O2JyLyZndDtQb3N0YW5zY2hyaWZ0OiZsdDtici8mZ3Q7SGFtYnVyZ2VyIFN0ci4gMzAmbHQ7YnIvJmd0OzIzNzk1IEJhZCBTZWdlYmVyZyZsdDtici8mZ3Q7Jmx0O2JyLyZndDtCZXN1Y2hlcmFuc2NocmlmdDombHQ7YnIvJmd0O0J1cmdmZWxkc3RyLiA0MWEgJmx0O2JyLyZndDsyMzc5NSBCYWQgU2VnZWJlcmcgJmx0O2JyLyZndDsmbHQ7YnIvJmd0O0ZheDogKzQ5NDU1MS85NTEtOTU2NSAmbHQ7YnIvJmd0O0UtTWFpbDogJmx0O2EgaGVyZj0ibWFpbHRvOmludGVncmF0aW9uLmtpbmRlckBzZWdlYmVyZy5kZSImZ3Q7aW50ZWdyYXRpb24ua2luZGVyQHNlZ2ViZXJnLmRlJmx0Oy9hJmd0OyZsdDtici8mZ3Q7SW50ZXJuZXQ6ICZsdDthIGhyZWY9Ind3dy5zZWdlYmVyZy5kZSImZ3Q7d3d3LnNlZ2ViZXJnLmRlJmx0Oy9hJmd0OyZsdDtici8mZ3Q7PC9wb3N0ZmFjaG5hY2hyaWNodD48L215Rm9ybT4=</content> - <contentType>text/xml</contentType> - <id>myForm-xml</id> - <name>XML-Daten.xml</name> - </attachments> - <attachments> - <attributes> - <key>X-IntelliForm-Signed</key> - <value>false</value> - </attributes> - <content>PHNhbWw6QXNzZXJ0aW9uIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIElEPSJfZDViZDQ3ZmMtZWU4MC00MDk0LWE5M2ItY2UzZDUyMTk1OWU4IiBJc3N1ZUluc3RhbnQ9IjIwMjEtMDQtMTRUMDc6MDA6MTMuNjM4WiIgVmVyc2lvbj0iMi4wIiB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiPjxzYW1sOklzc3Vlcj51cm46ZGF0YXBvcnQ6b3NpOnNlcnZpY2Vrb250bzppZHA6cnoyOnN0YWdlOnNoPC9zYW1sOklzc3Vlcj48U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNyc2Etc2hhMjU2Ii8+PFJlZmVyZW5jZSBVUkk9IiNfZDViZDQ3ZmMtZWU4MC00MDk0LWE5M2ItY2UzZDUyMTk1OWU4Ij48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIj48SW5jbHVzaXZlTmFtZXNwYWNlcyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIiBQcmVmaXhMaXN0PSIjZGVmYXVsdCBzYW1sIGRzIHhzIHhzaSIvPjwvVHJhbnNmb3JtPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjc2hhMjU2Ii8+PERpZ2VzdFZhbHVlPi8raURwbHVXdGFMd20rY1M5aCtYVEc0aTBiQy9jYS9WbjdMMWFObWtXNFk9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPkdVMm9NOWNTZWFyZCt0MlU1WTBzNDVQKzlQdzJKNVdwSzh6MXNYa2NvT0RHY0lhVzljU3dKa0RTc2U0Z0lHQ1VYTXYxcWRhbytJdmFuQlJReXc3Mmo1SFVWdFNkWktBUkg5NjBoeEJ4YVhQRVN3VUQ5OTF4TzlYWVJ2ZmoxZU5waTNkRWpVRWtKUEN3T1g2NmlsWUZhQ0VCeFdwOXF4MGVVZVdzdnVOOUg1aytoWFJpdHpPdGdRMmFTenUrZUlzQnpOU3hoVHJkSXJPck9nV0orVHEwTmhZOC84WDNUT3EzQW9qMHJJTHcrVEZYMWFENmo2NUNWKzQ0eGtCWjlDK0F3NENrcTRRYUk4ckt6UzY4djlReUt2MTVOT2dhcmx6TGE3OUNNc2h1aUk4eDZldFZOSHpHcm15RC9Nc243bmticlhEWTdoQUNuL294bXlydk1YQXpGdz09PC9TaWduYXR1cmVWYWx1ZT48S2V5SW5mbz48WDUwOURhdGE+PFg1MDlDZXJ0aWZpY2F0ZT5NSUlHM3pDQ0JNZWdBd0lCQWdJVGJRQUxpdm01eVVoSU9TYmQwQUFCQUF1SytUQU5CZ2txaGtpRzl3MEJBUXNGQURBK01Rc3dDUVlEVlFRR0V3SkVSVEVXTUJRR0ExVUVDZ3dOUkdGMFlYQnZjblFnUWNPMlVqRVhNQlVHQTFVRUF3d09SR0YwWVhCdmNuUWdRMEVnTURRd0hoY05NakF3TkRJM01EY3dOelUwV2hjTk1qSXdOek14TURjd056VTBXakNCcWpFTE1Ba0dBMVVFQmhNQ1JFVXhHekFaQmdOVkJBZ01FbE5qYUd4bGMzZHBaeTFJYjJ4emRHVnBiakVTTUJBR0ExVUVCd3dKUVd4MFpXNW9iMng2TVJFd0R3WURWUVFLREFoRVlYUmhjRzl5ZERFTk1Bc0dBMVVFQ3d3RVZGb3hOREZJTUVZR0ExVUVBd3cvYzJGdGJDNXBaSEF1YzJWeWRtbGpaV3R2Ym5SdkxuTjBZV2RsTG5ObGNuWnBZMlZ3YjNKMFlXd3VjMk5vYkdWemQybG5MV2h2YkhOMFpXbHVMbVJsTUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUFwUFRUZHhpQ3laenJEU2NZclQ5ckNxcHl1RFRqYzY1ZTJTTzBjRE03Mmd0dW1zOFZqQVp2T1Jic09vWm90dEFUYmlSWWpXM2t1Z3ZkeGFHdk1lYlRCNE93YVd0UDlwUDNRdTZjaWVrRG9IdmpQUHQyTG05TmdNT3BTVFNMSENxT3QrdWFiNEdYU1NPQmt3TXFlNDNMa2RaU3E5WS9tazJ6QlBZcXlVMzEwN2dkd01xUWRGdWhqZU5iYVEvMFFYa1laTGdVeFR1OGpVSmxGZXh1QkxZTjZ1WHJHVllyV0dQTU9Vdk83cGYzc3BzMjRnUVJFWlVHMkJkU0tkbjhqaDRjR0Y2ODhtNk5uTlBOVGZ5L3BWbmRDVDQzY0lGT0JQSHRvTitTcWs2ZGVKVVJoY3hyeE56U3Z2RUYvRWVMOE1WSUU3Ym5IRGhaZGtmbXU5MkVldlNoQXdJREFRQUJvNElDWnpDQ0FtTXdIUVlEVlIwT0JCWUVGQmczOU0yVGlPNkE0aHh1QjFKKytLbTgxYUVpTUE0R0ExVWREd0VCL3dRRUF3SUZvREJLQmdOVkhSRUVRekJCZ2o5ellXMXNMbWxrY0M1elpYSjJhV05sYTI5dWRHOHVjM1JoWjJVdWMyVnlkbWxqWlhCdmNuUmhiQzV6WTJoc1pYTjNhV2N0YUc5c2MzUmxhVzR1WkdVd0h3WURWUjBqQkJnd0ZvQVVzZUttMi95SjVUZm83NkxMT295WTBQUkpKTjh3UmdZRFZSMGZCRDh3UFRBN29EbWdONFkxYUhSMGNEb3ZMM0JyYVM1elpYSjJhV05sWkhCaGIzSXVaR1V2WTNKc0wwUmhkR0Z3YjNKMEpUSXdRMEVsTWpBd05DNWpjbXd3Z1lBR0NDc0dBUVVGQndFQkJIUXdjakFyQmdnckJnRUZCUWN3QVlZZmFIUjBjRG92TDNCcmFTNXpaWEoyYVdObFpIQmhiM0l1WkdVdmIyTnpjREJEQmdnckJnRUZCUWN3QW9ZM2FIUjBjRG92TDNCcmFTNXpaWEoyYVdObFpIQmhiM0l1WkdVdlkyRXZSR0YwWVhCdmNuUWxNakJEUVNVeU1EQTBLREVwTG1OeWREQU1CZ05WSFJNQkFmOEVBakFBTUQwR0NTc0dBUVFCZ2pjVkJ3UXdNQzRHSmlzR0FRUUJnamNWQ09yYVk0WE0zRUNDcVpjZ2hOVGpjNEg0cFhhQlhvTzFsanVEdnJ0dUFnRmtBZ0VpTUNjR0ExVWRKUVFnTUI0R0NDc0dBUVVGQndNQkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSUFnSXdNd1lKS3dZQkJBR0NOeFVLQkNZd0pEQUtCZ2dyQmdFRkJRY0RBVEFLQmdnckJnRUZCUWNEQWpBS0JnZ3JCZ0VGQlFnQ0FqQlBCZ05WSFNBRVNEQkdNRVFHRFNzR0FRUUJncWxYZzMyQlNBSXdNekF4QmdnckJnRUZCUWNDQVJZbGFIUjBjRG92TDNCcmFTNXpaWEoyYVdObFpIQmhiM0l1WkdVdlkyVnlkR05zWVhOekFEQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FnRUFPbG9Kc05vaUdoN09TRWdLelF1TEE1ZUozUFpLOGJ4MGdmVXlOZVJvSVlVQnErZ1lVSW1IM2tRU3R1bDg2WXhwU3JrUzNGNkU3c2pqWitncHRXai95aDcwMUYzR0EvZEk3TDVBTGNmSXdWWjlVckIzdnlKWHYwWGNQSmlMb05uZ3N0TDdBUzFobFV3d0NYN0pCS1FVdnFnS2dMWGFyWGpHYko2emZCMlVTSG9LSWJkVlo4R0ZhUENPWU5QZmlHanBDaSs4WUllTWY5eHRhSUJ6dGFRUEJ2eW4yVC9CNzBNSjBLK1JFZTdzTUNSSXBmYTdsZThRNVBlaGJEQWpkOWhCb3hzbWJtUXhxZmtKUHNYVDNqeGIxZk5pWHRyNjFRVkh0ODQ4dTNkOXhCVkc5OSthRlZlNnJRd01wdDA4TWpBYWdWemNpS2RlRU01WTAzaUNBVFdabDZEYjZINjhlVU9FdTdJTmxmNDF1UGQ3U0FOMnpRT1pIZ3pnZTJjbXNwcGZlKyt4NU1VK3YyUy9rOUJrVHQwU2FqWEtHcjczdk92VU1pMUhvNjEwMkpKdWg5K2NyVDRRM1VFRkp3QStkZHVVK25MVDRDWGZjOGs3RGVCTGJBME1IQzNhOXFLcmZKcnNlM2NkVmdRQmVSWFFDTk55OGJHV2swdHNueXhWMDJhdG92TnJ6ZXBMekE3dCtOU2lPNUNUWXo5U3NXSXRLTk5Wd3kyZ3ZwQjVNU1Fsc2tQRWNFMzh2UTYvc1p2Nks0MGczbnY1Q2Z1RlMyait2eDdsSTVCVmJQSW1KNDN3QXB0dktnUVAyVEtuTFEwTmRCWE5VSzlQZGI3MlJtM1BGTlp3eHVMdncyV1BXNk9SNVRvdk44Q3VIdHNGTmU0UHlPTVg2QnN4elVqb0dFMD08L1g1MDlDZXJ0aWZpY2F0ZT48L1g1MDlEYXRhPjwvS2V5SW5mbz48L1NpZ25hdHVyZT48c2FtbDpTdWJqZWN0PjxzYW1sOk5hbWVJRCBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQtZm9ybWF0OnBlcnNpc3RlbnQiIE5hbWVRdWFsaWZpZXI9InVybjpvc3A6bmFtZXM6cmVhbG06c3RhZ2U6c2giPmRlOTM3YTE3LWIxNTYtNGFhZi05NDc2LTI2NThiYzg3MjY1OTwvc2FtbDpOYW1lSUQ+PHNhbWw6U3ViamVjdENvbmZpcm1hdGlvbiBNZXRob2Q9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpjbTpiZWFyZXIiPjxzYW1sOlN1YmplY3RDb25maXJtYXRpb25EYXRhIEluUmVzcG9uc2VUbz0iX2Q3M2VlMTJlYmIwMjY0OWQyM2Q4M2U2OWM2OWM4NTcxIiBOb3RPbk9yQWZ0ZXI9IjIwMjEtMDQtMTRUMTc6MDA6MTMuNjM4WiIgUmVjaXBpZW50PSJodHRwczovL3N0YWdlLmFmbS5zY2hsZXN3aWctaG9sc3RlaW4uZGUvb3NpL1NoaWJib2xldGguc3NvL1NBTUwyL1BPU1QiLz48L3NhbWw6U3ViamVjdENvbmZpcm1hdGlvbj48L3NhbWw6U3ViamVjdD48c2FtbDpDb25kaXRpb25zIE5vdE9uT3JBZnRlcj0iMjAyMS0wNC0xNFQxNzowMDoxMy42MzhaIj48c2FtbDpBdWRpZW5jZVJlc3RyaWN0aW9uPjxzYW1sOkF1ZGllbmNlPmh0dHBzOi8vc3RhZ2UuYWZtLnNjaGxlc3dpZy1ob2xzdGVpbi5kZTwvc2FtbDpBdWRpZW5jZT48L3NhbWw6QXVkaWVuY2VSZXN0cmljdGlvbj48L3NhbWw6Q29uZGl0aW9ucz48c2FtbDpBdXRoblN0YXRlbWVudCBBdXRobkluc3RhbnQ9IjIwMjEtMDQtMTRUMDc6MDA6MTMuNjM4WiIgU2Vzc2lvbkluZGV4PSJiZjA0NjNhNy0xYjdkLTQ5ZWMtODE5Yy1jZDFhZGM4ZTFlZGEiPjxzYW1sOkF1dGhuQ29udGV4dD48c2FtbDpBdXRobkNvbnRleHRDbGFzc1JlZj5odHRwOi8vZWlkYXMuZXVyb3BhLmV1L0xvQS9sb3c8L3NhbWw6QXV0aG5Db250ZXh0Q2xhc3NSZWY+PC9zYW1sOkF1dGhuQ29udGV4dD48L3NhbWw6QXV0aG5TdGF0ZW1lbnQ+PHNhbWw6QXR0cmlidXRlU3RhdGVtZW50PjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJVc2VybmFtZSIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDpiYXNpYyI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5hZm10NzBAd2ViLmRlPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PHNhbWw6QXR0cmlidXRlIE5hbWU9IkFzc3VyYW5jZUxldmVsIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OmJhc2ljIj48c2FtbDpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPkxvdzwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJUaXRsZSIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDpiYXNpYyI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5IZXJyPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PHNhbWw6QXR0cmlidXRlIE5hbWU9IkdpdmVuTmFtZXMiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6YmFzaWMiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+RGF0YXBvcnQ8L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48c2FtbDpBdHRyaWJ1dGUgTmFtZT0iRmFtaWx5TmFtZXMiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6YmFzaWMiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+U0gtVXNlcjwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJFbWFpbEFkZHJlc3MiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6YmFzaWMiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+YWZtdDcwQHdlYi5kZTwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJQcmluY2lwYWxUeXBlIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OmJhc2ljIj48c2FtbDpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPkNpdGl6ZW48L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48c2FtbDpBdHRyaWJ1dGUgTmFtZT0iQ2l0aXplblByb2ZpbGVUeXBlIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OmJhc2ljIj48c2FtbDpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPlN0YW5kYXJkPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PC9zYW1sOkF0dHJpYnV0ZVN0YXRlbWVudD48L3NhbWw6QXNzZXJ0aW9uPg==</content> - <contentType>text/xml</contentType> - <id>saml-assertion</id> - <name>SAML-Assertion.xml</name> - </attachments> - <attachments> - <attributes> - <key>X-IntelliForm-Signed</key> - <value>false</value> - </attributes> - <content>JVBERi0xLjUNCiW1tbW1DQoxIDAgb2JqDQo8PC9UeXBlL0NhdGFsb2cvUGFnZXMgMiAwIFIvTGFuZyhkZS1ERSkgL1N0cnVjdFRyZWVSb290IDEwIDAgUi9NYXJrSW5mbzw8L01hcmtlZCB0cnVlPj4+Pg0KZW5kb2JqDQoyIDAgb2JqDQo8PC9UeXBlL1BhZ2VzL0NvdW50IDEvS2lkc1sgMyAwIFJdID4+DQplbmRvYmoNCjMgMCBvYmoNCjw8L1R5cGUvUGFnZS9QYXJlbnQgMiAwIFIvUmVzb3VyY2VzPDwvRm9udDw8L0YxIDUgMCBSPj4vRXh0R1N0YXRlPDwvR1M3IDcgMCBSL0dTOCA4IDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0L0ltYWdlQi9JbWFnZUMvSW1hZ2VJXSA+Pi9NZWRpYUJveFsgMCAwIDU5NS4zMiA4NDEuOTJdIC9Db250ZW50cyA0IDAgUi9Hcm91cDw8L1R5cGUvR3JvdXAvUy9UcmFuc3BhcmVuY3kvQ1MvRGV2aWNlUkdCPj4vVGFicy9TL1N0cnVjdFBhcmVudHMgMD4+DQplbmRvYmoNCjQgMCBvYmoNCjw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMTI1Pj4NCnN0cmVhbQ0KeJxT0A9QsLHR93X2dFEwsLNTcHJxVnAK4eXSdzNUMDTQs7RQCEnj5TJUMABCQwVzAz0LMwVzMwM9MyOFkFygMvdgc4X0Yl4uA4V0MM8CynPn5YrWKEktLtGMVQjx4uVyBZoJMhdmkoWFnoEJsknRGgpIShVcfZ0VAKkCHzkNCmVuZHN0cmVhbQ0KZW5kb2JqDQo1IDAgb2JqDQo8PC9UeXBlL0ZvbnQvU3VidHlwZS9UcnVlVHlwZS9OYW1lL0YxL0Jhc2VGb250L0FCQ0RFRStDYWxpYnJpL0VuY29kaW5nL1dpbkFuc2lFbmNvZGluZy9Gb250RGVzY3JpcHRvciA2IDAgUi9GaXJzdENoYXIgMzIvTGFzdENoYXIgMTE2L1dpZHRocyAxNyAwIFI+Pg0KZW5kb2JqDQo2IDAgb2JqDQo8PC9UeXBlL0ZvbnREZXNjcmlwdG9yL0ZvbnROYW1lL0FCQ0RFRStDYWxpYnJpL0ZsYWdzIDMyL0l0YWxpY0FuZ2xlIDAvQXNjZW50IDc1MC9EZXNjZW50IC0yNTAvQ2FwSGVpZ2h0IDc1MC9BdmdXaWR0aCA1MjEvTWF4V2lkdGggMTc0My9Gb250V2VpZ2h0IDQwMC9YSGVpZ2h0IDI1MC9TdGVtViA1Mi9Gb250QkJveFsgLTUwMyAtMjUwIDEyNDAgNzUwXSAvRm9udEZpbGUyIDE4IDAgUj4+DQplbmRvYmoNCjcgMCBvYmoNCjw8L1R5cGUvRXh0R1N0YXRlL0JNL05vcm1hbC9jYSAxPj4NCmVuZG9iag0KOCAwIG9iag0KPDwvVHlwZS9FeHRHU3RhdGUvQk0vTm9ybWFsL0NBIDE+Pg0KZW5kb2JqDQo5IDAgb2JqDQo8PC9BdXRob3Io/v8ARgByAOQAZAByAGkAYwBoACwAIABNAGEAcgBrAHUAcykgL0NyZWF0b3Io/v8ATQBpAGMAcgBvAHMAbwBmAHQArgAgAFcAbwByAGQAIAAyADAAMQAzKSAvQ3JlYXRpb25EYXRlKEQ6MjAyMTA0MDgwODQyNTMrMDInMDAnKSAvTW9kRGF0ZShEOjIwMjEwNDA4MDg0MjUzKzAyJzAwJykgL1Byb2R1Y2VyKP7/AE0AaQBjAHIAbwBzAG8AZgB0AK4AIABXAG8AcgBkACAAMgAwADEAMykgPj4NCmVuZG9iag0KMTYgMCBvYmoNCjw8L1R5cGUvT2JqU3RtL04gNi9GaXJzdCAzOS9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDI4ND4+DQpzdHJlYW0NCnicbVHBioMwEL0X+g/zB2Oswi6UwrJt2aVURIU9lB5SndVQTUoaof37TdRiDgshmTfz3stkwiIIgK0gZsBsENjDrvcQWAhR+AYshsjW1mtMHS2ADHNMsXjeCHOj+9LsWurwcILgDJjWMHA2m+VilAQvCdfmPxVz92dnmBQeo9BEmVIGM9XSkd9cY87LOpEcqq5Hl3E2q9HGqyb0MAd6Apus99ZLKkOYuG0nqxkUlnpRD8ypNPhFvCI9xk7zir9lKyTlDXcdusSHtA7cCCUnrI345TYY0I/S14tSV9yqsu9sT0Pm3hCZcRhHXmrl4c/G7h7eCt6q2kvkrajI4473WFqteYd7UfeaprcmfXc/uY+N5+nOs14u/gBN0Ju/DQplbmRzdHJlYW0NCmVuZG9iag0KMTcgMCBvYmoNClsgMjI2IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA0OTggMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAzOTEgMzM1XSANCmVuZG9iag0KMTggMCBvYmoNCjw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMTc4ODI1L0xlbmd0aDEgNTQyMDA4Pj4NCnN0cmVhbQ0KeJzsfQd4lFXa9jnvOy2ZTGYmyaRNwswwJJRJCBBKQsuQBqFDGEyoCSkEDRBCR8AICBrFslYUFV2F3cUyGVCDFV0say+sunZc145tLYBA/vu8z5wQ+NW9vv2/b939/nmSe+77PKe8p79PLpILxhljifjQsari8rLR/T6y1jJTz02Mpe8tKSyetuvC+YWM972NMeWOksLxRXuTJwcYz8pCetXo4pLSA0+/9h7TzR3DmOH90ZMnlW+Y1hrDdPVZTH10+ujyQOFXruhBjPc/yNTs5knlOQNufLT6Hsb4x3hqVc3C6qbj1w3Zztg536K9IzUrlrn3Nb0+iLFbdIzpH6xvmr9w/TvqEMYWfc6YxTe/emkT68a8eH4a6tvmN66unxxX8CFjO/cz1q1PQ1117ZEJq4NovxH5gxvgsNyZdhhp9J/1aFi4bFXNU9FIK+jvgjvOqWteZF5v7s3Yj8XIL2xcXFP9Rd6HLzF2AM8bPH1h9aqmvtEZ0Pwp5LsX1i2rvn7DjhUYz2SkNy2qXlh307Hv5qL+hYz1W9q0eOmyDifbzLjvuCjf1FzXFD+/ewpja5Px+M+YmGvD0EMn3vzy7rnW4d+xFBMT9sBna58V/FrZykk/HjvREvW5aTCSUUxhZKhnYCcZPxC948djx3ZEfa611MVS7hAeZx92JbOx4dAKOIdtYSxusPZczlSdj1/O9Myk36bPRZPdiNUX2WaFmZhi1SuKolMV3Qesb8d+1uNcrQewCeVuN/MzlvEs9cF4k5LpZrxD5Kn36WPFSFmCLvZUb/gL7P97M7zG7vi1+/C/xXR17JauabXl9PS/mxkM/zP9Uw+fMQ+TWNlPlqtkaf8Tz/93MN1AVtU1rf7IZv9KXYnY/4MpT7NtXdOqh035qXL6u073K3cxzz/7TH38P1/31zLlb2yM0s5G/1fr8e9Zo9KPFfK/Il6KWMQiFrGI/eqm3MCjfzavih3+V/blP8XUQeziX7sPEYtYxCIWsX/edI+y+n/5MxeyS//Vz4xYxCIWsYhFLGIRi1jEIhaxiP3vtcjPmRGLWMQiFrGIRSxiEYtYxCIWsYhFLGL/3sa3/eMyEYtYxCIWsYhFLGIRi1jEIhaxiEUsYhGLWMQiFrGIRSxiEYtYxCIWsYhFLGIRi1jEIhaxiEUsYhGLWMQiFrGIRSxiEftXWMf9v3YPIhaxX9nUMNLC/5PUVUhBKS1Mx1Yhnchs8BigLKw7m8Dq2DK2Iz3fHZXxbIf2Pz/B74a/ljV38fOO73C+fhDZHTWfbTnc890R4fbjgAS02qUH6lj1Wp7Ku/FL+OX8embgn2v+r8/8v620/82K/icshf2y8VMt/3PT8g+s+L9SWIztZ/NozP85pv63tvYr7TH/jM0XLFvavKRp8aKFjeecvaBhfn1d7by5c2bPmjmjsiIwrXzqlMmTJk4YP25s2ZjRpSXFRYWj/AUjRwwfNjQ/b8jgQTl9s7N6ZWb08HZ3JSfYbVaLOTrKZDTodarCWVaJt7TKHcysCuoyvWPGZIu0txqO6i6OqqAbrtLTywTdVVox9+kl/ShZf0ZJP5X0d5bkNvdwNjw7y13idQefK/a62/mMKRXQW4u9le7gYU1P0LQuU0tYkPB4UMNdktxQ7A7yKndJsHRFQ2tJVTHaazNHF3mL6qKzs1hbtBnSDBXs5W1q471Gck0ovUqGtinMZBGPDaoZJdW1wclTKkqKnR5PpeZjRVpbQUNR0Ki15V4g+swudrdl7W+9pN3G5lX5Ymq9tdWzKoJqNSq1qiWtrVuCdl+wt7c42HvNB8kYcl0wy1tcEvR50di4qZ0P4EF9hs3rbv2OofPew5+f7qkOewwZtu+YkGKIndOEfKkZ+oYeYnwej+jLxe1+Ng+JYMuUCkq72TxniPlzfJVBpUrk7Jc5joDIaZE5ndWrvB6xVCVV4e8VDcnBlnnu7CzMvvadgW/ku4NqZtW8mgbB1XWt3uJimrdpFUF/MYS/OjzWkrZ+OShfXYVBLBDTMKUimONtCiZ4C6kAHG6xBgvKK7Qq4WrBhKIgq6oJ1wrmlBSLfrlLWquKqYOiLe+Uin0st+O9toFu555cNpBVin4EE4uwKJklrRW19UFXlbMW+7PeXeH0BP2VmL5Kb0VdpVglry3Y+z08zqM9UauFsZ1RWhYWIzdmmNwVilOtFKsFh7sUH97C4ciwYbm0pFjRwuHuCu5kshieEi4h1GntIKFmFI0RWaqoWjTG6an0kP1Cl5zhPukzgqYubdng6OwTPednu0alRYd6u0vqirt08LRG9eEOhlv76X4qYi7CD0YNk1jOMTJLzcDJhU9BM5pLrGKyO8gmuyu8dd5KL/aQf3KFGJuYa219x5V7x02ZUaGtdniXTDstRfl5lAoyD7JlQinCHiz1OeWyaunRWrozOeaM7DKZ7RX9am2tbWNqhtjKzjauCX3RxZXBSb5Kb3Cez+sR/czOajOxGM+0qiKc1VJcd97Saq/b5i5trW7vaJnX2ub3tzaVVDUMxblo9ZbVtnrLK4Y7tc5PrVjnXCOeHcfG8XHTCtGUwgrbvPzCKW1+fmH5jIp9NsbcF06rCClcKaoqrGzrgbyKfW7G/JpXEV7hFAm3SIiWpiJh0so79/kZa9FydZpDS9e0c6b5TNLHWU27Qj4bPShTe5AfcUpNu45y/LK0Dj4T+VqodK9waRNybCLnfqaIGExkkrUxMcH+aL3f5I/yxygWBVMqXCF47kfZKM72xHALd7ahzamau523tEX5nfu0lqaGS7agpPC1dPrQc1GsS0N4Hg08cGoEgRkVe2IY2tc+UaJQGHZhcgP2EN4nJe5asf/WVja0VlWK24MlYq/imwe5dyQLKt6R6LEhJhjtrSsMmr2Fwl8g/AXkNwi/ETufJ3Istrh0W6u8uIhxYiqYk9NZU0WT7vaOjmkVnuechys9OEuzgBkVwSgfXm76jLEoN1qgCu7RwZaaatEPFqgQdY0ZZTWVOJeyQRQpC0ahhahwCyhRqtUR5w2VarDXqr2ahBtXR0tlsNInHlqxoFI7r7YgG+MdGjRkUpv6TPGgnMrWOO8A7fLBWY/O2CIoCn1j5RXkcSKJh1XSJBlj0PMaL7Jqqty0R8pxlullEe0kTx3ufF1mnYZoZziTiWGpGWZLdDCqLxrEt9DmvuLO0WcYKyup81pqS7gAnm0LmtGjzC5TGa6A2UFWmegLvregq6Loo6KZKe1sqncVrk7Raa0lI7KDloyyarzdqL4ZHm+erGwSl6A53MYB8hrFyGMw77gS2jt2eVd7uhjuDvH2E/uPOffhoLLK1jMdwZm+7CzTmV6L5m5tNVl+ugLNl8nSyZpTyagRbwWw2HDafnOXiFeld2ybMtGnMde4dawXbxAlQwCBjorj43HXVopS6PJk7S772UK8SyHxmtYab7UNkykeTtFitgbnn55s6EyWCiAYzOhLMQSGIu5a7JWzncFG7ExZRKyIu9Vt8w71ig+t8miBKixS57HA9seuE4empcZdMQ+bHQ2WVrWWtooQtaY6PG3hJwUX+U5rEueCY/OgITGcYMtkd1WluwqhKZ9S4fE4cRrB7nrEqd5q8SqYTOOZPEMLVapbxRZniFQqnUEjXkz11XVeD94gQXED0eyLPurCx4Y5W1u9rUHt3JaiMJrPxLErE4TvJp+3uk6E0PUigq7T6paiu9rsiNacJV6c5Tq4tbnExOHqmyc+alpFgD67yoeZsLfGtbrzW3EFz8bbQ5dZM70KryrxRnJrS13tRAqTUCZSlWiICkZliIJ0BERvFvraZhszTnm078U+KmzSWkXPplYEJ8si2nkSYokvqCTlIVMMnk+dUSHvKVVkl2F6/dhVTlHbHVSmVYSXR6tfJqo65YJRNXi0d0j4fHW+beR7aJYTc/qzfrwc1FHlylPKEyyPuZQnw/w2y1PeYAHlL+DXwK+H+VXwn8EHwa+AXwa/BH4E/DD4IfCDLMB0yptsIDANUDtVLXAbcBDQs3PQEmdm1OcsQXmMFQO1wDLgKkCPsg8j7za0yJlb2bQ3KpmPxYJulGKDFOdL0SLFeVKsl2KdFGulOFeKNVKslmKVFCulWCHFcimWSbFUiiVSNEmxWIpFUiyUolGKc6Q4W4oFUjRIMV+KeinqpKiVokaKeVJUS1ElxVwp5kgxW4pZUsyUYoYUlVJUSHGWFNOlCEgxTYpyKaZKMUWKyVJMkmKiFBOkGC/FOCnGSlEmxRgpRktRKkWJFMVSFElRKMUoKfxSFEgxUooRUgyXYpgUQ6XIlyJPiiFSDJZikBQDpciVYoAU/aXoJ0WOFH2lyJYiSwqfFH2k6C1FLyl6SpEpRYYUPaTwStFdCo8UbilcUnSTIl2KNCmcUqRKkSJFshRJUiRK4ZAiQYp4KeKksEthk8IqRawUFilipDBLES1FlBQmKYxSGKTQS6GTQpVCkYJLwcKCd0hxUooTUhyX4kcpjklxVIojUvwgxfdSfCfFt1L8XYpvpPhaiq+k+FKKL6Q4LMXnUnwmxadSfCLFx1J8JMWHUvxNig+k+KsU70txSIr3pHhXinekeFuKt6R4U4o3pPiLFK9L8ZoUr0rxZykOSvGKFC9L8ZIUL0rxghTPS/GcFM9K8YwUT0vxJymekuJJKZ6Q4nEpDkjxRykek+JRKfZL8YgUD0vxkBQPSvGAFPdLsU+Kdinuk+JeKe6RYq8Ue6QISdEmRVCKu6W4S4o7pbhDit1S/EGK30vxOyl2SbFTituluE2K30pxqxS3SLFDipuluEmKG6XYLsUNUlwvxTYprpPiWimukeJqKa6S4kopfiPFFVJcLsVlUlwqxVYpLpHiYilapbhIigul2CLFZikukEKGPVyGPVyGPVyGPVyGPVyGPVyGPVyGPVyGPVyGPVyGPVyGPVyGPVyGPVyGPVyGPVyGPVyGPbxZChn/cBn/cBn/cBn/cBn/cBn/cBn/cBn/cBn/cBn/cBn/cBn/cBn/cBn/cBn/cBn/cBn/cBn/cBn/cBn/cBn/cBn/cBn/cBn/cBn/cBn/cBn/cBn/cBn/cBn/cBn/cBn/cBn2cBn2cBn2cBntcBntcBntcBntcBntcBntcBntcBntcBnt8KI9QrQrm0LdRroQM4e6OUAbKHV+qNtQUAulziNaH+oWA1pHqbVE5xKtIVodSh8FWhVKLwKtJFpBtJzyllFqKVEzOZeE0gtBTUSLiRZRkYVEjUTnhNJKQGcTLSBqIJpPVB9KKwbVUaqWqIZoHlE1URXRXKI5VG82pWYRzSSaQVRJVEF0FtF0ogDRNKJyoqlEU4gmE00imkg0gWg80TiisSFnGaiMaEzIORY0mqg05BwHKgk5x4OKiYqICilvFNXzExVQvZFEI4iGU8lhREOpej5RHtEQosFEg6ixgUS51MoAov5E/aixHKK+VC+bKIvIR9SHqDdRL6Ke1HQmUQa12YPIS9SdmvYQuamei6gbUTpRGpGTKDWUOhGUQpQcSp0ESiJKJKeDKIGc8URxRHbKsxFZyRlLZCGKoTwzUTRRFOWZiIxEhlDKZJA+lDIFpCNSyalQihMxjXgH0UmtCD9BqeNEPxIdo7yjlDpC9APR90TfhZKngb4NJZeD/k6pb4i+JvqK8r6k1BdEh4k+p7zPiD4l5ydEHxN9RPQhFfkbpT6g1F8p9T7RIaL3KO9donfI+TbRW0RvEr1BRf5CqdeJXgslnQV6NZQ0HfRnooPkfIXoZaKXiF6kIi8QPU/O54ieJXqG6Gkq8ieip8j5JNETRI8THSD6I5V8jFKPEu0neoTyHiZ6iJwPEj1AdD/RPqJ2Knkfpe4luodoL9GeUGIBKBRKnAlqIwoS3U10F9GdRHcQ7Sb6QygR9zX/PbXyO6JdlLeT6Hai24h+S3Qr0S1EO4hupsZuolZuJNpOeTcQXU+0jeg6qnAtpa4huproKsq7klr5DdEVlHc50WVElxJtJbqESl5MqVaii4guJNpCtDnkqAZdEHLMA20i2hhy1IM2EJ0fcgRALSEHLmN+XsgxGLSeaB1VX0v1ziVaE3LUglZT9VVEK4lWEC0nWka0lJpupupLiJpCjhrQYmpsEZVcSNRIdA7R2UQLqF4D0XzqWT1VryOqpZI1RPOIqomqiOYSzaFBz6aezSKaSYOeQU1X0oMqiM6i7k6nBwWolWlE5URTiaaEEvygyaEE8YRJoQSxvSeGEjaCJoQSskHjqcg4orGhBMQFvIxSY4hGk7M0lLAeVBJK2AIqDiWcByoKJbSACkNxpaBRRH6iAqKRoTi83/kISg0P2StBw4iGhuxia+QT5YXso0FDQvYK0OCQfQZoEOUNJMoN2bNAA6hk/5BdDKxfyC7OZg5RX6qeTU/IIvJRY32IelNjvYh6EmUSZYTsYpZ6EHmpze7Upocac1MrLqJuVC+dKI3ISZRKlBKyzQYlh2xzQEkh21xQIpGDKIEoniiOKtipgo2cVqJYIgtRDJU0U8lockYRmYiMRAYqqaeSOnKqRAoRJ2L+Dus8l8BJa43rhLXWdRz6R+AYcBS+I/D9AHwPfAd8C//fgW+Q9zXSXwFfAl8Ah+H/HPgMeZ8i/QnwMfAR8GHsfNffYhtcHwB/Bd4HDsH3Hvhd4B3gbaTfAr8JvAH8BXjdco7rNUt/16vgP1saXQctma5XgJehX7L4XC8CLwDPI/85+J61LHQ9A/009J+gn7Kc7XrSssD1hKXB9bhlvusA6v4R7T0GPAr4O/bj8xHgYeChmCWuB2OaXQ/ELHXdH7PMtQ9oB+6D/17gHuTtRd4e+EJAGxAE7javdt1lXuO607zWdYd5nWu3eb3rD8Dvgd8Bu4CdwO3mbNdt4N8Ct6LOLeAd5nNcN0PfBH0jsB36BrR1Pdrahraug+9a4BrgauAq4ErgN6h3Bdq7PHqi67LoSa5Lo+e7tkbf7rokepfrAjXDtUnNc23kea4NgZbA+btbAucF1gXW714XMK/j5nXOdePWnbtu97o31/njDNFrA2sC5+5eE1gdWBlYtXtl4H5lM6tXLvAPD6zYvTygW56wfNly9dvlfPdyXryc91vOFbbctty9XI1ZFmgOLN3dHGDNk5tbmoPNumHB5veaFdbMo9s79u9pdnYrBfvXNltspUsCiwNNuxcHFtUvDJyNDi7Imx9o2D0/UJ9XG6jbXRuoyZsXqM6rCszNmx2Ys3t2YFbejMDM3TMClXkVgbNQfnretEBg97RAed6UwNTdUwKT8iYGJsI/IW9cYPzucYGxeWMCZbvHBEbnlQZKMHiWZktzp6k20YGJaegJc/LCfk6/8z3nV04dcwad+51qnDXVlar0tqbwokkpfHHKeSmXpajW5BeSFX9y76xSa9ILSe8mfZmki/cn9e5byhJtie5E1SHGljhhWqnGBcXE/QdpY3UlejNLrQ5udbgcSsmXDr6ZqdzNOeM2kGpCmb3c4SpVH+Li1+n0jPPL2TTfuHYTmzouaJo8M8gvDGaUi0//lBlBw4VBFpgxs6KN80srtd9JCCaIXyrR0hds3crSC8cF08srQuqOHemFleOCLUL7/ZruEJqhSKVvztLlS30V/hHM/p79K7vqeMT2gk2xWrnV2mFV/FZ03hrrilXER0es6o/tP6TUanFZFPHRYVET/RZ4xPh6xkyeVmo1u8xKoMA8yaz4zQVFpX5zdr/S/2uce8Q46cm+ZXPwMWfpMp/2jVQlXy6SPuEV30uXIS2+lmtp5vtFo2KguUthy6Rz2S/X+nc3/mt34D/f6Dd5RnUom1itshHYAJwPtADnAeuBdcBa4FxgDbAaWAWsBFYAy4FlwFJgCdAELAYWAQuBRuAc4GxgAdAAzAfqgTqgFqgB5gHVQBUwF5gDzAZmATOBGUAlUAGcBUwHAsA0oByYCkwBJgOTgInABGA8MA4YC5QBY4DRQClQAhQDRUAhMArwAwXASGAEMBwYBgwF8oE8YAgwGBgEDARygQFAf6AfkAP0BbKBLMAH9AF6A72AnkAmkAH0ALxAd8ADuAEX0A1IB9IAJ5AKpADJQBKQCDiABCAeiAPsgA2wArGABYgBzEA0EAWYACNgAPSAblQHPlVAATjAWC2Hj58ETgDHgR+BY8BR4AjwA/A98B3wLfB34Bvga+Ar4EvgC+Aw8DnwGfAp8AnwMfAR8CHwN+AD4K/A+8Ah4D3gXeAd4G3gLeBN4A3gL8DrwGvAq8CfgYPAK8DLwEvAi8ALwPPAc8CzwDPA08CfgKeAJ4EngMeBA8AfgceAR4H9wCPAw8BDwIPAA8D9wD6gHbgPuBe4B9gL7AFCQBsQBO4G7gLuBO4AdgN/AH4P/A7YBewEbgduA34L3ArcAuwAbgZuAm4EtgM3ANcD24DrgGuBa4CrgauAK4HfAFcAlwOXAZcCW4FLgIuBVuAi4EJgC7AZuIDVjmrhOP8c55/j/HOcf47zz3H+Oc4/x/nnOP8c55/j/HOcf47zz3H+Oc4/x/nnOP8c5583A7gDOO4AjjuA4w7guAM47gCOO4DjDuC4AzjuAI47gOMO4LgDOO4AjjuA4w7guAM47gCOO4DjDuC4AzjuAI47gOMO4LgDOO4AjjuA4w7guAM47gCOO4DjDuA4/xznn+P8c5x9jrPPcfY5zj7H2ec4+xxnn+Psc5x9jrP/a9/D/+FW+Wt34D/c2NKlXQIzYclz5zDGjDcxdvLK0/5GZTI7my1lLfjazLayK9kj7E02j22E2sZ2sJ3s9yzIHmV/Yq/9N/w9TKedXK1fyGLU+5iBxTPWcazj8MmdQLs+tovnSqTide5Tng5bxxdn+L44eWWH7WS7IY5Fa3Utysvw/p2f6DiGVy7SHYNFWtkCbdVqfG286eTdJ3edMQdT2Aw2k81is1kVq8b4a1kDW4CZOYc1soVskZZahLz5+KxHai5K4XrR9KlSi1kT0MyWseVsBb6aoJeGUyJviZZezlbiaxVbzdawc9lati78uVLzrEXOGi29CljPzsPKnM82aEoyeTayTewCrNoWdiG76BdTF3WqVnYxuwTrfCm77Gf11tNSl+PrCvYb7Ier2NXsGnYd9sUNbPsZ3ms1//XsJnYz9ozIuxqemzUlch9kT7B72F3sbnavNpc1mDWaETkv9docNmEO1mKEG7v0mOZvZedsrcfYxdhawyNdBf+GLjVWhOdRlNyIktQKrYNoZd0ZM3E5xkD61IgodbU2/lPerrPyS145H9u7zMwNWkqoM70/p69hN+IE3oJPMatC3QpN6mZNd/Xf1Fl2h5b+LbuN3Y612KUpyeTZCb2L/Q5n+w9sN7sDX6d0V0V8F7tTW7kga2MhtoftxUrey+5j7Zr/l/J+yr8n7A91evax+9kD2CEPs/24aR7Dl/Q8BN8jYe8BzUfpx9gfkRalKPUEexI31NPsGfYse4E9jtTz2udTSL3IXmavsNe4Beol9gk+T7AX9R+wWDYKP/7fj3nezuawOf+dt9uZpk9lDraj40jHyo4j6hhWz6chgLwDq7SXXYKf2BedKsldLFr3Pktgezu+V2eBe514Q99w8taOL5ket+ZS9WXcciozsnw2gU1k1wYv8FU8yCyIUhLZUH7PPY7iYlO28WFEIApzI4YxMc6L/FadYrkvNbXAe98gw1bVXtbOs/cWGLciOi848c6J53NOvHM4Lj/nMM95+9A7h2xfP2/Pz8k9dPBQ/35Of0Kq5b5GVB3kva9xkGrY2qjaC0R9f1RjgV8xbm1EI8kFvtTnfc/n+J73oRlfv/6V3O6xa0iIVYzGBIO3e19lUM/Mwbm5A0YqgwZmervHKppv4OAhI9XcAd0UNUF6RioizdWXj89QJ50wKOu9BdNz9d1SrQkWg15JS47LHp5hK5+ZMbxvulE1GlS9ydhrSGH3cY0l3d8w2tMdielxJlNceqIj3W488aY+9tg3+tgfi3SNP16lGobNKuihXhdtUnQGQ3u35JQ+wzxl063xNp053mZPNBnj7DG9imed2OxIE22kORzU1okJjLM7Oo4ZfJj94exVMet+W9XIppGKpV+/pJyc6L7JyantHR/vsfEJ4K/2WMNs0fj7PTEaf7zHLFix+7v16B8TE52M4tE2q/hAweholIpORpHo+/FjF+vY709BgvUYPMWcnGTJSe7f1+DqNcUViAvoA6wAFpeUb88t4DkHfYe0d/wAe66tU9nzR+Tk5tpz+/ebjWX8yTaSTzWCRcuQS2D38lhVqJ7ca+90DhSr101J4rkcSyakw+AzJbhSkjzxJuVkrmp2pCc4uiWYlZOjuSnBnZLsjjdmORvc/XokR/GVer7ZnOrKTFlodcbHpJpijHq9Mcakm//jVcZoo6ozRhuwRNs6/Tv79IhJ7eU8fpa6s1ufFHNUfLoDW/oWxtTjePvHMRcbSXs/Hj9BM5aqJPijopKPxtY6j+rns4LDBdjN4S0cE5t8tDG2Vu882ogsbNYCbYuKgXm7Z2oD82A0xoF94bCLHaoeL2t9auuPCT16JHB766Mbi4O9Alsar7i8fnNlluK65NnNo9I96m2e9JJNj6yfesn8oce/6F93rfirbNG/WPQvi1WI3rWl9mxHxxKi3PHueBaV+kNmpiHliKW25xED9ZFO3XP5+Tk5tkMDRGfjM1N/aEQxS8qRRkutoeeRRkO4z+Gjpa2Sp0u/HZrDfoZEN4xmw4mPxBiUOKPZqEPaeLKKzzeaTapqgt7GdxngL45LtRtpPEabMy4uxWo6+azRlhpvT7EZT95utKVoI+s4pq/DyPLY2WJke7Mc2T2T23mHP6q7JSc6O7v7wGiRsrPug2qzE81qemZteoOtQd8gN6rYpocGxGFTxuXnY7D2/HwxXuuZxeWePHNHGgz/cEcmOvR1xnh3Uoo7zqicvFjn7YVzHKWe3KYY49wpKa44Y2ZyoyvLg+3YW8cHxKR4eqfVp/RIkrOjrjy+KSZGNUQZ1LXHL+r0PtndLbbiiYHKU936pJrd3cXf52M+1O2Yj1zmZ7ViRvaxaMWxt7/NZx8ofvkkc5hdLL01zWf/cNiwpPzv3bVJ4dnQVj0f23PAwUOYi1e1TRrnG2b/sBEl3fnfN4bLiqnQlj2/y1z07NlX9Z4+CXLpjd3UpKTERLXLRt5ucmSkOT2OaHW6tUe/UQPnawfTk2DCzk6tumBmv/RB4/s7szM8tspo4+eOfuP8V186cuKAlHgjJkGNijV/06c4J/XkpM7JeMaTnlk6f9TA6SUDbGZPP3+vT1JTlHe8w30pJ+9KyRF/K1jW8YVyXDeAjWObaF4Klbh7MgdmDoxNF79rw2L7tXOLPyp/5NH0Ir2vHtvGfq87vl+8Eo/9ZGnTL8BL6eDswwWYmhMHD4tdEyfOh5iltnytrqUx3zfyaKNWPV7U39MYrxeVQ42ojcNywCdqg+Q5797XIF8s9AbqTBsc4ZkUryRHQjeDcnxY/aXluXPHD7IZ9YqC02LOLq0enj1+iMtXOmP2jNF9Bs5aO6bP1KL+sVp+lDGq94ipuT39WclZo2fMmTE6i/ccu2xSVpwzzWa2OWwJ6QlR6d70xN7DMnuPyMnok1tSPcq/YGxvW2KK1WxPtsWn2k2p6amOjNx038i+PXsNKJ4jzlsa9tdI7C83G6rdJEyH7bQn0aqztfPYPc7aaLGVDg/gOQe+fhwzE9I5RcbeRi0HG8c3QBu7AddB51bxyPerdkGMtMaePBQV50lJdSWYTh6S14LysVhr9c0Mz/ENnau+3mTHzeC0G412p9j9VR2H1e34CS4TcciD2tvQVTCMm5354j2WL95j+Tab+MC7LV+80fIf4EdxTed0vCdeiTnhV2VO+FWpcUzYbxasRPuj4z2l5vyeTl1sH/GPqcljB7Zz3Z7YCfrxYuQ4RdqdQq+7g+G3Xr72souWFZNFzb2NyWNjRd29jVplMTk4VmfcMIPofqFdkZhkD+8Wh5qZGd4Z2s4Zom432tMSRHwwetvMmkvO6jVg3hVzJ230GxNcybh3onYWrSsuqBiS4hg4fZRnhL+0ZwpeaZjEGNPKCdMnbGybt+yBTaNLihSz0SLedBbjiZLys4bPW+sv3lA3Iq5PUX/M7mzM7jb1aeZjA9mn2uz2yRlcMHjxYDXejdmLd2PK4uM9WTZMWZaY3Swx7Vk2q42Pz2rnR+8p9t3mU3yY1HtQ0jdQ107TDv5CTLOWNmv88V5RSSfm2+PJerJFd7lO2a/jL+q4TpeW81bm2ORPq2KbYpXYqE/TJoQPpri/Zi9pPhye/AFv+2ZrQtxUPm0BuuuynmxcobWRmfNWY+bY2ORPG1msLVaxqrFpUZ82oi1xTOfOmU0vttk+uVvD85xLV5qha0jo6DlYWwujuq1nyolQt9KmKf7aspwYvOdURTWaB09f4l+8q3no8CU7as6+uip7p7p65YhZI7sritLTM27V9L6OVIcxNiXOEm+NMackx49c075m2b7zS4qX3lARv+GqvuPrhoiTt63jmLILs5/LNmtvuqZBPNMajuGs4Q0K/kqbOWs4yLO28yP+OOaPR7zmt+NDLBRLxeWU4Y/yjc20OtxlDrFxcS+J0OQA5kubNG3Htvm0gtGNp0omU9EuN5h2Qxm7XPzhWXFoAbRB2aUYokympPQejpR+/4e9M4Fvq7oS/n3S074vluT9Od6XyPIax0kTy4siJ96QHSehIViWZFuJLCmSHCchpAYCBEhpki9Am3Zoysfw0Q0opXwMQ6lbUtoyhELLMJkW2pRSmra4k2Eow8eUZM4970mWneULmXZ+LSPd5q/73jt3O+fcc++VatHUWiw38jswqTHPasnXy0qdrcvzNUUl+WpWzIhHLQUGhUIhN9t7ln3wiFwlZ1mAeJ9cpYCwr5Lf1NxZrhPLlUqFNhd0ctW5OdELoJNuRo/+qK5dt3pd/7pPrHt4ncQpqMAp6MgpTGon/QbSJFzrhXcVfWdebSssqS+pV+dSv82l4SKXhotcvYoCyuY+ybyLG2AlXBB1G9xX0y8/y6C+1eqH1SK1/bVlyt8ZBgwjhqhBvMywzGBZ+VNnrqRyreW0pJfurUB7cwa6cFyjn9ODxq+BKCFsk/n1hP9YDP21dJn9tZBB+bsQMegNnEGs5WusXPnTENYpsZwOSdBlcV3BaqnvplmHvez15YWGLTf2OTZ0OSxKFvZfqurVwy1VnfW55W0D669qK6/0XOcpcbdWZsnEYjHsihVLmrtrq9oqsyraPOsH28oZbVcIvMSabS4pNOXoZblcrrG4ubSssaJwSfWq4ZVN3u4atTFLr9ZZ9HQHZ8m2mIodeeVNFdySqpVDhLemZFISIYfJv1Frfou0MK+SANkMOneSKHPqsZJK03U3QyBpa9Vl6yadAadJpzM5A2zvDaT3Onfh3JSrZfNW17rfeQY8I56oR2z32D0bGn5QtnXthtOu3pt1c9nu2yDgfk2BlpirBzSkjGHAKUC3g8chCNfCy7icnlvq9T97+Rd6SHQ71Hide6pwLsQ35FkHlvHoPZwHLINtbW34QQhac204HYL2snVzoWy3gjb5aEjB26m6HtAwbypstVoI+VJhUwm7aGqlhqbGlH1Ei+2VdUn7WqxlZan4lMVHLSndnlmSUUwyKYLoX1hRa1njbyu4TmeUyDXy3dn29sqKDkdOcb5cTLcQS5rWphv50i6ydGDbquxqo8Xq2HzTkGfPUNWbco2CNep+3ey2lOaZZVK5lP24wWJQqXQKaem6eJ9Iy5XAPkO2duWGZbl5da7KtrV5XMEFvKP10r7V6u0qk0pt7rL2yFV2+/AN67fIDDmmEu6s8pprFUqFRGsD7yo69y+iSfarpJXchvGzkhiKlwoxYakQK5YKsWKpsBFYKsTVpTSMqq2apXPF7nzNnNVdR91IxrvRCRo4G4SV/sRxPC5B1XMhkLW2WTVzIatbVodOIBOcIEd/YrVwaGLPs/mlrCaalOu5SrvV5W/L38vb7Ho4WtAlXv5ruRq1vWyNtSTPLJcoJOzH85fotQt1/YoMpFiFGjIX1BH7EnsSJt0DVEeP1jq19P/VXN23kc66Qk27Jg8SaaoeIn1up3vFCs7tcIvcG7XVc01uIx1iae/mNNXAHKs/fs3y2tUwrY7XNmCA4+fUL+prqZ6y+WqIW+8WqcTupo3apuq5UJO71Igbo9Je2eYFioP5U6+n6zOtc4ECi9K0lHWhqZRUa1FqhTJcSMPsS3JDQSWdFasLzjrTdAlLua6g4sKqZ74lhxwsa/I30QjaXzevAZfPApenRijSa5WCEebVbTSYDRqN5mLWYZjkZw5nz51nKRFxi74r2i01kBLSRK5GWymym/6e2Qib2aXMbW16Q+FktkJc8Yhle/1n1QlxXNibLse9KRx48ZBrQiFLxSMhy3Z1/WdDKCjsQ5fjPpQRPiO7rG1o8zLR7uwig0UnrfWubP/48hzOee3qOk+FTJdjNufopfsr1lSUNBbq1AX1ZSXddtEbag0Lh1pnbV1tf3ClK95fXVbG2CVyVixm5ZKzg3Y719hRXOJqKqpuorv7NTDmsCSXlBI72YOnDztL/0Qr12DILXuC2dBmJbmmI1qtwn6Io5s8W+VhbrviLlsi+ZnG9tTHifAufLBRqDUdCUEZ1n4oRFgmVwzluMrDIW67TXFXCMomP+Sg0Tr5MeKCHaElC52w7Lz9oCicYzp7yFjZXle2ur5IqZRrl1TXLePuuqt87bZOF/jXrWxXZ3FjiUnEkpzs8o9VWVQ6tSknL1urVkgO3+Xa3ldV4drSbHCts1Y0FtAVMiT6B+Yl0MBS4qLj//qSHKKjA1fnKI+Xb1+iyyqIZsXnd3P/etyIdtaUK4+H5p9fxh6umQ6L38GxzEuwUkjkKl2WQZfHFVsket6c2cXFVltVWbFJW2SRgb5/ZLDB0VMqUdkq8s8+CIZlqXVFNjW81hRWWOWsXKq1wijaRd9l5mAUq8l+/iS+nBn6BlfD1aizn2DWt+UTddWhU3Vn6kR1zYezl0tKtysPzRpeNIgMlsOSRPop/JqFx/C20rqqQyGuzgElS5sPh7CsQXkIt0/gqwaJ5XBIkpjf4uNh/JoL75aaYTFNXrLziy+su6CRuZLVm5q4FfZCtVQskbHK/Irm0qWrqlZ1r67kll9VX9BQnqOSwBOJ1FJSW1hfXb167eoq8XR1+1KbSqdTW7M0JrVEb9QtKc8rslor2prKV1ZbFGqNEp4Y1BKNXlOZU1Bss5SuolYvBn09LPkCqSfDaHVSXFhOra436VSFkfJ7slX3mCLVn5Hxfn6C7mFOwPH7H49TnWQVRkzl94SyTW0m1T0hU0RW/ZmQLJFahqr5Wc47MB8umxcuQpb5CNmMn4A/LFVaCop0I0N9KpVK3SsVZvcdcKW6g6vKKZOyUolIrLfYVLDgb97ClNny82zXSyAUsoDrbXn5trO/r6vXsSojETHKc+8yr0q2kCxSSUrp+L4hKc3t1bvAjV97AUbwuKS0Da/BbXNeeyHNaZvEZUI3TYs/pf+mjH5KnmeUGRh5VnFebnGWXKvIrigsrLQpFLbKwsKKbAUzJVfT84VaLn5SbVRLpGqD+j+WF1XnqlS51UVFS7NVquylNO7MnZtjHmavxR628J/uWkR+wpEs0fLHVfoq6G+QQGf1x5Of7T5Ob7bl0g99cuj9tE6Xixsv1um7ZLrcLEuuXsoYpKaSvNwlJplCYSnJzyuzKhTWsrz8EouCaaIfS8MGXCY6p9YrJRIIGX/k8sttKpWtPD+/IlupzK6APt8hHhMdlUylazW3bI1+DWj1RD1qNbcNr6lWT9Qv0KrQH9miO5Ys0U1SvdVotOmkVqW5yGorMiuYs7cuuOcoE9+SVCvzw2TubN3Ce3o9IXoyRq5mP872ERnRESspJOWkliyDqLCG9JMN5FoyTiJkmnyC6cGzXXhgIjQUatm5Z+WeimiiJsGN+Ev8cnePuoe0dbKdekejuTG0J+Hv6Wxs7OzxJ/aEZHkbN9vy1sZ29O1o373Xtbd+a7g5nHP1loItRs+wZVjUukq6Slll19p37A1vGV5lt68a3hLeu0NWNja6pIzUnqg9YeAPArW4azlRf2kwtITxw5Sg87PlyvrXVkZstTkftoto5uIlTY0N9eXCu0l4twrvyeeyRdeL3xc/l1kWXpcuqj/ZnvhlR2Oj4wjFvzfUNdSV0NzZZfXw+mpDXV2DyEP5QQ69IbopJfvBQ47G+voSpq6xsY75Hn14djPlv1PpIzQnvhvggKuz/9TQUPdzuGDugcwwre06APPN+tqmD9yQu8vhaBRxgtBZGWRO02L/3OhotEPm3Dlyp+iH4p9LTouk8ln65WfymqwgI7jvWJpN/xin2KGkb6S46QnRzd+wW1XiggqaK4gb4pJ4+hcMc/X6OWrtvyNNF5JM/24hNenocZ8PGMWm875aMDWYkl92iX8u02dnmXK1st8wCp1Fp7doFcyrDCPT2+CuTlZgclm5bL30B+Ify4xZ2ca1SpNaIfolLFvwkklEbR88JabxmpWykH8mdf+VnCyowvDB2yKNMUcnlagNmgW/DKymmshFbNrkAC2de1L2KZFD9gciJvKvQQiqbXDUiYuyilyiHR/cLvvDGJb61l9GYm74q0gv8Um06k+cnr38JB4U0rvzie36b03v8Eny9Y9ukn6MT7KS+SQfFNKvLpUUT/65krJR+Y2LJZVN9Yi6MJMy6SOQogvSc385CT9ty6RM+ggnbfCK0/ZMyqRMyqRMyqRMuqz0biZlUiZlUiZlUiZl0kcr6dhMyqRMyqRMyqRMyqRMyqRMyqRMyqRMyqRMyqRMyqRMyqRMyqSPQMrKpEz6n5v4HyiFf6uAcuIgYrgsYI6e+wNzgMk59waw4NyvgAfPvcYchPu/YY7CfcqCc78FHj33S6xjqWgJUEyzIj3eEWPNWryieRHRso8IeTEpYZ8W8myajITY2NeFvDTtvozsYN8X8nJSJdkr5BWEk90o5JWiYyl5FRmW3Sfk1aRK9p6Q12il8mQ/tWQtyAh/lcfILRVCniEyq0PIi4jMNiPkxcRmu1XIs2kyEqK2fV7IS9Puy8gK25eFvJxkWWqFvILobW8KeSUzkJJXkWrbu0JeTbKyi4S8RibObhbyWlIKMmLCsAronFESFfK8nvk8r2c+z+uZz7NpMrye+bw07T6vZz7P65nP83rm87ye+TyvZz7P65nPa7Q2brmQ5/X8RcKRevCvOtICuV78tegYiZA4/BsjCbjXgb+yzf/WthfuBCEXJnZ44iQhSBzxwL1xMgHP4ngVgPcASO8A+kFSQ9yQG4U7ATINEv1QWwDqGCK7MMeRHqh5F9Q7hS2GIDeOPeHgXwR/pzqWaoNL9dlBGiBXlrpaRmqwfS/UEAVZDtr1Qju0Dh/ZJsiuhasJuEufTkH/4qnxDOGvZcexBxfrzxjqgSPtcD0KT+hdL2ph4Rj5eiLCSDlsZQqe+nC8Se1OQ9kY3pkCKT9qjYP7E3ivl3RDn6h2glgujHpdgeUDKBEgk9Am1bIfyQk9SspyeD+ONg1CX5LWmx8HfZ6AXgShZBy00IGjCeJIgqlxeOHfJJTge8iPx4ttcIKtg1AjrdULcrSuXXA1DbkE2oH+Dvso5EPYpxjqgo6X/s77uKApvtYEjolvM4wj8mFPw9hKHO3UjVYZgzte/J3xGI6Rw3feFkEcE6+LOHpFHGr1Cv5KLRYV7idbmYR6QqifqNDLMNyZxFb5OuOoqfke0BajOJbk79DzuuX7HkKvoZ4wIXgu7RX9zXX6W/YJvAqjrZN+zeuMb4W3Y1gYVwR1O4qS8z1OHxHV2k4sx496G1zbce6mW7Mca5vEGnahHqaEWZqu76T3hQVPpuPn7RJDb0j6aABtTT03mhoN38dxQSYOV7uF2hMwCt5CO1JW8qKP0BkwuWBcycjjg554sX2f0L4do8s42oo+OT9etZ436mHBc5Ke3wy11EPkuLinJ7BNP3oibWVbygbzM/P8ODku+HU0JU09l7d4GOQD6Dv/PfFWmYm4fzURtwd64iMVOMsqheccWYNeEcGeJSDReNVKaiH5Ube05OR53mMXfK4W8rvQh8bRi6htdsFd+l/b4HWcrJWvM4R9oD0Yw97ycY6v60I+Gkc/j+LYeS0ky1GrbsI2+EizCzXNayaRsnZSOhkXfELsprO8BnVA5aKCV6TH6SjqNSzEB76WgHDtFWJyACNKEEfI924U+5G08mKLJYQSvP/EzrszlhpDzWVFAn5V8KNOE8Lqw89Pvt2aVDuLR8BH0Wnhv9oxcRGdTQsjDeJMC+Gc4mf++bqnZfiVpQLkKxd48IVr5/twpbpNnx/86s4J63MCLedbsE4uHsH8qri4XyvSfICOhB8Lv1tIxspYaufhx7U3jHHEe9GR8r7nXeBVfDyICORHxeencL7w8cmP61hQiC18PVQyhNH/4j7KR/GwYJn52pMzJJi2q5jAeBcU9EyjugbjZUAYQ3KHkdTyQq+uQct4Me8nyf3V4ji3eCZULIoLAYzT07ijCKL1qVW9cI9qaBwkks9qhTqvXRQ7K4XZOx8t5ncDyd58mNXpMlcDLm9RHT3JOrj8lDfT/yoOb6ek1/C7k5Cwisx796VWuKRXXnyVo5YbSM2ceNpehLc37wUBoS0+YocFu9fgmGPC6pPcV/D7onHBzkk/5v0qKux3+BYiuO/24jiTnuIl86v84nj2Z7BFSkNeHDvVW1CI9X5hrvqEvXYY+5q+ZgZxNx5H3xT6eHHbQn5w4ToP1q5M05E/7YSQPh8uuz4yf6pJSl84utUsim5J3S8uHcJTQXDRuJP9mt+Dzc+a+ZUoacMakjyd0VNY8jqQ5iFRPH+F0N8m0lZYvtej2JeAsFJNpWyZHkt4G9YKFo/jLAml+pCc1wt96fK1mr7C86NMX2kW+vS8JqZRj5NXaMfkajCFp0teM4G0HviRtM15vWwFCV/a2pG4RDzmI78fR5Bc8VoXRHF+N7YD8xfadYdxjUiuMunns+Q6caGYsrBUHGMFb6tRYdwXXnO9F7FoLDX6OHppGGvnZ9H5J98r9YDk+uYmXfi0n7jgagOslh680w33OIiiHngyDFedcLcT7pSDxKDwvBwttQHXITfIrcc1jq/DA+yD600Y41yEw2t6tQ7k+6AuWraLbMQ2uqC2QZT0YN29cLcH3rsEOVqiA+6sh2uaX4NRkG+vD0rxZ4huYU3kezoE97nUCBf2qhtbTPasF648UL9beOqEuruxPtp/2r4L832pfrqEnjpRR7RmWmcH9KgHr+jd9fA+AHKD2L4Tx8z3tg/H4ILn/Fi6sAe0ZbswVl6O6mdYeEJtRPvXA2l+VE7UgRt7M6+/DngfgJ7T+tfA0yFcIfqhZCeOdBC11yXojI62B6/mR8VbqgNHQ7VKddAJ+V74tyalOw+S74snrbaFutuAz+el+PE5BXag5vrxirdGB14Noa3o0xrBlh4cx+JWN6AndqGUE0c8mPIQF3ov3/ukd/Jt9Kf1hG+P2ja9L0mv5i4xR/haks/XC5Y+Xy9U607UCe3XYKrli9UMc/OLXL2jroXrDfpikXhkLMF1RGLRSMybCEbCds4ZCnGe4PhEIs55AvFAbEfAb9e4A6OxwDTXHw2Eh3ZFA1yPd1dkKsGFIuNBH+eLRHfFaAmO1uxo4Mro27IazuMNRSc4tzfsi/i2wd21kYkw557yx2k7QxPBOBdKr2csEuPag6OhoM8b4oQWQSYCjXLxyFTMF+Bod6e9sQA3FfYHYlxiIsD1dg9xPUFfIBwPrODigQAXmBwN+P0BPxfi73L+QNwXC0bp8LANfyDhDYbi9g5vKDgaC9I2vNxkBCqEdrzhONQSC45xY97JYGgXNx1MTHDxqdFEKMDFItBuMDwOnQLRRGASSob9oIBYOBCL27nuBDcW8CamYoE4FwvAKIIJaMMXr+Hik17Qq88bhTwtMjkVSgSjUGV4ajIQA8l4IIEVxLloLALWoL2F2kOhyDQ3AcrlgpNRry/BBcNcguoaegZFYIxhaCsyxo0Gx7FivqFEYGcCCge3BeycMMzyODfpDe/ifFNgUr7fVH1hUHLMC2OJBeNUowHvJDcVpc1AjeNwJx7cDeKJCAxoBx2SlwMDTPJtUefxTXhj0LFAzO4JjE+FvLGUX7Umm26l/tA0DCqiJmi21zcsUH0i5vUHJr2xbXQcaNKUZ46DxqP0ti8Cww8HA3F7z5SvwhuvBCtya2KRSGIikYjGW2tr/RFf3D6ZLGmHArWJXdHIeMwbndhV6x0FP6OiIBma8nnjY5EwKByk5huLT0WjoSA4Dn1m5zZFpkBju7gpcKEEdVZ6myrCB6ZNBGo4fzAeBQfmDRqNBeGpD0QC8O4FMwZik8FEAqob3YWjSrojqAr8JhJLZsZoCzXnjx38wD/lS9RQd9wBZWtomWQDYJ/piaBvIq1n09BoMOwLTYHvz/c+EgZPqQhW8tMiTRxquFRv+VkEvg52jydiQR/vkMkG0A+Tda1ADVQEoRWYEzSUxOjM8Uemw6GI179Qe15eVeBZMBwwH81MJaIQBfwBOkwqMxEIRRdqFOIS+C4vTg0SxHkyERwNJmh80gxBl8cidLbQLguqruFGvXHoayScihRJI1QIvhAI26eD24LRgD/otUdi47X0qhYkrxViSiWYF90C5wCt5sJB8ELB60eCRA+V+DFV89YIjImqBuZSCAIbqnthmKSqXBAoNZoBapw4Th4YN6ggAKXAsUEz/hpuLAZBj04RmIjjMGaqY9AVWBSKc5FRCHZhqhQvBuqkn13+KGiHvPF4xBf0Uv+AeQYhK5zw8vE0GALNVNAaF4yWGxQi9Y8rsUd+jIa8HS4oh3GW3k5ztxrB3Wjvk49DQfBTvm1aV4xfqaAFnER0hDU0lgfH6HsAFRKdggHFJ3DCQtWjU3TyxulNwUtghLUw8HiAhuhINMhH1It2lZ/w0CQ/aQRNYyemJyKTlxgjnQZTsTB0JoAV+CMQQ7EvWwO+RNLB5v0YnN8fxInXyrs4hLEdgbQFNxxJ0CnDB/OgMI15TxEexSfoejAaWDBzvWkDjdHm4wlwpiCYKLXyXEoBdL65u7jBftfQBqeni+se5AY8/cPdnV2dXLlzEK7La7gN3UPu/vVDHEh4nH1Dm7h+F+fs28St6+7rrOG6Ng54ugYHuX4P19070NPdBfe6+zp61nd2963h2qFcXz+s690wE6HSoX6ONihU1d01SCvr7fJ0uOHS2d7d0z20qYZzdQ/10TpdUKmTG3B6hro71vc4PdzAes9A/2AXNN8J1fZ197k80EpXb1ffECy5fXCP6xqGC27Q7ezpwaac66H3HuxfR//AJk/3GvcQ5+7v6eyCm+1d0DNne08X3xQMqqPH2d1bw3U6e51rurBUP9TiQTGhdxvcXXgL2nPC/zqGuvv76DA6+vuGPHBZA6P0DKWKbuge7KrhnJ7uQaoQl6cfqqfqhBL9WAmU6+via6Gq5hZYBETo9frBrvm+dHY5e6CuQVo4XdiuyXwtkPla4EPoNvO1wJ/vawEl/st8NfDX+dUAb73M1wOZrwcyXw9kvh5YHM0zXxEs/IogqZ3M1wSZrwkyXxP8xX1NAHOT/1sDQs7ZyC3kQi8GJBQgmEVk584RHREJ/w99wlTAe4vwdw8Xf3WK71GrGZBhRi5XXqNB+U9frrxOh/IvXq68Xk/lRfLLlTcYUL7tcuVNJpCHd0L/YoFFeRbznVA4h2iYApLDHCClzEHiYI6SFeK1ZA1ID4HM5kXlRtLKZUG5Yihnh3LLoVwnlLsKpK8FmfFF5b6XVs4K5cqgXD2UWwXl1kK5jSA9DjLRheWYZWnlsqFcJZRrgnJOKNcL5T4O0ttAJrGo3JfTyuVCuRootxzKuaDcIJQbBek4yOxZWE5UnlYuH8rVQrmPQbl1UG4TlAuC9HUgczP1O7mckSufeeZv4fWZz8gljFwml+/cD6+dUgkjlUX3vzczs1MqZqTsqRn6krKMVBqdmXXoT8lYImPbzrTByyFnGDmLAjNkRixm5JJjx47JFYxc9e2Zb8/cB+kIpP2QFBJGAW0kG6HVjRw8MzMTpVnJI7OLGpGzRM62Ca0oGEYhtMI3o6DNKJSMQj0Lry+0faHtMKYDkJRSRilnWTZxYN++fQcSMikjk+/ct++PMzN7ZCwjE5qaoXloa2ZErz+lYIlCIjTW5lAyIqUk1doMyzJK6UF4KVWMUjM7MjsCbR87xB3iboe0D5JKytD/svn/v0kJI5PthCHL5WcWNqliRKpkk0KbKmxTpWFUulnbrO1YxbGKg+6Dbqq9m+U3y2+Uq2WMWiGCV6vrRni5WuVSRi5v6aTNdrbIWUYuFdqdQftG98NY5fujSgmMp63tPWy5rUXNiNTSmYVtq2W0bbWWUetP5Z3KO7PyxZqToZOh7/c8//zxA9878Iz6GbVGzmiUYnitGH+GvsZXKOSMQrFy7Nlnz87Ojq5Ec588Ncu/FFJGId95fPbUzjz1gZ0qCYxuZOS9Ef7VohGJNNLZ1IvMzkqkjEb+PH2lxQgaI0X+UHhcyNvjfH6Y5p0x72gN54xNhmu4jl2xUA23JhDZhowBYwHI00/oa7gebyL84aSxB0qx0rqHSL1QkpR5oSRj80FJpnUcpJmfTIC0SBsCaVEjySOsy+mBw29vzybY7g32dXLk3vUe4LOwOpwjZiIjuaSKfAy2VnQzFSW3k0+TvyFPku+Sl8hr5Dfk9+RfGMJIUNoIszqPVJNVsCANwmZwO7mDfIbcS/4eavsR+Rn5LcMwUkFSQfJh8VwNS+gQHo4PkKPk8+QpiGE/Jj8nv2NEjAwlDbAKFZClpA2WtfX4dyifJJ8lx8j3ycvkFHmLgZmMciaiIoWwvDlhwbsKNE233neSz5EvkG+SH5B/JL8gcwzLKDAmU3k1lGiEDcUGiL5TZC/5FPkyOUPeY5RET0Tt/YMcaRv0tNOtMZXOAs1qgEWkGeLWFjhETJMZcoj8LfkqeYx8i/wD+SfyS/I2eZ9RC/L079DMsAA3wdJ/DWyWd5BPkIPkfvIV8nXyNHmOvEJeJ/9K/h+jEuRFREssZAlZBov0tRBtd5IbyGHyAHmIfIPMkufJSfIG+TfyH4wmNYIsWKPpf7+yGNYnF6wZ9EOQG8n/Iv+HPEweJ98mJ8g/k1+Rd8gfGS3okOneAHa2YUmWlMAxcJLcJ1yVEgds+/83tC/uHhhwk7We/l44Zgx51nFgbSpjBSk9lC4jdWQ5bDQ2wnZ/N7mJ3EqOkAfJI+T/ku+QF8hPyJvkD+QDRodlFLCJb4VtyCY4clxH9pG7GD3etxEJWDUbZkY9WQHblavxqLIHov1+cjf5IvkaeYI8Q35Ifkp+Td4lZxmD0AMpeE0OqSQNZCWBNQmOPNfD7uU2cg/5EnmU/B05Tl4kr5LT5N/JOcbIXOWrj/tkp5FnkO9RyglSjtQjbT5vKCHnkBuRM8gHkS9SKlikFonyiiXIGmQzss3njQcUa5EDyGHkZuQocgIZRiZ8vsmoYjfyAPJu5DHkl5BPIZ9DnkS+iXyHUlmCHEKOIqPIvf5QcFx5O/II8l7kg8hHkU8hv4P8PvIF5Mv+cGRS+RPkKeSbyLeQbyPfQ56lVLFI5Vgw7FXpkRZkHnIJsmIs5vWp7MgWZDuyBzmMHEFuRSaQe4PhYEK1H3kn8gjyKPJYMB4JqR5AfgU67lU9inyDUm1BupG7kSijRhn1E8inkcdD4alJ9XPIF5GvIF9Fvo48jfw98h3k+6GIL6QhSClSjTQibUgOWYa0IxuRrci2yYA/qHEhe5BDyKuRI9BITDOGDCFjyJ3Ivch9yNuRB5F3R+BN8znkfcgHkQ8hH0M+iZxFPot8PhLzhzU/Qp5E/ixK77+B/C3yDPJd5B8ptSKkHKlFmpE5SA5ZhqxB1sd8oYS2BRlFfho5izwdA2Po8pA1yJXIHuRmZAgZi8Nc0+1EziBvQd6JPII8irwvHgyP6R5EPoR8DPkkchb5LPJ55I/ik76o7iTydeRbyHcp9QSpRJrjcUedvgBZgqxCOpDNyFVIF7IPOYzcghwD1uvDyARyN3IGeQvyAPII8nPI+5FfQT6GfArYoD+OfA75IvIV5KvI15G/Rb6NfJ/SIEIqkUZgoyEHWYVsRa5FXo3ciowidyD3IG9E7kfeCWwyHEHej3wMeRz5MrDZ8AawxfAW/Xba8D6lkSClSDXSiLQhC5Al8alo3FiFdCCbkSuR7Ug3sg85FJ+OTxivRm5F7kbejjyaAJ80fgn5CPJx5FPI7yC/j3wB+TLyJ8hTyDeRbyHfRr6329HcaDwLbDKxwGaTErjMpAe2mCzA5aY8oNO0BNhuqgB2mOzATlMjsMvUCnSZ2nY7ljlMLmCdqQdYb/IAG0wbgY2mLcAmkx/YbNoKXGaKAltMO4DLTXuATtONwHbTfmCH6U5gp+kIsMt0FOgyHdvtaHGYHgDWmb4CrDc9CmwwPQFsND0NbDIdBzabngMuM70IbDG9AlxuehXoNL0ObDedBnaYfg/sNL0D7DK9D3SZyW7HcodZCqwzq4H1ZiOwwWwDNpoLgE3mEmCzuQq4zOwAtpibgcvNK4FOczuw3ewGdpj7gJ3mIWCX+Wqgyzyy2+F0mMeAdeYQ3WnDTs58Be85sIfYDHuzLbDfGsEPcX34UeoYfnAbhD3eNthTTeIHsVHYy8Zgt0FPsca0cskSSfmk7J9DznbR/l6ot3xfxTDKXNiT/9dyDOzlPgxlsB91w85uLZwaemCHT+vi71w4d768BPabEvqLEET+oa4scKZYCqeAWvzrXfoXxI2wA2+GXXUL7FtbYb+5Es4yq+Dc0QYnhQ8vf/k9YfGKz4thX/tpOAldfo6BM9c8C8+j5op41SUohjOCCs4sf/ocg59xXZwDKVrhlDQNJ59dcLa4Dk4E18O57BNwzroBzjU3wQniZvDqW+GUcBucQu9CPX1USjBwUqQsuAiNV8R2ZAeyE9mF8U8k/L6MaMEVg6xMI0F6UIp+tJ+8WkjlFdFwRcw/j32XpP4K+D9hXZCS9WSYbIBz/CY4f//XrxlSnSL1pyK8KjrvKnmPLLin/VAUkyyI27Yrzlkxx5CjF6SILCHFV/DOkM9dgiJSQkqv4J0RZt2FKSJlpPwK3qXkDnKAfJIcJIfI4T/BNYOfcl4Oack7yaew5JE/wbWIfJ4cI3TtXYNfa0+Rz16BRzEk+0PxTz0KhvRfkrorog/pRwaQY8hx5AQyiNyK3IYMISeRYWQEGUVuR8aQcWQCOYXcgZxG7kTuQu5GXofcg7weuRf5CeQM8gbkjcibkPuQNyNvQd6K3I+8DXk78g7kAeQnkXciP4U8iDyEPJyW5/V/F/Ju5D3ITyP5tZmPDrxn8XP6b5D3Ij+PPMaUiwZEI6KoaEZ0UHRM9IhoVvSi6JTojJiI9WJO7BC3iQfEI+KoeEZ8UHxM/Ih4Vvyi+JT4DKtkW9gxdgd7C3s3+wD7OPss+wr7JvuuRCqxSMokzRKXZFiyT/oV6VPS56WvSt+S/lGmluXJamQrZT2yzbKQbI88Jr9RflgxotituF1xVqlVFijtylXKPuUWZVh5WDmr/InytypWZVaVqBpVnaohlV+VUO1T3at6SPW06qTqtOo9tVxtU4fVJ9Vva9SaPE2zxqXZqrlTc6/mec0ZrVI7or1P+6j2O9pXtW/p9Dq3blQX092te0D3uN6ib9UP6cP6F/Q/0//e0GkYMvgNCcM+wxHDQ4anDS8Yc4we44zxCeP3jSeNp43vmeQmm+lLpifNPebN5h3mW8xnspRZOVlVWa1ZsawvZR3Pejnrjax3LKzFbCmxNFo6LUMWvyVh2Wc5Yrnf8pjluOVlyxuWd6ys1WwtsTZaO61DVr81Yd1nPWK93/qY9bj1Zesb1ndsrM1sK7E12jptQza/LWHbZztiu9/2mO247WXbG7Z3stlsc3ZJdmN2Z/Z/svcl0FEUa9tV9fZMzXT3VPcgSzJJEBAVEGURuYiIiBHZREREREBAQMCILCEgsssuKoawQ1gMqwiIYZElBAghbAFZwr6Ffd93CH91dYnphnuv997v+8//f+c7Oacenu7q7nreqnrft2p6hvrhLcNjw/uHJ4QnhSeHp4XvCD8Wfi2khPKGiobKhaJD9UMtQ7Gh/qGEUFIoOZQW2hE6FroWoUTkjSgaUS4iOqJ+RMuI2Ij+EQkRSRHJEWkROyKORVyLVCLzRhaNLBcZHVk/smVkbGT/yITIpMjkyLTIHZHHIq9FKVF5o4pGlYuKjqof1TIqNqp/VEJUUlRyVFrUjqhjUdcKKgXzFizK1w7WuPIhkZlF7HfxEy5+y8Vv5OIK51dycS9CUfz+OBd/Kt3Ji05wXv90jPP+JbY6+XPtnfd/hPdx1Z/6T/g2Jy9ZzMXj/gXO21820Xn+xVFO/gpzcTMX5/nKK3lc52sLTng2m8dWWCnDxlcbijOK+DynII+44mhlaYfX6tlYZYKNr194XO03ykpsIzFRomsUROdxqoyOdfLqpV28k/P66pOdvOZwJ6/V3cV7uPgFF7/k4ldc/JqT17baj/9sX+2qLl5TcJd1ateROFximsRsUTuKr9Wr8/VkQ54Nt+FxqxuPLYO5/x/DMwXrs6olKBVloK1oNzqMTonP/BD2YROH4ULyPqk2vh1jY52QxK02vjPYxrqqxOU2viv5u40kynrvnrCxHpPYWuIpG98rL7GlxHgb60dLTJB4xcb360rcYWODZhLP2fjBZBsbNrDxQzlCP5TtbzTM2Qsfuaz+UWUXr+ni7V18TC7O79+ktPN8k9YuHufkMa7nxxxz8vZNXbx/Ls7b336Y4GGoPKqMqvGVXwO+FmrNs5c4nmEM5FnAKB6prU9SF6EUlI4yURY6iE6gC3Zr28vean/Qxi/62NihqMQNNnYkEhtKnG9jJ9nrnUpIlHO200yJZ2zsLHuhc0WJ8jmd022MlaMjVvZarOzFWHl9F/mcLrK9Xbo7rd5ltdNKXQ4Lnhe98BftYt9Fqo2rKXGqjV2LSOwu8Y6N3aQ/67bNxi+lFb6cbWN3abXu/STutfErqeKrBTb2kB6vx1Abe0q1PVtItOd2Ln/bq7TECU7dva4IrqFIvoYqicqhSiga1Ub1+Rq5JZIzupecSb1329gnxca+cTb2e0GinLlfS//bX/bNANlXA6TVBvbiz/T/OSIHveDi5Vy8vIs3dGpwcB59Bndw1h9sPw/EOwaRdhsGy/E0eK7EK6KOy3cOkf0zRNp/iOzfIefc9h0qbTC0sXOcDR0n7pu7ZraN35hOv/JNBRd3WembFBdPc/LvXFb6PtvFD+bi3Go/DEWUODT8kGljfKNcNS3ezsUHuq+Ml3YZUcH5jBEZzisTQi7ex2mthNXizj7ZB3/ORfus9DkJN2wcKcfVKK+No5HEMIlyzI/JEk9RUQgVQSVQWVQRVUU1UT3UCMn5Mk7GkvGyHeOn2zihio0TO9mYKL1VopwJk+T8nCzrTR7s7u3J0i9NvuY+M0WOsSn9nDaZOspt3alSd1IPZ83peR8d19OzbJzR38aZlR6tM1PO01nSfrNqiic+vO+sdo+bC7NkvJx9y8afpE/72fvoE36+Z+Pc2hIfscvcZIlX/lGPz5M9OE/G+PnSzr/IHGCBnHULpB/8Vcb6hTqiYP0rT64+F2cWLZEoZ+Fi6aEXSzVLrtm4tJDT1kvruniMW9FSmdcsi3HWXHbnUfssl72zQpGYLEaoR7w1ZH3xR+pOkdEzRepbKXOhlTJXWjnT7YdWSn0rbzlnf6qdZThakSq9W6r046mbnH51VXnnbF41U/SV/2EbKzzMHcX1qw7buFrG8jXdbEyrIFHadq3M5NLn2Liug40ZfNWiuNqYIdcJ62Nt3FDIbfcNqyXecJ/ZKGf1xjnizN9t98b9Nm6SfmOTbPempRKlv9kso+7mgRLlkzfnOHs8s5iL1xF2/TtjPLO+RDm/tkhfulWO2K2XbPx9mI3bqtq4vZvzKTtSXPyYk+8kLt7a2bs757rXaLuTbNzD/YEnl3/YG+b02nuriXFBRa/9mUXY52RmtFfG/n1y5O+X5/fLsXdAPvNgITFzH5kJh+Rq45D02Id1idJTH8l5nM86KvG47NmTsudOtRQtfuQpp2QEPC3j/RkZWc7IjObsM7lsxjONs7Od/GoJJ78Wj6j4t+T3cq9A+f3ud3fO0pwiwrLsMXGqHeqEuqN+SHqCHJlb5chMMUeueh5Ij/KgsUQ7Q7U+MbNxuER7DmLcRqK92sGkpkR7bmIo7WghhoS/2EIMGRLtWY8Vr8Q4ibatsaeSRNvHYy+R2EiiHWMxrSrR9rPYV1DiVES9f45G7Pe6fCL2y5p+Z/zE/nH/JC/A/iSJ9qoCq6bEPhJtb4u11hJtT4L17hJtj4gDCe42MWkNFua0LyuIKM2lhlVyna8vuHvkYib7jfWXmCoxx0aj8uOvMzpInC3Rzg2wWVRiS4dX5X1jTrAxOMcRLXDQubuB86i59sgsnu7iO1z1t7l45j/hm1x8A8q9B4XzpTvWvTh/yMXzu7hzdwXnZy5e1LHKwPlLuniikxco6uy5iGQnj8zrrB8Z6+RRCQ5fggsm58rSeHsKbnKdz3byJ6vnqs//nhzlfP6TYxz+Hz+Z4LTHkxNc149xcXf94U5eKN7FDzufXyjbxQ86eeHIXM/jego/4zpfwsXLOfUXqebiPZy8aAnn/Z8e47zfs9ucvFhjFz/h5MXzPMpz26v4QCcvES0i3Z/8mPP6Ehdc3JnR4ecLOfkLioufco6nUptcfK+LX3HxG05euqSzP0tXdJ0v77Rn6Rgnf7G0k790zckrLHHyV3qIbPAhr1zFyV9XnPyNDGf/Vhvm4olOXr2+k9fwungzF0938lqu8VR7sotnOfnbdZ28jmt8vtPYxeNdfJSLJznt/85MJ68X4+Tvl3Ze/8E1J2/oslfDU07+4Xco9+44/nC6ky9tnytL5FdElHeMFxIR4xj/JKKNi7d2zAfBc41nEjHZMT5IRIqTF+zn5IWrOXlR1cmfyXS0nxSPd9iLDLrl5EN8Th7v9N9kfCEnT3LGB/JzBSdfFO3kK+s6eWozJ1/v7E+yrZuT7+vv5MeGO/n5CbnyJH7kRu7xwvXfmO60940FrvNzXXypiztXj+RmIRd36bmZnCvT4Udupjqff3O1i6cg61s/CvoEj0St8QRx1xY4wWN6gvxMHuTVa7B0vTpLY6lMrMzweXwJX8HX2evsDcFftO5D8hDr+0lecVcMAV7m58+w8j/r69d/7Pry5xJKNGKSfHo1/S1xT+Dn6yFrt/HPveEePONVHn5qojzcJwaUhGYj63/HmouS0VKOS1AKSuO4GmWgTP1dRPTqej1e1tDf42VNdgoBMXnrTwtMZ2c45uP8rMB0loUIZ7t5mc728jKDHUbA25XGjghMZ9kcV3N+VGA6OybPH5fnT8jzJ+3zei3RhtqiDW9bbdDriCPviCN1Ras2iKduEk/NFE/dKo5sE0d2WEes/33Lyg4958R8QmgK74/b3Bb9ODWwgXrjEI5CfXAxXAz1x41wYzQAx+DP0WD8Bf4CDcUdcSz6Bg/FQ9H3eAwei4bjy/gyisc38A00At/Fd1GC9eIdGkm8xItGEZ3oaDQJkiAaQ/KT/GgsiSARaBx5ijyFxpPipDiaQEqTumgiiSVdUArpSrqiVNKddEerSE/SC60m/Ul/lEYGkUFoLUkgCSidjCaj0TqSRHahDAgAQ/egHJRDOVAVotEDqAE1MIGJMBGDEqtMwYrnE88nuKynlacVftHzqedTXM7T1tMWv+Tp7OmMy3u6eLrgv3m6erriCp7t3sH4ZfU9tTm+qA7SMM7RTf1N8qX+kZ5I5gVaBtqRq4HegWHkDiPMBz5WmBUGgz3FngKTPc2ehiB7lj0LeVhxVhyeYM+x5yAve549D/lYKVYK8rMyrAwUYOVYOQhj5Vl5CGcVWAUIsYqsIkSwSqwSRLLKrDJEsSqsChRkVVlVeJJFs2goxKqz6lCYNWVNoQhryVrCU6w1aw1FWRvWBp5mn7PP4Rn2BfsCnmUdWUcoxrqwLlCcdWVdoQT7kn0Jz7HerDeUZH1ZX3ieDWAD4AU2mA2GUmwoGwql2bfsWyjDvmffQ1kWz+LhRZbAEqAcG8VGwUtsDBsD5dk4Ng7+xiawCVCBJbJEeJlNZpOhIpvKpsIrLIklQSU2nU2HV9lMNhMqs9lsNrzG5rA5UIXNZXPhdfYL+wWqsl/Zr/AGW8gWQjRbzBbDm+w39htUY8vYMniLpbAUqM5WsVVQg61ha6AmW8vWQi22jq2D2mw9Ww9vs41sI9Rhm9lmeIdtYVugLvud/Q7vsu1sO9RjO9lOeI/tYrugPtvD9sD7bB/bBw3YIXYIPmDn2XloyC6xS/Ahu8KuQCN2jV2Dj9gNdhMaG0WMItDUeN54Hj42ShmloJlRxigDzY0XjZeghVHJeBVaGVWNqvCpEW1EQxujmlEN2hrVjerQzqhp1ITPjDpGHYgx6hp14XOjnlEP2hv1jfrwhdHAaAAdjIZGQ+hoNDIaQSejsdEYOhtNjaYQazQzmkEXo4XRAuKMlkZL6Gq0NlpDN6ON0Qa+NNoZ7aC7EWPEwFdGe6M99DA6GB2gp9HJ6AS9jFgjFnobcUYc9DG6Gd2gr9Hd6A79jB5GD/ja6GX0gv5GH6MPDDD6Gf1goNHf6A+DjIHGQBhs8D8YYgw1hsJQY6QxEr4xRhujYZgx1hgL3xoTjAnwnZFoJML3xmRjMgw3phpT4QcjyUiCeGO6MR1GGDONmZBgzDHmwEhjrjEXRhnzjfkw2lhgLIAxRrKRDGONRcYiGGcsMZbAeGOpsRQmGMuN5TDRSDFSINFINdbCJGODkQnTTGximG2CCfCTyQMGzDGpSeFn02/6Ya6pmRrMMwNmAOabhmnAL2bQDMIC8wnzCfjVzGfmg2SzgFkAFprhZjgsMiPMCFhspplpsMRMN9PhNzPDzICl5gZzAywzN5mbYLmZaWbCCnOruRVSzG3mNlhp7jB3QKqZZWbBKnO3uRtWm3vNvbDG3G/uhzTzoHkQ1pqHzcOQbmab2bDOPGYegwzzhHkC1punzFOwwTxjnoGN5jnzHGwyL5gXYLN5ybwEmUElqMCWoDfoha1BX9AHvwfVoArbgnpQh+1BFmSwgwsyYWcwTzAPZAXzBvPCrmD+YH7YHQwLhsGeYCgYgr3ByGAk7AsWDBaE/cGng0/DgeCzwWfhYLB4sAQcCkWEqsAR7t+b86h6Hd/BD4jHjo8kRIqQYlDd08LT0tPa08bTyRPriWOFWBFWlD3DirESrCR7gZVmL7KX2N/Yy+wV9ip7zYrK7C3WhH3CWrFPWQxrzzqwWBbHurFerA/rzwaxIWwY+479wEawkWw0G8vGs4lsEpvCfmTT2Aw2i/3Efmbz2QKWzBaxJWwpW2FFaR6b0nmU2sA2sUy2lW1jO1gW2832soPsHLvILrOr7Lp8h9va0SgkIpa15+rBTXArZbH3vq/yP1BZ4/9LlSGh8kcr/8Ftvfv+h+iz3kD3cG31edaVga0UAfs7+603KiNxEVwCl8UVcVVcE9fjOUcL3A53wt1xP55nxONxeCqejRfgpXg13oC34b04G5/CF/A1fmUqzsBb8W58mB+5hG/x2/q4fcJIIVKMZxUVSBVSndQlDUkz0oZ0IN1IHzKQDCPxKJI0Ja1JexJHevEj35FRJJFMJ3PJIpJC0kkmySIHyQlygdwgOeAFBvmhIBSFElCaX3kPFNAhL0TyIyV55lEJoqE21IfG0BJiIBZ6QH8YBgkwAZJgDiTDclgNGZCJImEcTIXZsACW8iMbYBvshWw4A1fgjkIUVcmjhJQiSgmlrFJRqarUVOopjZRmSmslxt8NAbdVrP9LgV383QXG+b8S2NXfk2Ms/1cvgbH+3gK7+PsIjPP3FdjV/zXHLrxef4Gx/gECu/gHCozzDxLY1T+EYxyvN1RgrP8bgV38wwTG+b8V2NX/PceuvN5wgbH+HwR28ccLjPOPENjV3wMRfrYfL7v4B/Myzv8dL7v6R4r2d/aPkvpGS31jpL6xUt84qW+81DVB6poodU2SuiZLXVOkrqlS149S1zSpa7rUNUPqmil1zZK6fpK65khdP0tdc6WueVJXAlfR2Z8odCUJXbOFrl+krgVS169SV7LUtVDqWix1LZH99pvUt1TqWyb1LZf6Vkh9KVLXSqlrldS1WupaI3WlSV1rpa51UleG1LVe6togdW2UuuYLXYtEr6UKXelC12apK1Pq2iJ1bZW6fpe6tktdO6SunVJXltS1S+raI3Xtlbr2yX7bL/UdkPoOSn2HpL7DUt8Rqeuo1HVM6joudZ2Quk5KXZuErm1C127Ra9lC12mp64zUdVbqOid1nZe6Lkpdl6Suy1LXFanrqtR1Xeq6IXXdlLpuSV23pa67Utc9qeu+1JUj++2Brc/6VStLn4ptfSqx9akg9Z0Sui4IXdeErjtWr3Ef2xAVx9vIJO6f3oHW8Cm0g8+gM3SBrvAl9ASe98FQ+IZ7q2/5eikbjsIxOA4n4CScgtPcM52Fc3AeLsBFuASXuZ+6CtfgesD6PL843koSoRbU4T6vFbSBttCJe7446Ma9Xy/oDX2gL/SDr2E893XLuAdcASmwElJhFfd8ayAN1kI6rONecT33gxthE2wOvCTW+WWtuMCfeh0hsVINQ3984wuhJLEHEGPVUAoqz8oaVsQsJmtM4+eA++AYhJS8ShSvV0wphrRcV1jPKJbrGda3UQzueZ9QPIpXoYpP8XNPrCm6ElCYYiimYu1XKJYm/jjrGqK8qlRGuvK68jpi/FwFFA7TYSb39PMep+txFgxfxq+jMA2m8XvOgBm8NT/BT4jAXOAehltsDX9iNpxFLHxp+FJuA4LKozBefwavN/exFn1M3/GrvLxl0/kzZsJM/ow5MIc/Yx5w78Vbupk/w9Ij3it5sFvYJFvY5E8bLeW1uI087UnyI9/us78n88d3PeLRCJSARqJRaLT4nuc4NB5NQBNRovgWyxSes/3I+28amo5moJloFpqNfkJz0M9oLpqH5qNf0AL0K0pGC9EitBgtQb+hpWgZWo5WoBS0EqWiVWg1WoPS0FqUjtahDLQebUAb0Sa0GWWiLWgr+h1tQ9vRDrQTZaFdaDfag/aifWg/OoAOokPoMDqCstFRdAwdRyfQSXQKnUZn0Fl0Dp23fuMHXUKX0RV0FV1D19ENdBPdQrfRHXQX3UP3UQ56wAcdJu+SeuQ9Up+8TxqQD3g+8SFpRD4ijUkTnkd8zLOL5qQF+YS0JK14VvEpzzXaknbkMxJDPuc5xhc88+hIJpPdZA/ZS/aR/eQAzy4OkcPkCMkmR8kxcpznGifJKXKanCFnyTlQyXlyATRykVwil8kVcpVcI9d5LnKT3CK3yR1yl9wj90kOecAdAAYCwDMSD89TKPjAD+9CPXhP5CNNoBk0h8+hI89IBsBAGAQjYCzPS+bDL/Arz0yWwG+QCVtgK/zOs5HtsAN2Qhbsgt2wh+cm+2A/HICDcAgOwxHlFaWSsk3ZruxQdipZyi5lt7JH2avsU/YrB5SDyiHlsHJEyVaOKseU48oJ5aRySjmtnFHOKueU88oF5aJySbmsXFGuKteU68oN5aZyS7mt3FHuKveU+0qO8sAT8OShr9Oq9A0aTd+k1ehbtDqtQWvSWrQ2fZvWoe/QuvRdWo++R+vT92kD+gFtSD+kjehHtDFtQpvSj2kz2py2oJ/wv1b871P+15a2o5/RGPo5bU+/oB1oR9qJdqaxtAuNo11pN/ol7c7/etCetBftTfvQvrQf/Zr2pwPoQDqIDqZD6FD6DR1Gv6Xf0e/pcPoDjacjaAIdSUfR0XQMHUvH0fF0Ap1IE+kkOplOoVPpjzSJ/kTn0J/pXDqPzqe/0AX0V5pMF9JFdDFdQn+jS+kyupyuoCl0JU2lq+hquoam0bU0na6jGXQ93UA30k10M82kW+hW+jvdRrfTHXQnzaK76G66h+6l++h+eoAepIfoYXqEZtOj9Bg9Tk/Qk/QUPU3P0LP0HD1PL9CL9BK9TK/QW/Q2vUPv0nv0Ps2hD3zIh+k0Op3OoDPpLDqbXqXX6HV6g95Uu6lfqt3Vr9Qeak+1l9pb7aP2VfupX6v91QHqQO0rrYfWU+ul9db6aH21ftrXWn9toDZIG6wN0YZq32jDtG+177TvteHaOG28NkGbqCVqk7TJ2hRtqvajlqRN06ZrM7SZ2ixttvaT9rM2V5unzdd+0RZov2rJ2kJtpZaqrdJWa2u0NG2tlq5t0DZqm7VMbYu2Vftd26Zt13ZoO7Usbbd2RDuqHddOaqe1s9pF7bJ2VbumXdduaDe1W9pt7Y52V7un5WgPdKRjneigK7pH9+pH9WP6cf2EflI/pZ/Wz+hn9XP6ef2CflG/pF/Wr+hX9Wv6df2GflO/pd/W7+h39Xv6fT1HfxBAARwgAQgoAU/AG6ABX8AfUANaQA8EAixgBMxAMJAn8EQgbyBfIH+gQCAsEB4IBSICkYGoQMHAk4FCgcKBIoGnAkUDTweeCYwPTAhMDCQGJgUmB6YEpgZ+DCQFpgWmB2YEZnK/W9jejRW7or3JJMI9qNjrnAI1oRbaCW9DHbQLGsFHaA80hY/RPhHxDkAH6IAO8kjVFx2CeIhHR2EMjEHHeAwej46LaHNCRJuTItqcEtHmNCyCxeiM8PznlJeVihiJPVPiUT0qLu0xPSYuI3ZFy3qPeE/gU7Q0LYcviB3Sq+ogdTwh6jR1JSmgrldvkbJin7SF2CGdLqK3X/xv5+VRFRSNGsg3TzDyi7XZK6QaqUHeUUeoi1XrvSnrLaNqXHt18UOm1hslDZCPZzBNUUt+VQe5f299Fw9QN9SLxyPgfDCPQcBjUTwaow1AhK3X5ohyHS93aRm83KOt5+U+bZM4vouXq7Q9otzHy43aAV5u1g7xcot23qrD8lnXsvzWtayAuPa+OO7n5Vqm8nId08QRQxwxxZGgOBImjoSLIyHrCI+fs8m2/6b46Yye/7Nj5/+d6GnFx78aE/8742Ee2pK2pm3oVzy6WFHxTR4Pa4tI9S6POt+JGNiQxz8r8tlxr9VfjHg9/kmsezTSjeUx7s/oljty/L8W6R5GMh7zxvDYnDvivc4zCyuvsLMKK6eoy7OK2zKnuMszig95NpEo8olJPJu4w0dtAz5SP7bG5R9xkXzujIm6qQf1PPoTel49n55fL6CH6eF6SI/QI/UovaD+pF5IL6wX0Z/Si+pP68/oz+rF9OJ6icdG0gGPj6XMz1Sm/aWIOufRmMoMZrLgI5F1nZahrRfxddNjI+wuHmP3aPu0A9qhP2Ity88KiHh7/u9G3PuPxlwWxsJZ6N+KvI64q9//r4i85pp/EnvfwQTn40ugEC6G8uK6uD56SnwGWgw3xa3Qc/hT/Cl6EbfFbVE5/Bn+HL2Ev8DdUQXcA49E0Xgcnoia4oV4C2pBOpFY1JPEkZ6oD+lN+qLB5GsyCH1DhpBv0XDyPYlHI8WnmWPJKML9PUkkiSgRdMiDJkFeyIumQ34ogWZASSiFlkMZiEapIp7vEPF8p1ibZSlTlS3ojCfoCeIwzw3PDRzuueW5hUOeO547OMLLDYYjvUO83+Io7/feEbiId6R3DH7WO847ET/nneSdjUt553iT8SveRd50HO3N8G7F73uzvFm4qXePdx/+2HvAewi34JH/Pm7lfcAjfz9anr6Cl9BX6Ws4xVfcVwKv8pX0lcJrfGV8ZfA6X3lfeZzhe9n3Ml7vq+yrjDf4qviq4I2+qr6qeJOvmq8a3uyr4auBM321fbXxFl99X3281feB7wP8u6+RrxHe5vvY9wne7mvra4t3+/liHO9RW6if4L1qK7UN3q+2U2PxYTVOjcNned4wHp/jucNKfF29pN7CORrRPiJUa6J1J831SXo26R2oFahF1gS+DYwjaeK9SMJXnHPFznoT3FoeWZTriLWf4EVF+PrXevNbvhmNn8Mv4Ar4LVwLj+H1p4l9hmn8KhD/nivYCslWcHaA/xEea5t7Qp4IT6QnylPQ86SnkKewp4jnKU9Rz9OeZzzPeop5intKeJ7zlPQ873nBU8pT2lPGU9bzIt6Od+CdOAvvwrvxHrwX78P78QF8EB/Ch/ERnI2P4mP4OD6BT+JT+DQ+g8/icwooCtyAm3ALbsMduAv34D7kwIP/5JiCFKxY7/c25zlZkNslDEWKX9koiUqhitw2lcVPtNdCH4hfSrGytDbilyqs3wbqzeeRgU0+jwriYnweNeLWbYtj+GzpguNwTzwEf4OH4eF8xizEqXgVTsfr8Caxc/QX94v+6m6VtVujvP5wp2i43CmystNXSRlSnkSTmjw/+YBnH5+pg9Uh6lB1mPqt+p36vTpcna7OUGeps9Wf1DlqlrpL3aPuVfep+9VD6mH1iJqtHpVe/E8fbvnoPzy05VH/8KeWH/1zxXJevNvyCmn8sF0psl0zeFlftOtl3rK6omWNeNs6/sO2zVXnqfPVBeqvarK6UF3kaOtJ9ZR6Wj2rnlPPqxfUi/+wxXZEyR1Pcmuw/X0uby9U1CDt5GdXFaUWhCxP6uU5fkeErJUCqmqtJtG71hsV6D3tK/1NlMmjWhQey+u9wNWW4aud8qQ8wlz1y/yelUglBFx/NFJ479REHm6JuvyO9Ug9RLlFPkA+bpVGfB3RhDRBKrdPK6TxnPEzpPNssSMKqB+qHyLGV7C9kMFXKfHIVBPU8SiSr1UWoaLqEnUlKs9XLBdRZfWyegu14vF4EPqcR97hqDuPtHNQPx5HF6KRPG7uQRN57x1AS3gPHkK/8Wh4BC3lfXkULeP9eRwt5316Eq3g/XoapfC+PYtW8gh5HqXyKHkRreKR8jJazaPlfbSGx0YvyuT5QhjK4jlCYXSQ5wUl0AluCw1d4JE6iC7zeBni2fQf46KiHBf/a9H/3KKWJaty++SVn7DOFG+Vwf9a9j+27B82rfpwtP6vZf/rxmyxh351lvX5htgXsi1aWNiytHVUnaAm8aOpagbyq7c16wr3pyP/6tXWVaVzzZdZD3v1X7nLH9eXftiKf/0uhPvB0L+TF1lvU/w7mQi/TudtzI/GIOsewK8cZyBUBe1F2eiM+DV8glWch9/1r7+7kIEzuYK9vLUn8Dl8BfOMlShEJSbJTyKt9znIC6QcqUiqkGqkNh/lDUlT0pK0Ix34KqIH6UcGk+9QcZJHvPtRgpTlNauK3KURacFrdSLdeZ2hJJ6MI1PJbLKALCEpJI1sIFtJFtlPsskpcoFcI3cAgddaZ0CY/U4Dn2/7cQmh0cDPC2yEKwhsgl8W2BRXFPgxfkVgM1xJYHP8qsAWuLLAT/BrAlviKgJb4dcFtsbRAtviagJjcC2BX+B3bNt6ClioLPKECVzsCbeQ3fVpFnqe8OkWepN8AYErfExgis8QeN9nCszxBQU+8OWxkK9AnhD4mmH3YTtcHFmj4TleFsMledkIvyAy/1K8bIr5+OMay/CyGS7Ly+b4RV62wOV4+Ql+iZctcXletsJ/42VrXNV6Qwe/wcvP8Ju8jMFv8fILXJ2XHXANXnbENXnZCdfm5Tj8Ni8n4Dq8HO/JiwjXm4+Xiz3WTuNdH0GEK+Uzg+tUeLnC5+Flis/Ly/s+ysscn4+XD3x+RLg2vnbxvYZnc2XjuJqfBDbBcwQ2xT8L/BjPFdgMzxPYAs8X+An+RWBzvEBgS/yrwFY4WWBrX5SFvD0FLeQtelLgCl8hgSm+wgLv+4oIzPE9JfCBr6iFvHVPC3wNJwpbTxJWniysPEVYeaqw8o/CvknCvtOExacLK88QVp4prDzLsp0vr7BOPmGd/MI6BYR1woR1woV1QsI6EcI6kZZ1DCS8jfUmuvW9wWeQ9S1qhXuDfLw1w/kMt3yT9VZZQfl2WRGcX4yKAqI3w0SvhYuyjejrUda/ERbrxjzie88k9FGolfgu6x/3igx15EebhDrxsnaoMy/rhbrwsn4o1jrO7xCGhuD38Qf4Q9wQN8Bt1IY8UjWyP3EhXUgvPtNHwjiYBQvYPXaf5bAH3CdOVBPVSepkdYo6Vf1RTeL+cZW6Wl2jpqlr1XR1nZrBbjLCgCnMw7yMMp96W72j3lXvqffVHPWBhjSs/aDFayO0BG2kNkobrY3RxmqLtMXaEu03bam2TFuurdBStL3afu2gdljL1o5pJ7RT2hntnPZ/2DsXOJ+q9f8/+3uf8TX2d62193fvcQmNcZ3BGGMwJORuck9Iknvul0lCkiOnI5WkkiQkIUnuuZZESp2SVNJN6nQ6up6SX/F/1uf7nTFIqXTif07zaj3b+7v32s961tprPetZ+3K4yBdFvgoHw6FwQjgxXCQcDhcNJ4WLhSuHq4TTwunhquFq4erhjHCNcGa4ZjgrXCucHa4drhOuG84J1wvXD18SbhC+NNww3CjcOHxZUjipaFJSkkiSSSrpSNL3SUeTiieVSCrJFk1FxIUQZfHzzKIlj/YDPAN5hB/pGcmj+jjPOCqKO8GTEDsphoiIiVWNiPdJ75MkAk8ElpMMrAmsISvwXeA7snWcgKI6TkClEw8kfkQVdbSAqheZwuN8nSKP8wjfqMibPMK3KvJ2kbepNcb5XIzzl2Ocb4Nxvi3G+XYY59tjnO+Acb4jxvlOGOevwDjfucgxHuGvDJs8qvfEqD4Oo/qEJItH9Vu4nOupy9nU6G+rwT+knvJrKBHWJFgzAXYUsGNx2DEFJU9DybNQ8rYoeQf4M1fE4i3+RH9RPFXSgnZy2pBKFW7/p7biM7fHWNvR1y63lBaelrFVA67hgtl54sHEj06NYp6IYHJt2Hp1BzoV8ScV6JT/vImPW904bm0z4vuE/cUK6e1QwolrOP861Wtb3IbbsifQ3uig2yK3xO9472pkne2qgvmsfuImdu+Fjl9xvxJ7rkZraJj6jVg+cyt5zKE/yb1FM/mXmPfWuMBz1E8MR80Us6KZbtY0s8xaZrZZ26xj1jMbmY3Ny8wmZlOzmdncbGG2NHPN9mZX82rkOjqeUxbKoAryCv9kXnwcjmp10rGl+djkQscaZoOz2ivtlL08NAaRukV4Ckjvt4SZ6U/wJxCZPbQFzJ5mb7ZMX3MABcyB5iBKNIeYw1jbEeYIKmaOMm8g07zRvJEsc5x5E9nmzeZEcs1J5iQqbk42p1AJ83ZzJl1kzjIXUEVzIdszU9+rw6VtxefINXOZtjPbUyWzo9mRqphdzKsozbyarVXdnGpOpQxoWwWprgUvjeU//T6txfG7mS4UrfXb5C4UrT28X8cC7X00nv9WkH4jiH4zQvIFpr9+M6x+g6wRvxq05pG45lpnAzr7oXMCdC4CnZOgczHorKCzBZ0d6JwMnYubfzP/RqUKNJ8PzZdQDfNx1r92oXbQClfcBNLv/ll20hX3n9Llt7bgVrBhC/R/HmpTSPPfml+sf/Wi19f/akL6rfHOOcs35n/y3If902qUEs/31D3bFfTzbHVok4z30jTj7S7UgzqcE31OPcsJ3VJYu1Jn0O2ntdJ3ceSeIyud0Od8uDpan+M21rpQW0gp1BbOZO/Wp1nl51tQ6zO0oAvx+m59zq/EE9b34AmVE9fUuWm9p9bWub5yz1y7+h1KY/7D/tIJvTojnQiPYgpNpGmk35L+n/UoTmjT7jSdYnePnV86ac9rNV0onldh3fP9Lu03Xhh+16nar2XtN11A2p/aevx8xU9gv3clbYn36iUuwFL44q3owq8J/S6JC7cmdBwE7/Mw9bM5JyIN+k3DPvN28hXNZI21DxRbK0mGD+KNxRNAY0eY5uVcwvZmG6Rtdfqzx+j3tik+Rkcy9FEx2TYmC2vCVqxB/WgwjeQxTo91uAuY5sTf5rGaNsTe30F76C16jw7RZ/QVHaFjhs9INEzDNvSTpxWMdCPTqGM0MJoYrYx2Rmeju9HLGGAMNfKMscZEY4oxzZhhprDWKWY5TsuZqZymmuU5LW9W4LSCWZHTimYlTiuZlTmtzPb0mFXMNE7TzHRO082qnFY1q3FazazOaXUzg9MMswanNUyuMzOT7ezRERVOs8xanNYysznNNtlX0hEWTuuYdTmta+ZwmmPW47SeWZ/T+uYlnF5iNuC0gXkpp5eaDTltaDbitJHJXqq2Mafazh4d7+G0qdmM02Zmc06bc016dPyH05bcdjxmK247Hm5B7TA/bY/a68hpR7MLp13Mrpx2Nbtx2o3blMe8ituUh1vWVE6nFnqeOTaK6Ss5tu7369rmiXann2cL8JXRnTz+v+i0KI+kRphu4RqaacwxFhrLjNXGJmO7sdvYaxwwDhmHjW+NY56AJ8lje0p5Uj3pnixPfU8TT66n0294/jfVm+7N8tb3NvHmejt5u3v7eAd787zjvZO907wzvXO8C73LvKu9m7zbvbu9e70HvIe8h73feo/5Ar4kn+0r5Uv1pfuyfPV9TXy5vk6+7r4+vsG+PN9432TfNN9M3xzfQt8y32rfJt92327fXt8B3yHfYd+3vmP+gD/Jb/tL+VP96f4sf31/E3+uv5O/u7+Pf7A/zz/eP9k/zT/TP4etY8V7Fm1fA/atBPtWhn3TYN90tm8PykC/k4l+Jxv9Tg76nfrody5Fv9MQ/U5T9DvN0O+0RL/TGv1OLtfQTGqLfqcb+h32OX0OlzOFZVlfBV86yyq+DF82yyxfjq8hywZcep6f+1r42vg6seygn3Fm2d3XyzeAZT+2yUiWw32jfeNZjvVN9E1hOdk31Ted5Z1sqdksZ/nm+hayXOBb7FvOcplvpW89y7Vsv20sn/Ht8O1m+aLvVd8+lnt9+30fsHyPrfoZy099X/i+ZfmN76ifWB7z+/yJ5PWH2NaKpfA7/lIsS/jL+iuwTPVX8WewrMY1kMOyjr+BvwnLxv4Wfu6huEY6+Luw7Mz10otlT38//2CWA/3D/aNZ5vnH+nlc8E/g2uJrw3+b/07/TJYz/LP8c1nO8S/wL2a5yL/Mv5LlCv9a/yaWG/zP+Hew3O5/0f8qy1f8e/37Wb7lf89/iOVB/6f+L1ge9n/jP8ryiP9YwEfegCcQCiSxDAdEgGeFATtQIlCWZelAaqAKy0qBaoEslpmBOoEGLOsHGgdasGwWyA10YNku0DnQnWW3QM9AP5Z9AgMDw1kODeQFxrIcE5gQmMxyUuC2wJ0spwVmBGaxvC8wJ7CA5bzAosAylksDKwJrWa4ObAg8w3JLYHvgRZYvBF4J7GW5J/BW4D2WBwIHA5+y/CRwOPANy68CRwLHWP4Q9ARD5A0GguGgYGkG7WAJlsnB0sFUlinBSsFqLNODmcE6LLOD9YONWTYMNgvmsmwVbBfszLJTsFuwJ8sewT7BgSwHBIcG81iODI4JTmA5PjgpeBvLKcFpwRkspwfvC85hOTs4L7iI5cLg0uAKlsuDq4MbWK4PbgluZ7kt+ELwFZa7g3uCb7HcFzwQPMjyg+AnwcMsP9NPX7H8NvhDyEPeEIUCei07lBgyQzZLFUrWK6qhUqGUUCWWFULpoUyWGaHsUH2WOaGGIZ4lhpqEWoXasWwT6hTqxrJLqEeoD8teoQGhoSwHh0aGxrAcHRofmsRyYmhKaBrLqaHpoftYzgzNDs1jOTe0MLSU5eLQ8tBqlitD60NbWG4KbQu9wHJHaHdoD8tXQ/tCB1juD30Q+oTlodBnoa9YfhH6NvQDy6MJlBAgb4IvITHBZJmUoBKSWToJpRL4+k8om1Ahga//hCoJGQnZ3Cdxj63ToplIa+jxlPvwFE2Q1tBjK5NyIOVAUkFSQVJByoOUBykPUgGkAkgFkIogFUEqglQCqQRSCaQySGWQyiBVQKqAVAFJA0kDSQNJB0kHSQepClIVpCpINZBqINVAqoNUB6kOkgGSAZIBUgOkBkgNkEyQTJBMkJogNUFqgmSBZIFkgdQCqQVSCyQbJBskG6Q2SG2Q2iB1QOqA1AGpC1IXpC5IDkgOSA5IPZB6IPVA6oPUB6kPcgnIJSCXgDQAaQDSAORSkEtBLgVpCNIQpCFII5BGII1AGoM0BmkMchnIZSCXgTQBaQLSBKQpSFOQpiDNQJqBNANpDtIcpDlIC5AWIC1AWoK0BGkJ0gqkFUgrkFyQXJBckHYg7UDagbQHaQ/SHqQjSEeQjiBdQLqAdAHpCtIVpCtIN5BuIN1ArgK5CuQqkKtBrga5GqQHSA+QHiA9QXqC9AS5FuRakGtBeoH0AukF0hukN0hvkL4gfUH6gvQD6QfSD6Q/SH+Q/iADQAaADAAZCDIQZCDIIJBBIINAhoAMARkCMhRkKMhQkGEgw0CGgYwAGQEyAmQUyCiQUSB5IHkgeSDXg1wPcj3IaJDRIKNBbgC5AeQGkBtBbgS5EWQcyDiQcSDjQcaDjAe5CeQmkJtAbga5GeRmkIkgE0EmgkwCmQQyCWQyyGSQySC3gtwKcivIFJApIFNApoJMBZkKcjvI7SC3g0wDmQYyDeQOkDtA7gC5E+ROkDtB7gK5C+QukOkg00Gmg9wNcjfI3SAzQGaAzAC5B+QekHtAZoLMBJkJMgtkFsgskAdAHgB5AGQ2yGyQ2SAPgjwI8iDIHJA5IHNAHgJ5COQhkLkgc0HmgjwM8jDIwyDzQOaBzAOZDzIfZD7IApAFIAtAFoIsBFkI8ijIoyCPgiwCWQSyCOQxkMdAHgNZDLIYZDHIEpAlIEtAloIsBVkK8jjI4yCPgywDWQayDOQJkCdAngBZDrIcZDnIkyBPgjwJsgJkBcgKkKdAngJ5CmQlyEqQlSCrQFaBrAJZDbIaZDXIGpA1IGtA1oKsBVkLsg5kHcg6kPUg60HWgzwN8jTI0yAbQDaAbADZCLIRZCPIJpBNIJtANoNsBtkMsgVkC8gWkK0gW0F0qt9/WpqKUjXKpGzKwRPUzagVtaEO1Jm6UQ99lwjP7HN5vqdnzDpyoiPL+u0s2RR7GkO/rV+/H03fb6HfyB97wlqvO8TWrlr9ruhAa05bx2MEmPlzjhlkU0/qQwNpOJ7RnkiT6TaahrjMbJpLC2gRLaUVtJrWx7/MZZs9eC56rdnL7M2z0X7mAD0b5bnoUJ6J5pnXmzfwLHS8eZOef5p65Y9HBuTuwRk8OIsHT4PHVgb1iscUMvBlA+65+Nz6awv6/5mkv32qv3mqv3XqQZzIwP/6aSD28hE14tahY4+6v+C58wNIZyPq8SC252D7IWzPxfbD2J6H7fnYXoj0UaSLkD6GdCnSx7HnMmw/iXQF0qeQrkS6Culq7LkG22uRrkO6HulG8ppXsOR5otmZ5WbQLfoYyr9DUcdePGw5PoJbiIgx3Zb5SG6/fNxGbG/S2ydFW/oiyrdA17SOBB4/Tvlrb/qtOZMKrcA+/h9egW2FMg01l8V1mYfanBBf4/pPauNhC6Wwj0pme/bfLjK7sq9VGpGri39S0wXc5vSq08R4TOx81nUhX60+rmf9l3zea5tNPGtD75OvqZf7tfwoYyJ6yCIFR8ZWSQsf34n7Qy/XShv0obEczqzBr829M/fb+g7kZGqH/vlc56/vsvBTCfx1QO9/rs8QuzOvbDznk2tA/2tWQT3oN3jZGHF+SYcz51KHa0HXhoNR67fnk8PWjtk9GWPfb8+pLJfJw9atdIoFCltK/2vBr9x/fnz/BvES18HYfLZ6nuns5ya3fN0aFlgxB17D79XuXOWXr19jbnX5rb8+7gr5vRqeuxzzdSyNPjR/vDz5/pDC11kbtoi+fk601t9+30nhfE8//6V/0PlPz1dfBxWQa9n4M2CwjT8BezZC2hTp+JM8kEHx9Z7F8FGXaM8TubUgbWP9Vrw+8d76Cfq5O5JjfV3LeBkSoLH+BmtC/M7nE/c9x+55vpbTYvBItT86UI9gPH49aD5kzucxapG5lr0wL0YbfXXpESf3LLT4+fMF2eflUdN8zFxsLmEfMFbOifFy9vgDyvlLJdSaPRgvZ5d4OZv9jnKeWsIT+f/55ex7Tuuz73lbn/P/4Pqcf56Uc+A5rc+B5219LvqD63PReVLOvD+4nHnnSTlX/MHlXHGelLPfOb0++5231+fCP7g+F+KOUcF/+uu5jYngX/3657ySznBEi7hGAR1BMp82N5gbdbSJ9DP92pdsEvfnlv8hZ41FsLTd9N1G+hup2jcM6S3cb9Qtfo+Rw7OJV2kW/70IbZ48D+6E+W1P2zVAy7g23qpGmXncpubE29SK/+9Km3YWpbXJi6jZfedRWfOfX2x7weqfdoHrH7P/5Res/mkXuP4x+7e5YPVPu8D1vwxp+wtW/8YXuP5NzkJ/vd7mdXo41zj6++TeyIDIuIheqWSvxrnW0f6aJ9I/Mgix9URNImvclZHR1jBrlFqn1lg3aA9I7xG5ITIlcpu6Xt2i1qh1Vl3tjwX1GyiNyF8it8NKJagIe5nZeCNjC2pDnagPDcD7stmnFRHhEIlkUZxCIlWkwq/Sb9j24PlMD55A0z5yH0TU9Pc19PpqML6CO4luozuxdjqV/FhNnUVzaSHvNRfrpgsF+2IiKq7mNFlcge1rsN0Z2704LS6uxHZ38C7Y7oHtrti+FvvoYwWOkthfYU8L+9iiG6epOFdE9MSx3bHP1SA9sOc1yEH/6iBPG2eXODZKJ62Jis7xc0ukdqy+vG311xJ0fXlbeAd6Y09jp9OJb5Doeo19N4MiwyM3cg1N4jpQbiU3A08yeCI3JzvwkLPw1XZ1lscZkZt1XUU+jhwnci9zW5PrrnHXUFl4+NlYV9FXw+/P7eTyPPULOXkjV0V6RK5BieqcVKKzPVLrsTtyiPXIcRuzHqvd1fFS5fBf4VL93hx93P71Xya85HOT58nWWvmLtd89cjVsVQ33WaizOu6nz63bqCE88dzaFcpt1S/k5j/pN+474r9F3ZXuSryhyBPpKfyFetjS+NN5rz4Lm+TPQsrG/87uOL0qVTKyNrIusj7ydGRDZGNkU2RzZEtka+SZyLORbZHnItsjz0d2RHZGXojscmu4mW5NN8ut5Wa7td06bl3kqktEKG0iSqTiuQ6PjIiMjIyK5EWuj4zm/nJM5Ebe6y+RyZFbufx/jdwW+VtkauR2PqayW8VNc9Pdqm41t7qr1yo9rNMu1rUGn0PFegG1WW1U+ukzr3pcPaOeJY+xjd4VQ8RQMUwMFyPESDFK5InrxWixVqwT68XTYoPYKDaJzWKL2CqeEc+KbeI5sV08L3aIneIFsUu8KL3SJ/0yIIMyJBNkoiwiw7KoTJLFpCkjUkgplUyR5WSqLC8ryIqykqwsq8g0mS6rymqyusyQl8kmsqlsJpvLFrKlbCVby1x5uWwj28p2sr3sIDvKTnK0vEGOkTfKsXKcHC9vkhPkzXKivEfOlPfK++T9cpZ8VC6Sj8nF8lm5TT4nt8vn5Q65U74g/yE/lf+Un8l/ycPyc/mF/FJ+pTzKq3zKrwKqkWqsLlNNVFPVTDVXLVRL1Uq1VrnqctVGtVXtVHvVQXVUnVQXNVQNU8PVCDVSjVJ5PGZNUn9Rk9U8NV8tUI+ohepRtUg9phbzWLaWx7n1aovaqrbx/1vUXvWG2qfeVG+pt9V+9Y46oN5V76n31QfqQ3VQfaQOWclWcauEVdIqZV1klbbKWGWti60Uq5yVapW3KlgVrUpWFauqVc2qZWW7z7nb3efdne5L7t/d1903uWYvEr3FYB4JbxDcfsRL4gBdJC15MVWXNWRjaiCvkNdQO3mLnEJXyQfkHLpWLpErqK/cJffQEPm1/I5uUEGVTOPVFeoKmq66qmvobh6Xx9Asdau6g+aoJWoZPaqeVhtoCbehzRRrPcvUc+p1Wq4+Vt/RVquyVZletdKsdHrNqm5l0OvuBncTveHucHfQW+4L7gv0trvb3U373VfdV+kdd6+7lw5wC6xDs8R8sUA8IhaKR8Ui8ZhYLJaIpeJxsUw8IZaLJ8UK8ZRYKVaJ1WKN+FJ8Jb4W34h/i2/Fd+KI+F4cFf8nfhA/imPiuCRpSI8cJAfLIXKoHCaHyxFypBwl8+T18g55p7xLTpd3yxlyvlwgH5EL5dNyg9woN8nNcovcKp+R78r35PvyA/mhPCg/kofkx/IT+aM8Jo8rUoaqqqqp6ipD1VCZqqbKUrVUtqqt6qi6KkfVU/XVJaqBulQ1VFeq/mqAuk4NVIPUYDVE3aQmqJvVRHW/mqUeULPVg2qOekjNVQ+rp9RKtUqtthKsRKuIFbaKWklWMcu0IpawpKUsy7KtqOVYrlXTynKfcZ91t7kvuq+4e1z9XSsLNU6ocQu1XB61nIFazkYt56CWG6OWc1HL7VHLfVHL/VDLQ1DLI1DLY1GbE1CDd6EG70bdzUTd3Yu6uw91d7/217x4+k09Fa/HaeIOcae4S0wXd4sZ4h4xU9wr7hP3i1niATFbPCjmiIfEXPGwmCfeFe+J98UH4kNxUHwkDomPxSfiH+JT8U/xmfiXOCw+F1/InvJa2Uv2ln1kX9lP9pcD5HVyoPyrvE3+TU6Vt8tp8iE5Vz4s58mn5Eq5Sq6Wa+RauU6ul6/LvfINuU++Kd+Sb8v98h15QB6R38uj8v/kD6q4KqFKqlLqIlValVFl1cUqRZVTqaq8qqAqqkqqsqqi0lS66qx6qmtVL9Vb9VF9VT91oxqrxqnx6k51l5qu7lYz1D1qprpX3aeeUMutsWqFOqK+V0fV/6kf1I/qmDpukWVYHstr+Sy/FbCCVsiqYWW6m90t7lZ3l/uy+5r7xnlRj4Xe+sdl7s9jYOydf6kYDfU74zOtdjxuD7HaczrUYh9bDIv+QJ7og1Yn8CvAO4P/qHl83X0q7ls0sS1FQCRyOcOiGPnZtxWUwH6uRUXYT02moqKkKEMRcbFIIRv+vCPSRHVyRQ1Rk0qJWiKbyoi6IocuFvXFJVRONBXNqLxoKVpRRZErLqfKoh37yGnuEfcHqu8eS/YT1uDF8IJyxXRyCvyeNT/xe+yJ5tjbxfQ9kwaPj6NxnIdbQz8ivraHUAA+VNlCPtQ6vQfvO4xLOEKMxu8+nas12BqCf02n2N2bsbsV1v9pFvGIfihzYe30XQwzMBfKf6fG+aRf/psudYusctIvuja1b1iKUsiDN/l49JtiHNZeDHeeJo810NmE7c3Y3oDtjdjegu2tepvy3yk8NF6b+kuGxXhc5ZrnsbQTKR7X11AnHtnX0RU8Em6lzjy6H6KredzLoIk8Mtem26wcqyndbuVaV9L9Vl/O9RFrvrWElkTvjs6ilc56ZxdtcD53y9Fu9JpL4u2xVdyn1ufdwKl+d5+esV3h7Yxv3I3R3w+IdOM58wCeNQ+JDNUz7siEyCORhU435yrMi4YhxydOezp5Y/xX9p4L6jKVt9NEAyrN9dGLMt0jbPd28SOTC9r+JtRERCB/0bvAQslxC53+u149uRNtPH+PP++a7617NGnLKNdfsixOHllSliGfzJRZlCDryvoUlg1kQzJlY/aRJHugzUix59mGoux1dqDi7HN2olLs4TxHF6nn1Q4qrXap16gse3N7qbL256gKe3MHKZ09nJ1UCzM/m/+m4yr677TAyS1o80ktZMhpLej037UFSyAmNr3QPrH2+2fZUfc+f4Vfo70a7dPcx96M9mXmsh+j/VbttWqf9XH2VrWvukqsKeQjxDyEE75fzPPL9xOOs4egvQPtG+T7gCZ7f9rz034f+wva97P2WfutA9a71gfWh9ZB65D1ifUP61PrX9YX1pfW19Y31r+tb63vrR+t49wEvbbP9ttBO8FOtIvYSXbEFrayLdu2o3ayXcoubZexU+xydqpdwa5kV7ar2FXtDLuGXdPOsmvZ2XH/JOZtvsa+5hvuPne/+457wH3Xfc993/3A/dA9iLiE7ntL4bmDGf+rr/O+vmJPiehnJabgezF/3viuELXUcc9aLEPw43lOxp551bgf5mG/cXrcc/zzNPWJro7ptHHanUFLA2/Z0u91mfyn2vPMdow9M5Tvo275k3T0UMm4LzWbZzSKtZzHo8wCuZCS5SK5mEqqoqohjy/NVRf2sXqyf92P/ad+lGcfj06n0Y7HCRhhJ+QUMSJOUSfJsLhWIkbUkY5tuI7rlDRKOhc5pY2yDv8ZKU5FJ80o51R1qhuVnBpOppHm1HKyjapOHaeuUd2p71xi1HAaOo2Mms5lThOjltPcudKonRxITjRaJIeTpX57f4EfNeVPtpzUpSfSpSe/Lj0l6NJTEV16KqpLTxFderJ16cnRpSdXl55K6dJTGV16uliXnsrp0lN5XXqqqEtPlXXpKU2Xnurr0vNZdbvpFu8rGsRbjyVMIYUtiosSoqwoJzJElqgt6oh6ooFoLlqI1qKNaCuuFb1c/f2kMPvw/cUAMVAMEoML5tE8i9YxXlmDPQtiz+IQpTjPsFfcBB5EG5y3QaH2uvVXntfDFtazaJJeqdj7qcFz6RQ5mufS7eU9chb1wlx6gHxWvkDD1Ty1mMawFt/RLVYye/GrdXyNXrbGWDfS362brXn0WvTe6FH6txN2wsaVTjGnmNHFEY4wujpRxzG6OaWcUkZ3p4xTxrjaSXfSjR5OhpNhXOPUdLKMnk5tp7bRy8lxcozeTgPnUqOP09hpbPRzmjrNjP5OF6ercZ27091pDHJfd183Brtvum8ZQ5KLJBcxhhVqfw1+kyV4b9a6GGvLmrKeZVi/DK0Xa5WjtWFdWA+tRXIR2L1ZfA7S8DeezxC1MY++Xt1SSPvYE1bPFHh6eo6MngDXt4rv2anAZ3yW09KISA8XI2NxY+7Laql6qpFqqdoisjYYsdhRVnFES8ueiI1anawrrM48+2JtrLHxvOtjXlKtIPdwoWjjUh7nH+BxXEfdIvybH7HoXG4ZCwryiD11KrC22Bk5RsQ0RLfuhbfwpDqijllUKM7DPoCewRW08j2Uwj7zR3h/mSF7yoHIxZevtT6H4cG820M5Rmzetu0sz2PQNT8ZPV1VECk9ESfNj5DGop869hmLd34Yj3FWVZkFMc168SjmYHWTtlGBH/SUWoloJSxWKEbJPo99nT3QHmQPtofYQ+1h9nB7hD3SHmdPsCfak+zJ9q32FPuv9m32NPsO+y77bnuGfY89077XnmU/cAZrnWIjrOToFhq7q/I5/TvPbMrIilJ/XyfIOTTkK78xz11MzF3KILeyyC0D13ND7m22455Cn45UIzp2+rx1+/+81/PQez19dv2/ejof6yn2xub8Efx5eNF9xXVimBil43Tcp03j+uJ+ja14r7iXvHp9gPeZLR6igHhYzKdE3Ytx3S0VS6mYWCZWkqnXfthj1H2Eyza8i+ppG1J9tt8sulTbjxrCn7iMe8kj1Jft+AP1U8fUMbqO+8wEGshWLEp53GsVoxu453JpDFsxi0f+7+xsulWXjnbq0tEu+CIv6fLRy1zCg/T3+Ehi4t6Qxdhukt83n7K68bCYJx3pcr9UgnumsvJimS3ryJfkbvmKfFW+JvdgXeKt+JrED6qUKq3KqvJYceijxnHZYqsKurePtYVjP72KYI2wxqJOdrlvkF7RRW99Sp+pNdXPnM05D3X2kJ+9rkrsCVSxqlBEa00Ceiv2hN7E+r1B8wq1pR3nYRl8p49baD+N49YvW+DZ6G+reOCXEvxPTf3WXr6C+ep195+2/wun7a8t9ob1BlvsTett9k7esd7n2v7I+pYS9HVIxSn/iyP5eezS58Aq42q1VumIvofP+C0Rt+sDVCa+fyZGwCo4Qt97nah7UHGl6CK665kGz3/bOh3hwVV39B2G1eLrfPA7uE+7n/utH9leMa9gr/VPvqbCtmOn2XXsunaOfbl9pX2V3T3uH0yI+wCz7Sftjfar9gH76+hD0Uejy6NroluiO6J/j+6L67WB9TKNEGbWJSLDInplhT1DvWIjRnK/kcd+ZECsFS9yn/+l5L6F/cUMqiYHyYl0ibyD/f2O7OsspmvY13mG+rO38yENkx/JjyhPfiz/RdfLz+XnNF7fEUA3yR+VQTezD9SJJvO1NJCWse+TRyvY/5lMTyP6/6zaorbRNvYyr6Sd8F9fskZZo+llZ5OzlV5zn3OfJ30tppy5jRa0s19oZWhhb/zE1bypoG5f+q+1yoXeOubDS196yv0NPMLxaIZ7A9jDjo35xX7mToB9P9s6dv/XWsUbH/OaxSOHCZzzGu5De8rryZJ/lTOoMvdYD1Mtzs+lBvpIasvHbqP27NXsoU7s1+zDN708PBvkvl3P0Qu+G5pZYOGXsaYWizboqIKw5nPPmhx9ILqZBrtvc/969y/m8cpZ5WFgXKFC43kKSuZVxRXPeKx11iaqYL1gvUzpZzWqwhco0OHvfEwotsaNmkzkmsyjDNRhA9RbM6sf11urqIymUmvU2zVnOPsJDZvFbK+KqvT4PmWtbdZOqmAfjwpKd/Y7+3k29qPzIzVyo26UGrtXulfSZe5gdzC+fXE2voHWf2zcN3iVj4nEY4ysKCn2BJK5vkvKi8hmj6AMubKmzKJkmSPrUQmsfJXCylcZ2YFnjGUxY7zYasflTbEesR6hKtaj1qOUFv0q+jXru55LXQ0je/bvKFdsrqnvAdhWSO8/J66YULC6fTFbS3sxF8ODbgob9MfK9bDol1z6MVi5HofS3/G7Sh+bw+l7DLb/V5Y//+poiKsjxNcbb6nmfNUpXF1lnQPOAcpyjjvHqZbL/1G229XtSrXdoe5QqnOW10WTQj7za7/pPKzhKfc+nXRHm7XD2mntsV6PUtSIeqP+aEI0MVo0mhQtFjWjkaiIqqgVjbIBSkZLRctEy0YvjqZEy0VTo22ibaPtox2jV0a7RK+Kdo9eHe0RvSbaM9or2jvaN9o/Oig6ODosOjw6IjoyOiqad+J6Me4sVJ4/p71UZv9FjyNP8bhYSb4uP6E68giPf7lYr+isblQTqQ97ww/TYPWEWkET1BEeXyZhlrnQGmeNp8XWCmstLbW2WFvpKW1DWmXtsY/RGm1H4wO2pNc4yNb0Gx9pixqH2KbC+ERb0zjM9owaX7BNXeNLbVfjK7ZsqvGNtqlxlK3a3viBLdvR+FFb1zjG9u3pIW1ZT4Bt29cTYvv29yRoG3sS2cp5njD73e95RPT76FFPB/attnk68azmRU8392X3FU93Pcv39NDzYE9PHou+8/T6TW2p0FVvTP9fLV6wtajftVOBTtytv+ekKCrPDp3HnMXaW8FYSQUj9IyC/fWdjn1FX67z68R17JEOE8N4TjlKjCIvz90dRHOTyY/ROiDLy/IUlBVlRQrJarIaJSC+m4j4bjJG68qYdVeBd5RjdbA6UCurs9WZWls3W/MpF6P4MIziw7HKNOIn4r65hXyIPfFRYTBGhSifq7gsTkXZhyhNSTwqtOe+tqPVkS32QHQ2WRgbolzajZT8K+LPu34y/qzfZplRyLJF42sg+p583JHPPlh/a2D0weicU+zeg2fcb1j7rDcRAfyYZ9+fWYetzxED/AoRwO+sI9b31lFE/0I8My9qF7NNxP8kon+O7drJdnFE/iryrD3drmZXR+wvU0f+eKb+oD3HfshebC+1H+dZ+wp7pb3KXm2vsdfaT9sbeBa/yd5sb7F32S/Zu3lG/5r9ur3XfsPeZ79p77ff4Rn+u/Z79vv2Z/Zh+3P7a/sb+1v7O/uI/b191P6Rr5xYD5FJR7mHqHDWNrjm/7H3LXA2Ve3/a++zzxnmTLtzzr4PryQ/NDFJkiS5JUlGGPdbyswYjHEbGpekyS25hUpuuQzdkORWSZJ6vb2SCsk9CUkuJYT+z/ruNceZGXKJpv6f97M/57ues/Zeaz3r/qy1n/2sCF3jiaHp1GfHYU/1pH6G5u5ZVPvZVPdzjVf+dP75HsY9ZjXzXrOmWd9MMB82m5rNsKfxZ3P+Z1tNMawmzrVeiVpvKv4Xph7F342U5m9HqDxmUy/IHd7tncVF6K/CO0Vv64vtdudZW/KnG+HZjZRStDuOYqSMwxhZFWNkW2OjWZl1oDHpffYRH43YXj4CsYPYTz2E/dTDWBfxFSezTlgnwmsSbqErwLJyrdq68lUb1mvFsV67Geu1KghXFau2e7Bqq45VW41zIRHGQJhiCHMr1XNldhvCNEKYRIRp6uwmnvh6r5C7VsN74RDkrCKQsMqiFOKxhivP39VSLFzaqhDWr2jAcvQ3NwkOPhUcxIGD28FBbXBQhzj4mCWDg67gIA0cdPtTvHuwvmVY35ooHfcrL84VP4VvFLjbLGpuBmruBSrZE0YhSoO/SbyVas5it6HmelLNfcDGU819wZ6nmtvEXqCa28Ve/FM8yth3YFjzG6LOG0AiZuALa1DsR0RjJepgJVqDWuVyloB9hGZmZ/Ml1pr61Vn2rHPAOcTmOb84v+JruCvl65/c9nLX7tdXoV9eeQ6iLhKS11Yj1FYzMXqVwrsid/zZwt9hkPzXItSKRWo08W9A+Pc8/KuP0doYEbJMRMhvcoX08JA2tzHdOvw1Ss77cfebE7wXz9GUwpcj/E24+8WI+z7c/VLEfScuNKlILnwCO93zqTW+fZH97nvy7Hin5drz3k7zwO8kc5W27rYSrEfDe9+7rP1chrPbiTzyNwFFRR63okwMm+soSCF+apmsjzETwqN4zleh2/h9fnoU84ViQxVDd4TahtqF3NNXYyNWhdvdMrbdrzHb2on0hI9Sq0Sp1mTxsK+dMxPvQJo60ACWQ6jyNiwyaqM56h2ATzB+QlzuWHJOiLu8eHIsM8v6j0Zx6JqWwrfC/N0Gf7cSy8qSzMQQjwlMYTnfckhayTxxSfo7PEZ9n36Saq0I1c4IcMrPoa1JfMZhJFJYSeK9GPauzvF6pbHzOFJZzi7bTsK4S9WnuVTNHedMrD9fyjkn0BVD//KEUrSviFduNbUElZmH6qUy5dlDpVifNTFaut9S6EvC1OowtSzWIaoTvxumVoepZUYrvHVcItzVwuUWotzviXiLk0XqAfpXktxSlH6l2NhwvLHheGPD8bYR8bYR8bYR8fJWnPP9zESU6q4C1AydEHpVH69P4WPmecZuvj8DvSRWDiP4rRjBb8MIXgEj+O258jMV+dldYPkpFHopNCO0ILREH6tPovlh1Z/M11KRrxEFmi8uXyMP4D4E7m8C9yXBfSlwXwZ838x7kvaYlqx103poz2rP5aqfGQVcP9Ghw5qsLdZWaJu17dpubZ92WpcucT8wJw+rkIdvCywPsaGpobf0ifo09y1fhI6L+14nn34LZJOr07/GIe97ClBHe0po4Z/My+pcfeq7gts5v8I8UCk4K50PzzM+FFxeLm98kLUkrft52lVB8c/b1f7Qb5c4DnB+q4Xlsb2QruL0apcQuuC00HPz/D14LqtX/wfxvA88l9Nr/I15zq2tvR/t6lXINpf2NpmHrYOwB/A2eWZoNvWEObQe9GA9qGM9+C+sB+OxhiyPNeTtWENW/FPjIk+/eljO/uEy+zTfiXqUa2TTGrMPya154zt4BfGN0EZRfGO08cwbUT6uPZkfWd7vyC+/jA+hjEeFxlAZjwvNoDLmezk69nL+hb2ceOzflMf+ze3Yv6l4WemUQTo/8X0lWjXvoHRo3Uzrn2OaLPTQLjUmN9eHIVu5thpgeeMK4jiCsl2kLaeyfVdbxaIuK44qiOMohfHhrQ+jVf4JpvN1PjNonS8xh781YUX5WxPX2tBl8ncMNVuUvxnWy+s1mXYFcfyM1ZxrZQI2Qy4rDvfLgV+wIl14WSHdfn8cI9Vig1tzU3KF7Wf0YyGE0vKl9yvSe5Pl3jGWYV3t3NuiEwU2Q0o6b22ynWwvYyxWj7VYY7xxWEolwKX6shEceojDx2j0le1WrJ1zgkbHZQUmmXhC2aFs4oXzLYHvJiI3+Uv3ZAGW7sxLKt2T/5DSnSlKd3xE6Z4qsNL16HO59adLKuFT/5AShu19qZKQoAu2hGVWNDQ2NJZS5bxKoZ2hnST5HA0dxfuUDkzRumpdmVcbrg2neWO0NppkgWnaNFZIm6nNJJnlLe0tFq29o73D/NpJ7SSL0c5qZ9l1ehG9CFP1W/Vb2fV6c70FC+gd9A4sxPe3mKb30/vRbP2E/gQz9Pk0cpp8T5k5sGdS1Ohv9CdJrp3djt2AsiuOsuPvrmW0Bap7qcHfvO7/iaWa+33ob4TeUDbx25X4HI03bHW0JiQ38He010PmC+Tbfz/NWzjPMysMy3ARduFIZs15url4mn81eSOVVDaV0NGclKgkZlIJvEM5P4u3D5TT8BuI+foC/U33LS3PF+VqAOXIna2L0WxdnHLixZwdwGwdDKfZQKR5lq9LriRNYYfHI2Z4ruF5I6ymcmupr7PFbCVby75kW9hOWlkeJEnrBDsrKVK0FJBMqahUQiojxUsVpSpSNammVEeqLzWSmkot/3wJWKVRAuvZRpK2N7KtbDetuLiE7OIhkqkU+p2iivExRZKlQpIq6UQJvogqJpWU4qTyNCqVlSoQVpAqE1aWaGVM3NYmrC3VI6wnNSRsKDUlbCq1JmwtdSDsIKUQpkhphGlSL8JeUiZhpjSIcJA0hHCINJJwpDQOWlCSRPOLNJF8XpCmEk6VZtF//qO2I821/0ut8gab5G/jVnsV1yG2PyZMtD8l+WyWvQ53D+PuetBHQH8O+ijoDxHqE4TaAP9j8F8N/3/D/wv4/wz/j+C/Fv5fwv8X+K+B/3/g/xX8j8N/I+hfQW8CfQL0ZtAnQX8N+hToLaB/A/0N6NOgt4I+A3o76N9B/8hpxw/6EOgY0DtBS6B3g/aA3gPaC/o70D7Qe0FHgd4PuhCnnWhgKaT4PfAA8CBwF56UEepb0ErE89uA+ziif/HTWOfCatYK9LHfC2zcVWzJljDnDmCS/YT9HLMxzpXj45c92h5N98bz+dgp49zMSkOu4P8Z/pdCbkzkhmsWzeW5kdhF4i2IHYvz54Zz7+rWg22Jujy73p5oP2+/YE+yp9rT7On2DPs1+w17vv2mvcheYsO+Gyxy5WjXh60X4Yts2V7k8LUwPZNX41zicuJfpXHOOdlKveSc/viKCC4Kpq0VguY0g+b09dCcvh15SYTmdBtoxyVBc7oTctEvIhfn9MBX/qPzwXnnlgVcDZaLrbdp9rS32787TrgtTRK5V9jfReM6kscc3euYMJcFVUfGBbV2ub5uc2i7tIe+bg/ovGRA5+UF6OtOhr7uVOjrzjY2mmfZHK4xK62HxmwIGrM6NGZjoTFbFBqzxaAxWxwasyVylco5bWb1f+WSp7XwHe9SolS8LL9OsMQC9k/2EfuY/Yv9q33S/s0+Y591JEd2vE6UU8iJdvzhvjEqHA/F/JfpDc9gDajHH2fp0LnMuESOed4b0rMDI/JelOaGJOLbtYPT2bWEQ2ONSbNFEZolimk3aMVdzUyuT0yp0rhvnbYuXyv0UjmkOV2qGsHhH+vXPnVx6yO0/rjWusd3mVXM6mYNs5bZ2Ew0m5ttzfZmB/NR8zGzo5lkdjJTr7l28qWVr6vBfJBKOPaSS7jlH2gw//+js3zJPV7aI0rOR/h9+GvhnO9Cd8BSNLcTzS1E/xQ6Ass2OXZtJO0xrZu2SdulF9fL6RX1Gmi13K7GmzlazflacOE8NmxyrGr0Nz4wPvwbtOzOsKLTC9Zzhue3mnOtW75V1rrLqm49RLPCdOtla4Y105plzbayrTnWXOsV61XrNet16w1rnjXfWmC9aS203rIWWW9bi60l1lJrmbXcesd613rPWmG9D33ywvZh+5R9mmYL5ngcxfE5hbETOJC/L5XbR9T9W3nrPqIuL70O/1d/F6kVKulu57cdRf3Htf0UYfnpglafLlZOV2wV6qL5sy8hhxdoddTm+P7p+nCrk5lFo/FzJGNMDE0kCW56aDreFG6n0e6EdpoF9SJ6PDNJRk9hcSRdDWS30Xg9ht1BY/Y4VomP2+xOGrlPsrv0M/oZxjWB72V30+hbk1WnEbg+q0GjcAKrSSPxw6wWH41ZbRqPW7A6NCa3YffjC9K6JHudZK0ve4y9UC7LQBehS0TfKpRji4fknub4jonbW8s9D/F1SLJoARFz0oXnlAtykMv6pBRVgNqag0Lv68/g3VlungoVGE96aEjo2dBHoU+1FlprLVMboA3VXtTWaV9qB7Wj2q+6Tx+mz3TedT7Kx3PhAtRCHB76RH9Wn6sf13/l++bORlrZ5uUvugC1oYaFPs7Hj7/g2p3WSuvvvOesIelmLdst15cbyc3ltnIHOUVOk3vJ/eXB8jB5lDxeniTPkOfKC+Sl8gp5tbxW3iBvlrfLe+R98iH5Z/mUR/YU8qge3RPrKe4p44n3VPJU89T21PM09DT3tPV08KR40j0Znv6ewZ5hnlGeiZ7JnumebM88zyLPcs9KzxrPp54vPVs82z17PAc8Rz0nPKcVWSmkBBRdiVWKK6WUskoFpbJSTamp1FUaKE2Ulkp7JUlJUzKUgcoQZZQyTnlBmarMUl5VFiiLlXeVlcoa5VNlg7JZ2a7sUQ4qPyunvYo3xhvwmt6i3hLeMt54b0VvZW81b21vPW9Db1Nva28Hb6o3zdvL29872DvCO847yTvdO9f7unehd7l3pfcT73rvZu927x7vAe9h73HvKR/zHvf5fDG+kM/2FfOV9MX5Kviq+Kr76vjq+xr5mvta+zoQpvjSfL18mb5BviG+kb7xKIsMtxx8k30zfHN9r/sW+pb6VvhW+9b61vs2+3b69vkO+074zkYpUYWi1Cg9KjaqeFSpqLJRFaOqRtWOqh/VJKp11GNRqVE9ojKpdCdTyZ0g3udGDYoaxs6d18G/ZjJwLkectl/7lVXUZT2W1dJr6U1Za5zLka6n6xmsD87lGAjdpqE4l2MMdopeNl433mQLrT7WOLYUZ3R86dpDwUkdW5z/OuvYN87nOC3nK2cj24F9pF1MdhrY44EpQFoTOw1AZQE7AacyD3/Cfhv/ugCnA/sCZwBfxlOdRXzTRBjXTbanwPcN4CDga7gzAM8nCEwBci4SQGUBewI5FwmCiwRwkQAuEsBFArhIABcJgosEpJ4guEgQXCSAiwRwkQAuEgQXTexkSrkJqPHkT/+Ff2/gdGBf4ATgNDzVG08lInQiKB46UYROROhEhE5E6ESETkToRBG6KeVdcpqCSgb2prvki7vNcLcZqGQgv9sMdyWnOfk0t7sDM4HTgSlAHr6FnQqcTk+3ADUa2B3YBzgNOBw4lGInpKdct5dwpwh3qnD7UHwtKURLxNQSqbdE6i2Rekuk3gqpt0LqrUCNBnYH9gFOAw4H8tRbidRbidRbidRbidRbidRJwnE62E8CuwN5abcGD63tZ4Aj6bk2RD2K5x7Fc4/iuTb2HOAzwJGEbal8PRxRsm3hkyV83sa/zuLfBLjd7KeFy+Nuh9DtROh28MkSPm/jX2fxbwJcN3Q7Ebq9vQQ4ADgYmALkPaI9qAnAgcBBwKnA6cAxwLHAZRQzxYWU2iNF2XkEKTyCFB5BCo8ghUeQwiOg3OcGAgcBZwPnAMcAxwJ5Co+IFB4RKXREXXdEXXcENRrYHdgHOA04HMjruqOo646irjuKuu4o6roj6lp2khB3EuJOAjUa2B3oPjENOBzI404ScSeJuJNE3Eki7iTETSNRrI5ey12MbbEGHxmEb4LwTYBv+1jLzTNc/sVnCZwNmsb6skHQ+JnMZrHX2SL2LluFd9lb2V52mJ2QSEqUApItFZNKSfFSJam6VFdqIDWV2kpJUjo0A/iZTQx2pv2wM12UUm3oTKfUGtqdyVXIpdYlfKYLn84RVM69NOF2Eu4Q4Y4T7mCH5+hhh4+YD1PcL1P4hxG36zNd+HSOoHLupQm3k3CHCHeccAeTKzuNkFIjO1m4E4Tr5qNROB+NwL3sNMa/xuL5xuL5xuL5xuHnG+P5/8lB/5ODrp4c5M7VyRgNkzEaJoPKAnYC8vEiWUggyZBAkjEqJGNWT4YEkgwJJFlIIMmY45OFBJIsJJBkSCDJGF2TIYEkCwkkRWAKkHPhUlnAnkDORYrgIgVcpICLFHCRAi5SwEWK4MJNPcXOcV0uUsBFCrhIARcpgotOkGQ6geKjXychyXTCnNkJqXVCap0w5ndCvJ2EJJOK0KmgeOhUEToVoVMROhWhUxE6FaFTRejOkHQ6g0oGckmns5CDuuBuF1DJQH63i5CDupJPV8wGXSGJdEVaXVGaXRE+DTNIGmaQNFCjgd2BfYDTgMOBfAZJEzNImphB0sQMkiZmkDQhiXSjEN0QUzek3g2pd0Pq3ZB6OlJPR+rpoEYDuwP7AKcBhwN56uki9XSRerpIPV2kni5S53H0gRTRx3ZpXtrdwUN3yDfdIQf1IKovnuuL5/riuR6Y3XvguR6Qg3pCkukpJJme8MkSPm/jX2fxbwJcV5LpKSSZXgjdS4TuBZ8s4fM2/nUW/ybAdUP3EqF7Q0rpDSmlN6SU3ijF3ugRvUFNAA4EDgJOBU4HjgGOBXIppbeQUnoLKSUDKWQghQykkIEUMpBCBij3uYHAQcDZwDnAMcCxQJ5ChkghQ6SQibrORF1nghoN7A7sA5wGHA7kdZ0p6jpT1HWmqOtMUdeZQg7qh7j7Ie5+oEYDuwPdJ6YBhwN53P1E3P1E3P1E3P1E3P2EHJQsJJ5kIfEkQ+JJEb4pwjcFvr2FHJTxl8lB2UIOyg7LQdlCDsoOy0HZYTkoW8hB2UIOyhZyULaQg7KFHJTNuBw0R8hBc8Jy0BwhB80Jy0FzwnLQHCEHzRFy0BwhB80RctAcIQfx1tIIKXE5KFvIQdlCDsoOy0HZQg7ivDTGv8bi+cbi+cbi+cbh5xvj+dx6Y66mVczfUm8st4YYPwWjpNPfGeAMdJ5wBjlPOoOdp5ws52lniDPUGeYMd0Y4zzgjnWedUc5oZ4wz1hnnPOeMdyY4E53nnRecF51JzkvOZGeps8yZgtg/tQ9R7KWcUuwmoVETF9aoUSJ1mqG3u8w5EWuhpCTiYkpYbysg9vquy3WH7/OnI0b3rnpBPWn/hU5HpJLxsUZ2IbsEa27fbFdlPe1qFHIouJmNUjnBeeLWq6gVPO+8hLptHrH/qF71+PPm6/prnC8q0Xy5uv4qx543T4FrXlcDnCfz5Spw1ePPm6/gNc5XNPXILOqFIyN7YL58Bq95ennzHbrG+Y4SI9IwGm0mO1Py5Th0DVPKm1ftGuc1hsZcd8QdTqPtsxhdMbbmy7X2F6T5d58T9D+cE4wCmROMaz4nmAUwJ5jXeE6wCmROsK75nGD/LeYE+y+fE5wCnhOcv3BOiP3bzAmxf1GaERbnpCK89dNqdTi5Pnubfdbp6CQ5mbQS5mO1wprQGrQB49+D6cy1wXgh/uQwf83AXw/wNwSliVP7hJU2bm9G0rlNQMn4QaRSlJWh9VYJwVPRP3ja/bo9h/t/MfdEbYkV4naA+TmD9jv2e/b79gci5pqsEqsLi3cu/xc7bZ3Hd5SdsybXj+XYz+OxlSAuy+RY/5OK/eHTUVRqSVTWLVkPKsMuLOcbRglt8M+UIyz2CTt36cAlKJ8WIt0SLJ54LMGqEK/CCq10g0j54uE1toBlsYmsAptBvx5sBBvI+rIxbHLEv7mw81b5KuXHteG3E+V4H7BrBIeuJb+ngDPAJ2+NMtdo4//M9wTXfVl91pbym0q/KlSTdVh16l2PRfxLp/tuaRSPKI2rkbrK0th0Ku1x9OvFMtkLbAhRI1kK0YPoufirU1IaeNKGA98CT50i+EMt6mvyc2nvFlxWIo7iqEXGUY+oiZ4dRz28PNF1RcnceK5k/mRqGrWUxdRm+DdrWdR+5qEFzUAbcineqq5mO+p4Aa47XAHvdYj7itRiKlKras4y0I5S0ZJciretnNZUIqI1XT0e3BMp3C/xJQPhjUfzSNA3iXsyjYqFje5GD6On0cvobWQYfYy+xuOMf+/cR++rP65n6k/pWfrT+hDjbhEHl76LuvZNJD56uSfE8vRDQG7N1OfjXMrB2cFsMXPykbSSSP3/+HjqOej5hbFgj2A/Fh0cFhzBdCfOqcAsZ5GzCFZBpeBsYHb4G51q4Tq/kjj46fb8qs649ZgrjcVLI7N78XN1q15xPNw6a85Vm0nC9umVxMRQsjllzKRSlxhDNmqrtYihckQZX2kcVXKV8ZXGUjVPGV9pPNXylfHlx8S5KUK9uD8bzIbh6/hJ4vv4hWwpW8FWs7X4Uj3nK3XxXboUI/G+UITkwyR8L+R+M7JLM7WS2u3afdo72lfaCXwDP1Rfoq8xGhoPG4lGqhljbrD4V7we51Umh5KAKcBOwHRgD2BP4C5nHpM103mdsKTzBuHtoO8DvgP8ynmN8ARHvQMPpSM2fSgPqy/hz+hrOBoNub/xMDCR3zVSOW3GADdwtErTk1yS8tEYEEfjcRWqpXq8z4eOhI7xb/6dtk5PyvkRZ54zn9xjrqt1EG5X16Wn5jkL+Nsqct9kOTZm+e65bDQzuA5yIcYl0rcojvIh3VnIlJBpN4T9Xh9Gzkekw9Iv0inpd9kr++WAbMixcgm5jKeut4P3MW+SN8Xbw9vLm6EWV0uoJdVSahk1Ti2rxqvl1dvVO9Q71bvUu9V71HvVGmot9X61jfqo2lFNVruoaWq62kvNUPuqA9VBapY6VB2ujlRHqWPV59QJ6vPqi+pL6hR1mvqyOlOdrc5RX1FfU99QF6gL1UXqYnWpulx9T12prlJXq2vUT9S16qfqOnW9ukH9Ut2obla3qNvVg+pP6hH1mPoL41bKvVKSV1N/850tdC/lyiu1kToqS3xnClUL51SWOvm+wb93+X8Plwp9vx/n+yBKMaU02jvXeacn5bvl1hH/HpBTKfTP7Fe5vHyHXJnu1iK/BPlhuancQm4tPyanyunRzaMH0P3zXtHP5b4oltxX5fxX9JLcF6V6/qtWnqsO8Zb7Ssh/RR/OfVFeLnD5h+W+KM+5rxbnu/xv5L6olHJfbXGd+/9YniuZrtQLXOnnu/xnc18xgTyXk+cqkfsS+XP5RQxU+/HybfJttHSpJFdiknyXfBe1hqpyVeaRa8u1mSLXk+sxr9xQbsh8ciO5EYuSm8nNWCG5pdySFZbbyG1YtNxR7sj8cme5M4uRu8vd2XXRLaJbMDV6YPRAdn300OhxLBA9PvolVjR6dvRiVjJ6afT7rFL0v6N/YtWij0SfYB39/fxDWVf/cP8Ylumf5H+dDfbP87/NJvjf93/Npvi3+bexpf4d/h1smX+Xfxdb7v/W/y17x/+d/zv2rv97//fsPf9+/362wv+D/wf2vv9H/49spf8n/0/sA/8R/xG2yn/Mf4Z96P89xsfWxQRjbLYxJjbmRrY95qaYOLZXLaz62SH1ejXIjqi2Ggt7bHxEb5Tvap7vapvvonE5enL0LMaiV0Z/wgpHn/TjHHnqJXcTVgYmEPLeByvjgb6grwfNraL7vL6wzBcx3gXSA/PEeBcdmE//6wcWcBR+XJ6TvIUJlcD95H8/49byY2jkrU7yZn1w35bky1SSO/lcRaNmoGTg5kB84I5ApcCdgcqBuwJVAvcEGgdaUeiS191GeDMwHngHsBLwTmBl4F3AKsB7gI2BrQi5hTsV8n8DWgm0xBvnLiSj9yX5N0tYM1PPy0WtQL2rwEktYL28XEkx7ClplDRemiRNl7Kl16WF0lJphbRaWiutlzZKW6Xd0j7pkPSzdEpmsk+OkUOyLReTS8pxVIuVqH/UlOvKDeQm1Avay0lyF7mH3FceKGfJI+Qx8kR5MrTZ5smL5OXySnmN/GlYn+2AfFg+Lp/Opc9WylPWU8FTOazR1tTTGlpcaZ5enkzPIM8Qz0jPOM8LnqmeWZ5XPQs8iz3velZ5PvGsg07bTs9eklS4TttZRVGilYBiKkWVEkoZJV6pqFRRqit1lPpKI6W50lZ5TElV0pUMpb8yWBmmjFLGK3wX3/AWplbDqBaoJQUaBGjVFmgUaMxuCSQGElm5QMtAGxYfaBdozyoEOgQ6soqB5EAqqxzoEujKqga6BbqzaoGegZ6sRqB34HFWM9Av0I/dHxgQeILVDTwZGMweDGQFsthDgSGBYaxBYGRgIns4MCkwi7UOZAc+YMlM9ha+rjzqmeP/AUsBSwPLAG8GxgFvAZYFlgPGA28FlgfeBqwAvB1YEXgHsBLwTmBl4F3AKsC7gVWB9wCrAe8FVgfWANYE1gLWBt4HrAO8H1gX+ACwHvBBYH1gA2AjYGNgIrAlsBWwNbANsB2wPbAD8FHgY8COwGRgCrATMBXYBdgV2A2YDuwO7AnsDcwA9gH2BT4O7AccABwIfAL4JHAwMAs4BDgUOAw4EvgscBRwNHAMcCxwHPA54HjgBOBE4CTgS8DJwCnAqcBpwOnAl4EzgDOBs4DZwDnAucBXgK8CXwO+DnwDOA84H7gA+CZwIfAt4CLg28DFwCXApcBlwOXAd4DvAt8DrgC+D1wJ/IAjjZWlg8eDvwZPBE8GTwV/C54OngmeDf4e/D64L7g/eCD4Q/Bg8MfgoeBPwcNhvyPBo8Fjrp9zn1PHud+p6zzg1HMedOo7D/E3aLlWNFnBZ8WKpphIb1twe3BHcGdwV3B38NvgnuB3wb3BdcHPguuDnwc3BL8Ifhn8KrgxuCnstzn4dXCL6+dUde5xqjn3OtWdGk5Np5ZT+w/T46fXlBaz0MVXTDl+7srJ9Quvn6CXVFKK++P8heTgNuB24A7gTuAu4G7gt8A9wO+Ae4HrgJ8B1wM/B24AfgH8EvgVcCNwE3Az8GvgFo5OVeA9wGrAe4HVgTWANYG1gLULoLxo9Qv8EXgI+BPwMPAI8CjwGPBn4C8cgz2APYG9gL2BGcA+wL7Ax4GZwH7AYcDhwBEcnTjgLcCywHLAeOCtwPLA24DchpV7Foq7/+QJtgm2Dz5C91iwDaEn2J5QIZ9c0hVfZ+dIV0YiXz8bLTgKKSoeO735Jal8dp2NNK4XaUBPlbA3j5nr4RE+AxxJ/tCdNKCBSsifgaYu4TNAbiPJZoVZmXzp8vO0uoW6MxbqGerLd82MLrYEHMC5tV8B3R/4BHywF8B1I8lnDHAsxcItoXU2+ApRDqUglz58NSzpr0XKk/p8Lk+SnxzsjtXkGex8gPbwtaO7J+mTT4Lmp5lNZg/asu2xFdtr++xCdmE72vZzC2HcPpit2bpt2Kbt2LF2Ebuo/S9uI8wuYd9sx9m32GXtcvatdnn7Nm4hjNsH49bBuG0wbhmM2wWzH7Dr2Q/a9e2H7AZ2gt3QfthuZDe2m9iJdlO7md3cbhHri42KLRRbODY6Nib2ulg19vrYQGwwNhSrFZieXXlmXOrZPjjZx7jUE4OcM25NUuk2QU0GQ21QS3dg57Y/vgUPXtySAz0dvLjdF4pNZQrs1Ry1uNVoBWcN3qyVj2wxvA0Eu6Ml8Ke5jRtxemXON+h0ZxyrE7bUsMX4xthqbDO2GzuMncYuY3eecxxfNV4zXjfeMOYZ840FxpvGQuMtY5HxtrHYWGIsNZYZy413jHeN94wVxvvGSuNbY4/xnbHX+MD43thn7DcOwAbEjxFWII4ZP8MSxCrjQ2ersw3nrUusTtj6xIuhSaGXQpNDU0JTQ9NCL4dmaLbmUE6LUl5LaDdplbUq2n+1ddp6bYP2hfaltknbrG3RtmrbtO3aab2YXlwvoZfWy+rl9CR9gD6WynOCKFGcf4JylSJKlp+Ewu1X9DT6O+87K53/OJuwB+/FWU7xrBJ2W71UXlupbL51tjKPsTHYnfqgx9gq3N3C/dZ1HdefW7T/F+vA0lgmG0JlPpW9yhazVWwd28L2sqPsrBQtmVIJKV6qItWRGkltpVQpQxpMK6NJtCpybYlvMjYxRrX0DbWnbcYuplDpHmeFqdy20wqZ7vOUkJrX+DqC3hJBfxNBb4ugt0fQOyLonRH0rgj6uwh6bwT9fQS9L4LeH0EfiKB/iKAPRtA/RtCHIuifIujDEfSRCPpoBH0sgv45gv4lgj5+jnYiysQ5VybcemtJmme4jnYGrZeH0Lw/keowm82jWlzB1lA9bmTbqSYPseNUlz5JpdrM0dKuRjWao6WdJmXweYNa0HHGqM1vZzdGtKFNwt0s3K+Fu0W43+Rpa9uEu124O4S7U7i7zt8mjT3C/U64e4X7vXD3CXe/cA8I9wfhHhTuj8I9JNyfhHtYuEeEe1S4x4T7s3B/Ee7xXH3F44h8uTVApZ9E4/ZatoH6ym52gHrLKUmm/hKSYqnHxEkVqM/UlOpRr2kpdaB+00PKpJ4zQhpHfWeG9Kq0UFourZLWShukLdJu6YB0VDoly3I0CXR89zlOriBXkfl7i/LivEJYZMFZg398ymDuMwYjTxh8z9zATxkMnyy40vrE+tzazDyhUW7OQqOFO0a4M4U7S7izXVcX9/UXhXtSuGeEe1aUYLRwVeFeL9yNeWruV9c1Y4RrC7eccKsI927hVhVugnBbCLeNcNsKt7Nwuwi3q3AHCXeEcEX+TZF/c7Jw3xTue8LdIFzRsk3Rcqxpwp0j3AXCXSLclcL9RLifC9ftUdCTzLE7ZPxmnDbOGGeN301mSqZsekzF9Jo+WCMqbEabftgkUiOsEummwS0TOTucnc4uajElLzxThWebi8w1mGc2uZyFLfkUNf9lFjNvMIubN5olzJvMkub/maXM0rDvE2feYpaFlZ9bI+z83GFW4rZ+nN3Ot84ecJZjtWteaH5oQejN0MLQW6FFocWhJfokfYo+VZ9mFBanfnGLQqEIm0L8/C9+9tcq50Oc/lWWacaTxmDjKSPLeNoYYgw1hhnDjRHGM8ZI41ljlDHaGGOMNcY5W/jI5p7UAuvcIUiy7/H3GrCZw4hKYxXN32FDU7Y8lmJ5LZ8VZRWCNU2/FZPLoqYGm5qmZVm25VixVhGrKKxr3mAVj7Swaaw2PjLWGB/DQud643Njg/EFt9TJd3/1IvyUdZJMVrAyxlrjM5rDZVqx3W/1sfpaj1uZVj+rvzXAGmg9YQ2ynrQGW09ZWVZpq4x1sxVn3WKVtcpZ8datVnnrNquCdbtV0brDqmTdaVW27rKqUHz/MT41/musMz6LTNdKgM3PRlZjq4mVaDW1mlnNYf2zldU60gIodLBspyP/zokV1q/j55aA0xKUo3+zMrBHFG9vtbeymvYZ+wyr5VAxsNpOC6cFu89Jc9JoJSLTOvRu626rqnWPVc2616pu1bBqWrWs2tZ9Vh3rfquu9YBVz3rQqm89ZDWwnraGWEOtYdZwa4T1jDXSetYaZY22xlhjrXHWo7BImmQlWylWJyvV6mx1gW3SblZ6pH1Se4fDnFgniX9BdQWn2LuS6HPWeGuCxTVCzp2H7d553nrBetGaxCLPMpGlE+xk+GRXbv2IW/2qadYya5v3mXXM+8265gNmPfNBs775kNngvPauepsZZh+zr/m4mWn2M/ubA8yB5hM0gjc0HzYbmY3NJmYibCkNMp80B5tPmVnm08I2VnMa5VuarczWGOvbme3NRyKsjCWbKbCe9Yw50nwW4/8Yc6w5LsKO1gvmi7BFFmlvbLr5sjnDnGnOMmeb2eYcc675ivmq+RqskM0z55sLYIvsrQhrZMvM5bkskn1grjI/NFebH5lrzI/NT8x/m2vN/5ifwk7ZZ+Z683NYK/sywl7ZFvObXDbLdpvfmnvM78y95vfmPnO/ecD8wTxo/ghLX4fNI+ZR2Pv6JcLi12/maVj9Wml9YK2yPrRWWx9Za6yPaW77t7XW+o/1qfVfa531mbWe5roN1hfWl9ZX1kZrk7XZ+traYn3z/9i795g4EgS/40Uvw7IsyzLQZrqr36/q9/v9frHEAcIRjuMI4ThCLA/n9RDiZTjkMCxLEGEti8GkBiEfVV3LshzhOEK8LOd4LMeyLGRZFrJ8DmdZhCWWQxyHczjOISzhuFT/3LMzuxkpykXKrhL/4W9R3dVV7e5PNV1NddV7m+/9u/e23vvpe9vi/yDeEf9H8Uvxfxbvil+I/1z8n8SvxP9FvCf+C/G++C/Fr8X/VXwg/m/E//m5lG8QLf8bGv7n5/5//cx+8Shpf+NHNPdI/Dn/KHz2P/+bnwX67f/5/4f/82efl4nwWUP2XN2Cd7vKKNT/y5+65c7I/cUp+OIc3Z9/VuAlBCICZ7Z+s6fI5593/fK5rLPTkagnd5ts29DfRdt/+f6J1Nm+28Vfq+abfV/wDpZq/fLl/cL5lAXC3TIJ37/K9lQJqsi24nfQsbLsvs3TRM3nn6nmOfjtrgi/VZD9fmwjv13Qzm97nee3DPryBvKG+W2D8bzJvGl+62A+bylvhd8+uJ23lveA30J4kreV95zfRtjLO8g75rcSCgUlAiG/naAUUAILv6UQEMQElYJqQb2gSdD686NnXBQMCkYElwUTgikBK5gVLAiWBauCm4I7gnuC9V/VZ11lBdnvjJd9FS1Ev4YWocXoN9AS9Jvou2gZKkRPoe+hIlSMkqgMlaMKVImqUA2qRSnUitpQO+pAnagb9aBe1I8G0DAaQWNoHP1b6Gm0Bq1F69DfQBvQ30Qb0d9Cm9DfRpvRv4e2oH8fbUV/B21DfxdtR/8B2oFv6B+iP0OP0P+OHqMn6F9nSxJoHipAv4Lmo+/wfWv6y0zTME3DNA3TNEzTME3DNA3TNEzTME3DNA3TNEzTME3DNA3TNEzTME3DNA3TNEzTME3DNA3TNEzTME3DNA3TNEzTME3DNA3TNEzTME3DNA3TNEzTME3DNA3TNEzTME3DNA3TNEzTME3DNA3TNEzTME3DNA3TNEzTME3DNA3TNEzTME3DNA3TNEzTME3DNA3TNEzTME3DNA3TNEzTME3DNA3TNEzTME3DNP3W9JeaZmCagWkGphmYZmCagWkGphmYZmCagWkGphmYZmCagWkGphmYZmCagWkGphmYZmCagWkGphmYZmCagWkGphmYZmCagWkGphmYZmCagWkGphmYZmCagWkGphmYZmCagWkGphmYZmCagWkGphmYZmCagWkGphmYZmCagWkGphmYZmCagWkGphmYZmCagWkGphmYZmCagWkGphmYZmCagWkGphmYZmCagWnmrekvNZ2B6QxMZ2A6A9MZmM7AdAamMzCdgekMTGdgOgPTGZjOwHQGpjMwnYHpDExnYDoD0xmYzsB0BqYzMJ2B6QxMZ2A6A9MZmM7AdAamMzCdgekMTGdgOgPTGZjOwHQGpjMwnYHpDExnYDoD0xmYzsB0BqYzMJ2B6QxMZ2A6A9MZmM7AdAamMzCdgekMTGdgOgPTGZjOwHQGpjMwnYHpDExnYDoD0xmYzsB0BqYzMJ2B6QxMZ96a/lLTHExzMM3BNAfTHExzMM3BNAfTHExzMM3BNAfTHExzMM3BNAfTHExzMM3BNAfTHExzMM3BNAfTHExzMM3BNAfTHExzMM3BNAfTHExzMM3BNAfTHExzMM3BNAfTHExzMM3BNAfTHExzMM3BNAfTHExzMM3BNAfTHExzMM3BNAfTHExzMM3BNAfTHExzMM3BNAfTHExzMM3BNAfTHExzMM3BNAfTHExzMM39upv+VZzFjV/mx0R2D5Fs89F30AK0EP0aWoR+Hf0GWoKWou+i5agQPYVWoGKURCWoFJWhClSJqlEjakLNqAW1onbUgTpRN+pB/WgADaFhNIbG0RSaRr+FVqF/G61Ga9Ba9O+gdehvoPXo30Ub0N9EG9HfQpvQ30abURw/mMRjS34VxSNM4hEm8QiTxSgeYRKPMPlNFI8ziceZLEOzj/Zb019mmoFpBqYZmGZgmoFpBqYZmGZgmoFpBqYZmGZgmoFpBqYZmGZgmoFpBqYZmGZgmoFpBqYZmGZgmoFpBqYZmGZgmoFpBqYZmGZgmoFpBqYZmGZgmoFpBqYZmGZgmoFpBqYZmGZgmoFpBqYZmGZgmoFpBqYZmGZgmoFpBqYZmGZgmoFpBqYZmGZgmoFpBqYZmGZgmoFpBqYZmGZgmoFpBqYZmGZgmoFpBqZ/7d9P/4pMszDNwjQL0yxMszDNwjQL0yxMszDNwjQL0yxMszDNwjQL0yxMszDNwjQL0yxMszDNwjQL0yxMszDNwjQL0yxMszDNwjQL0yxMszDNwjQL0yxMszDNwjQL0yxMszDNwjQL0yxMszDNwjQL0yxMszDNwjQL0yxMszDNwjQL0yxMszDNwjQL0yxMszDNwjQL0yxMszDNwjQL0yxMszDNwjQL0yxMszDNwjT788/DSXweviBksmdnF3WKVjF8nx/mEd2El5glFohlYhVHfrz3C99UPSCO8/J/vt8wlWfJo4jVPA+xwV8ayavE+Zyb+XWjM687e/Zj/t8gP4+NvFF+/ZjK4/ipsj/N5y3nXedvfSv719uyH5b9iH8X/Ydlf5Ldw0T4A0KIv0DI8BcIG/724MDfHtz424OHv+dz+FxoLnvUT74fosPod1A29//6CcZ6UQ7tQ2fQH2CqD3PzyuRuk8k9Fp/g0j9GB9E/wjUf5aZ/PzcdnRv+BMN/nD0WKobfw1R/gn6Ey4ayx9vEMj7JLfkTnCU8O8WbpQ3g8sHc9eO54ZXc8JPssUpxDzD+5qieGOL/RlZg7M3RPG2EkIgRldhHuIXoIDqJLhwpYhB7jb05tudnz3F2f4l/WH6eIMq7yn8/K6S8I3uEV7449m959j1wduzbPx++ubQL/T10BJ1Ah/h+gDl8kJvDB7jlB7k5fJCbwweYwweYwweYwweYwwf8HLJHjSkiTISD8BER/v9RTdQTTUQrcQb39lL5GH9vx8tp4h1+7PvZownz/QTNLvf7ueV+XzTF92Nc/zGu/xjXf5y7/mP++l/V3tz/99ezsbJxfj2bKJvJ7tElnCKEwsNThfx6lt2T1yb+N+LseYb/VPyn/Hr2Z+I/w3p2BdavYD27gvXsCtazK1jPrmA9u4LXj+xYL8qhfegM+gNM9WFuXpncbd4McTRrfvjH6CD6R7jmo9z07+emo3PDVQzfrGdXcuvZFaxnV7CeXeHXMya3DCa3ZP63edkVTPFmaQO4fDB3/XhueCU3ZLCeZe8BxnPr2ZXcenYF69mVXzpq7i9+hzG7V+YXn9sv+7Y/zj+fR+Yps88ujgn107Kf8s/Pvy/7C/7e/mV59nVaULaNR2E7K5jvR+h30E9QFv0Q5VD+2c1OnxvrRDPov0SvocPov8a0ODp32X6u76Mfod9BP0FZ9EOUQ7NL2s8taR9L2seS9rGkfSxpH0vax5L23xzp+8v+0lrOlf+gfKZ8tvxH5fzrYXkGa2wmuzS+/JzLf4hLfohLfpg9jji+R+oiAvyr3C+us589D9nXiZXyG/zrxM3yO8RX+bEfYx4/zh51PPszXgF+jLn/OGuX73dQLnsEBEz7Kab9NDftp5j2U0z7Kab9FNvzVYQSr6592Cf3MjFBTOH5z37vJvv8f/G7OC/5KUeyR1Hmr71LnPC3WeUvWeTvbQHO20uUH5YfEsLyo/K/Ik6V/7UwjxBnz71LSLPn3s1+E6f8Z9kjtJf/DD/9AX/v+HF+mB37EOXQPpRBM5jqQ0x1gluf4KfsrU9ytz7BrfFJBt8+lEEzmOrD3DI6Ma/O3G06cV12LI9/Bqgv/J7p4YeD/LOQveTNGvH50aQ/fzw2+OEzYgeX7BL7/KPy872W8corze6NJnQIU0Q5PybJvp7y/X2UQ3tQfvlCCX76GM2g30f/WXb/uzfHz8awJzdkckM2N8zO1Y4l2HM/c2gPml2CHT99jGbQ76PZJdhzS7DnlmDPLcGeW4L9zZHev3Qvg37hR8IB4aDwe0L+N6fwn2Tl8aXR7O+O7+KS7+KS7/KXfPHbOPw6JlzG78sv7OkgXD01wHcl+5v41Ee49vNb/Cu8Aq78um/fvN1XgXi7r8LbfRXe7qvwdl+Ft6bf7qvAEP9v7atgIN7F5xOfbdd3/PwoNJ9/n30mu1VUXlXeyL8rzp75+Jv4Pkdp9tsdeHf+rey2Bd9B9CfoH6CL/O2+JfpHubFO9NtoFzqE/hj9PfQjdAS3e1/0T7Nj5Hu571xn36tFcLSyen4ro53Ibn18TTgj/KHwR8I54R8K54X/Qrgg/rf8O67Z7NZqtnivNps9aw7GfoKxb+fGPsEQZ83B8Hv8u7LsESVN/Pu3X/784bPPbN5sVXDEPLGU/ab+KfKUnCBOKU+ZiHdOWU5ZiFKcC+vd7D6p2W1hvh+hQ2gn+m2UQQeIvFMK/DSIsiiHjqNXUH67LTuv7HtZfvh+7tb/PDtGvodn8hf28f3suxKn7Fi+HfOy8/PKHnnYSHTx7+5ZgU+w/pWzXznJn3zH9s5aQVvBwVfHCqnCW19r+tqropGvy7++WlxXvPONgZKKkqVvVn1zq7T33ZJ35/jXh43yLmGBkD3lO7Vecbbi5L1JUfZ7NF8Rfcy/8yZwdpI8HJdYT9SImkVtojOic6JuUa+oXzQkGhWN8VNcFXGiOdGi6JrouuiW6K7ovuihaEO0KXomeiF6JXotOhIT4gJxsZh/GRDLxVqxSewQ+8QRcUp8WlwnbhS3iNvFZ8XnxRfEfeIBHNl6XDwpnhbPiOfFS+IV8Q3xbfGa+IH4kfiJeEv8XPxSvCc+EB+TArKQLCGFRI14SDwqHhPT4qtiTjwnXhRfE18X3xLfFd8XPxRviDfFz8QvxK/Er8VHJEEWkMUk/1JEykktaSIdpI+MkCnyNFlHNpItZDt5ljxPXiD7yAFymLxEjpOT5DQ5Q86TS+QKeYO8Ta6RD8hH5BNyi3xOviT3yAPyWCKQFEpKJEIJKVFKKIlF4pIEJDGihlwkr5HXyVvkXfI++ZDcIDfJZ+QL8hX5mjySEJICSbGkTCKSyCVaiUnikPgkEUlKclpSJ2mUtEjaJWcl5yUXJH2SAcmw5JJkXDIpmZbMSOYlS5IVyQ3Jbcma5IHkkeSJZEvyXPJSsic5kBxLBdJCaYlUKCWlSikltUhd0oA0Jq2UVkvrpU3SVmmHtJOokWxINiXPJC8krySvJUdSQlogLZaWSUVSuVQrNUkdUp80Ik1JT0vrpI3SFmm79Kz0vPSCtE86IB2WXpKOSyel09IZ6bx0SboivSG9LV2TPpA+kj6RbkmfS19K96QH0mOZQFYoK5EJZaRMKaNkFplLFpDFZJWyalm9rEnWKuuQdcq6ZD2yi7JB2YjssmyCqJERsgJZsYz/FSGTy7Qyk8wh88kispTstKxO1ihrkbXLzsrOyy7I+mQDsmHZJdm4bFI2LZuRzcuWZCuyG7LbsjXZA9kj2RPZluy57KVsT3YgO5YL5IXyErlQTsqVckpukbvkAXlMXimvltfLm+St8g55p7xL3iO/KB+Uj8gvyyfkU3JWPitfkC/LV+U3iRq5Se6Q++QReUp+Wl4nb5S3yNvlZ+Xn5RfkffIB+bD8knxcPimfls/I5+VL8hX5Dflt+Zr8gfyR/Il8S/5c/lK+Jz+QHysEikJFiUKoIBVKBaWwKFyKgCKmqFRUK+oVTYpWRYeiU9Gl6FFcVAwqRhSXFROKKQWrmFUsKJYVq4qbijuKe4p1xWPFU8W2YoeoUTQqWhTtirOK84oLij7FgGJYcUkxrphUTCtmFPOKJcWK4obitmJN8UDxSPFEsaV4rnip2FMcKI6VAmWhskQpVJJKpZJSWpQuZUAZU1Yqq5X1yiZlq7JD2ansUvYoLyoHlSPKy8oJ5ZSSVc4qF5TLylXlTeUd5T3luvKx8qlyW7mj3FXuKw+VJ6p8VZGqlKhRDiiHlZeU48pJ5bRyRjmvXFKuKG8obyvXlA+Uj5RPlFvK58qXyj3lgfJYJVAVqkpUQhWpUqoolUXlUgVUMVWlqlpVr2pStao6VJ2qLlWP6qJqUDWiuqyaUE2pWNWsakG1rFpV3VTdUd1Traseq56qtlU7ql3VvupQdaLOVxepS9UVaqlarTaobWqPOkTUqOZVS6oV1Q3VbdWa6oHqkeqJakv1XPVStac6UB2rBepCdYlaqCbVSjWltqhd6oA6pq5UV6vr1U3qVnWHulPdpe5RX1QPqkfUl9UT6ik1q55VL6iX1avqm+o76nvqdfVj9VP1tnpHvaveVx+qTzT5miJNqaZCI9WoNQaNTePRhDQJTZWmVtOgada0ac4QNepH6ifqLfVz9Uv1nvpAfawRaAo1JRqhhtQoNZTGonFpApqYplJTranXNGlaNR2aTk2XpkdzUTOoGdFc1kxopjSsZlazoFnWrGpuau5o7mnWNY81TzXbmh3NrmZfc6g50eZri7Sl2gqtVKvWGrQ2rUcb0ia0VdpabYO2WdumPaM9p+3W9mr7tUPaUe0YUaM51gq0hdoSrVBLapVaSmvRurQBbUxbqa3W1mubtK3aDm2ntkvbo72oHdSOaC9rJ7RTWlY7q13QLmtXtTe1d7T3tOvax9qn2m3tjnZXu6891J7o8nVFulJdhU6qU+sMOpvOowvpEroqXa2uQdesa9Od0Z3Tdet6df26Id2obkxH667qON2cblF3TXedqNFROovOpQvoYrpKXbWuXteka9V16Dp1Xboe3UXdoG5Ed1k3oZvSsbpZ3YJuWbequ6m7o7unW9c91j3Vbet2dLu6fd2h7oTKp4qoUqqCklJqykDZKA8VohJUFVVLNVDNVBt1hjpHdVO9VD81RI1SYxRNXaU4ao5apK5R16lb1F3qPvWQ2qA2qWdEDVVPNVGtVAfVSXVRPdRFapAaoS5TE9QUxVKz1AK1TK1SN6k71D1qnXpMPaW2qR1ql9qnDqkTfb6+SF+qr9BL9Wq9QW/Te/QhfUJfpa/VN+ib9W36M/pz+m59r75fP6Qf1Y/paf1VPaef0y/qr+mv62/p7+rv6x/qN/Sb+mf6F/pX+tf6IwNhKDAUEzX6i/pB/Yj+sn5CP6Vn9bP6Bf2yflV/U39Hf0+/rn+sf6rf1u/od/X7+kP9iSHfUGQoNVQYpAa1wWCwGTyGkCFhqDLUGhoMzYY2wxnDOUO3odfQbxgyjBrGDLThqoEzzBkWDdcM1w23DHcN9w0PDRuGTcMzwwvDK8Nrw5GRMBYYi41lRpFRbtQaTUaH0UfUGGYNC4Zlw6rhpuGO4Z5h3fDY8NSwbdgx7Br2DYeGE2O+schYaqwwSo1qo8FoM3qMIWPCWGWsNTYYm41txjPGc8ZuY6+x3zhkHDWOGWnjVSNnnDMuGq8ZrxtvGe8a7xsfGjeMm8ZnxhfGV8bXxiMTYSowFZvKTCKT3KQ1mUwOk88UMaVMp011pkZTi6mdqDGuGx8bnxq3jTvGXeO+8dB4Yso3FZlKTRUmqUltMphsJo8pZEqYqky1pgZTs6nNdMZ0ztRt6jX1m4ZMo6YxE226auJMc6ZF0zXTddMt013TfdND04Zp0/TM9ML0yvTadGQmzAXmYnOZWWSWm7Vmk9lh9pkj5pT5tLnO3GhuMbebz5rPmy+Y+8wD5mHzJaLGdGg6Meebi8yl5gqz1Kw2G8w2s8ccMifMVeZac4O52dxmPmM+Z+4295r7zUPmUfOYmTZfNXPmOfOi+Zr5uvmW+a75vvmhecO8aX5mfmF+ZX5tPrIQlgJLsaXMIrLILVqLyeKw+CwRS8py2lJnabS0WNotZy3nLRcsfZYBy7DlkmXcMmmZtsxY5i1LlhWixqK2GCw2i8cSsiQsVZZaS4Ol2dJmOWM5Z+m29Fr6LUOWUcuYhbZctXCWOcui5ZrluuWW5a7lvuWhZcOyaXlmeWF5ZXltObIS1gJrsZXf6LPKrVqryeqw+qwRa8p62lpnbbS2WNutZ63nrResfdYB67D1knXcOmmdts5Y561L1hXrDett65r1gfWR9Yl1i6ix1lobrM3WNusZ6zlrt7XX2m8dso5ax6y09aqVs85ZF63XrNett6x3rfetD60b1k3rM+sL6yvra+uRjbAV2Ipt/IanTW7T2kw2h81ni9hSttO2OlujrcXWbjtrO2+7YOuzDdiGbZds47ZJ27RtxjZvW7Kt2G7YbtvWbA9sj2xPbFu257aXtj3bge3YLrAXEjW2Xlu/bcg2ahuz0barNs42Z1u0XbNdt92y3bXdtz20bdg2bc9sL2yvbK9tR3bCXmAvtvMbv3a5XWs32R12nz1iT9lP2+vsjfYWe7v9rP28/YK9zz5gH7Zfso/bJ+3T9hn7vH3JvmK/Yb9tX7M/sD+yP7Fv2Z/bX9r37Af2Y4fAUegocQgdpEPpoBwWh4uosXP2Ofui/Zr9uv2W/a79vv2hfcO+aX9mf2F/ZX9tP3IQjgJHsYPfAHfIHVqHyeFw+BwRR8px2lHnaHS0ONodZx3nHRccfY4Bx7DjkmPcMemYdsw45h1LjhXHDcdtx5rjgeOR44ljy/Hc8dKx5zhwHDsFzkJniVPoJJ1KJ+W0OF3OgDPmrHRWO+udTc5WosZx3/HQseHYdDxzvHC8crx2HDkJZ4Gz2FnmFDnlTq3T5HQ4fc6IM+U87axzNjpbnO3Os87zzgvOPueAc9h5yTnunHROO2ec884l54rzhvO2c835wPnI+cS55XzufOnccx44j10CV6GrxCV0kS6li3JZXC5XwBVzVbqqXfWuJlerq8PV6epy9bguugZdI0SN87XzyEW4ClzFrjKXyCV3aV0ml8Plc0VcKddpV52r0dXianeddZ13XXD1uQZcw65LrnHXpGvaNeOady25Vlw3XLdda64HrkeuJ64t13PXS9ee68B17Ba4C90lbqGbdCvdlNvidrkD7pi70l3trnc3uVvdHe5Od5e7x33RPegecV92T7in3Kx71r3gXiZq3HK31m1yO9w+d8Sdcp9217kb3S3udvdZ93n3BXefe8A97L7kHndPuqfdM+5595J7xX3Dfdu95n7gfuR+4t5yP3e/dO+5D9zHHoGn0FPiEXpIj9JDeSwelyfgiXkqPdWeek+Tp9XT4en0dHl6PBc9g54Rz2XPhGfKw3pmPQueZc+q56bnjueeZ93z2POUqPGc9tR5Gj0tnnbPWc95zwVPn2fAM+y55Bn3THqmPTOeec+SZ8Vzw3Pbs+Z54HnkeeLZ8jz3vPTseQ48x16Bt9Bb4hV6Sa/SS3ktXpc34I15K73V3npvk7fV2+Ht9HZ5e7wXvYPeEe9l74R3yst6Z70L3mXvqvem9473nnfd+9j71Lvt3fHueve9h94TXz5R473g7fMOeIe9l7zj3knvtHfGO+9d8q54b3hve9e8D7yPvE+8W97n3pfePe+B99gn8BX6SnxCH+lT+iifxefyBXwxX6Wv2lfva/K1+jp8nb4uX4/vom/QN+K77JvwTflY36xvwbfsW/Xd9N3x3fOt+x77nvq2fTu+Xd++79B34s/3F/lL/RV+qV/tN/htRI1v2jfjm/ct+VZ8N3y3fWu+B75Hvie+Ld9z30vfnu/Ad+wX+Av9JX6hn/Qr/ZTf4nf5A/6Yv9Jf7a/3N/lb/R3+Tn+Xv8d/0T/oH/Ff9k/4p/ysf9a/4F/2r/pv+u/47/nX/Y/9T/3b/h3/rn/ff+g/CeQHigKlgYqANKAOGAK2gCcQCiQCVYHaQEOgmajxr/kf+B/5n/i3/M/9L/17/gP/cUAQKAyUBIQBMqAMUAFLwBUIBGKBykB1oD7QFGgNdAQ6A12BnsDFwGBgJHA5MBGYCrCB2cBCYDmwGrgZuBO4F1gPPA48DWwHdgK7gf3AYeAkmB8sCpYGK4LSoDpoCNqCnmAomAhWBWuDDcHmYFvwTPBcsDvYG+wPDhE1gb3AQeA4KAgWBkuCwiAZVAapoCXoCgaCsWBlsDpYH2wKtgY7gp3BrmBP8GJwMDgSvBycCE4F2eBscCG4HFwN3gzeCd4LrgcfB58Gt4M7wd3gfvAweBLKDxWFSkMVIWlIHTKEbCFPKBRKhKpCtaGGUHOoLXQmdC7UHeoN9YeGQqOhsRAduhriQnOhRaImRIaUISpkCblCgVAsVBmqDtWHmkKtoY5QZ6gr1BO6GBoMjYQuhyZCUyE2NBtaCC2HVkM3Q3dC90Lrocehp6Ht0E5oN7QfOgydhPPDReHScEVYGlaHDWFb2BMOhRPhqnBtuCHcHG4LnwmfC3eHe8P94aHwaHgsTIevhrnwXHgxfC18PXwrfDd8P/wwvEHUhCvD1eH6cFO4NdwR7gx3hXvCF8OD4ZHw5fBEeCrMhmfDC+Hl8Gr4ZvhO+F54Pfw4/DS8Hd4J74b3w4fhk0h+pChSGqmISCPqiCFii3gioUgiUhWpjTREmiNtkTORc5HuSG+kPzIUGY2MRejI1QgXmYssRq5FrkduRe5G7kceRjYim5FnkReRV5HXkaMoQdREuiI9kYuRwchI5HJkIjIVYSOzkYXIcmQ1cjNyJ3Ivsh55HHka2Y7sRHYj+5HDyEk0P1oULY1WRKVRddQQtUU90VA0Ea2K1kYbos3RtuiZ6Llod7Q32h8dio5Gx6J09GqUi85FF6PXotejt6J3o/ejD6Mb0c3os+iL6Kvo6+hRjIgVxIpjZTFRTB7TxkxETXQqykZnowvR5ehq9Gb0TvRedD36OPo0uh3die5G96OH0ZNYfqwoVhqriElj6pghZot5YqFYIlYVq401xJpjbbEzsXOx7lhvrD82FBuNjcXo2NUYF5uLLcauxa7HbsXuxu7HHsY2YpuxZ7EXsVex17GjOBEviBfHy+KiuDyujZvijrgvHomn4qfjdfFGoiZ2J3Yvth57HHsa247txHZj+7HD2Ek8P14UL41XxKVxddwQt8U98VA8Ea+K18Yb4s3xtviZ+Ll4d7w33h8fio/Gx+J0/Gqci8/FF+PX4tfjt+J34/fjD+Mb8c34s/iL+Kv46/hRgkgUJIoTZQlRQp7QJkwJR8KXiCRSidOJukRjoiXRnjibOJ+4kOhLDBA18d34fvwwfpLITxQlShMVCWlCnTAkbAlPIpRIJKoStYmGRHOiLXEmcS7RnehN9CeGEqOJsQSduJrgEnOJxcS1xPXErcTdxP3Ew8RGYjPxLPEi8SrxOnGUJJIFyeJkWVKUlCe1SVPSkfQlI8lU8nSyLtmYbEm2J88mzycvJPuSA8nh5KXkeHIyOZ2cSc4TNcmKpDSpThqStqQnGUomklXJ2mRDsjnZljyTPJfsTvYm+5NDydHkWJJOXk1yybnkYvJa8nryVvJu8n7yYXIjuZl8lnyRfJV8nTxKEamCVHGqLCVKyVPalCnlSPlSkVQqdTpVl2pMtaTaU2dT51MXUn2pgdRw6lJqPDWZmk7NpOZTS6mV1I3U7dRa6kHqEVGTSqSqUrWphlRzqi11JnUu1Z3qTfWnhlKjqbEUnbqa4lJzqcXUtdT11K3U3dT91MPURmoz9Sz1IvUq9Tp1lCbSBenidFlalJantWlT2pH2pSPpVPp0ui7dmG5Jt6fPps+nL6T70gPp4fSl9Hh6Mj2dnknPp5fSK+kb6dvptfSD9KP0k/RW+nn6ZXovfZA+JmrS59Ld6d50f3ooPZoeS/8P9u71JY593RN428vldrldLlctl6mqvt+7q2/Vt+rqW/X9ctTj9rjdbrfH43gkiASRIBJEgkgQCSIiUu2IiF2I40jGcTLiOCIiEkSCSBAJIkEkiIhI8DgZx8l2e9xT/bw4r/YfMBzqzTcmdEhS30/s/HzC72Hj03EuvhBfiq/E1+Nb8Z34XvwgfhQ/iZ/FL+PX8dv4fUKUKEqUJpAEmpAntAkiQSaoRDARS2QStYmGRHOiLdGR6Er0JPoSA4mhxEhiPDGZmEnMJRYTy4nVxEZiO7Gb2E8cJo4Tp4nzxFXiJnGXeEiKk8XJsmRFEk8qk3pRdYJNTCe4xEJiKbGSWE9sJXYSe4mDxFHiJHGWuExcJ24T90lRsihZmkSSaFKe1CaJJJmkksFkLJlJ1iYbks3JtmRHsivZk+xLDiSHkiPJ8eRkciY5l1xMLidXkxvJ7eRucj95mDxOnibPk1fJm+Rd8iElThWnylIVKTylTOlTlpQzRaeYVCJVlaoTVSe3kjvJveRB8ih5kjxLXiavk7fJ+5QoVZQqTSEpNCVPaVNEikxRqWAqlsqkalMNqeZUW6oj1ZXqSfWlBlJDqZHUeGoyNZOaSy2mllOrqY3Udmo3tZ86TB2nTlPnqavUTeou9ZAWp4vTZemKNJ5WpvVpS9qZptNMOpGuStelG9Mt6fZ0Z7o73ZvuF1WnLlPXqdvUfVqULkqXppE0mpantWkiTaapdDAdS2fStemGdHO6Ld2R7kr3pPvSA+mh9Eh6PD2ZnknPpRfTy+nV9EZ6O72b3k8fpo/Tp+nz9FX6Jn2XfsiIM8WZskxFBs8oM/qMJePM0Bkmk8hUZeoyjZmWTHumM9Od6c30ZwYzw5nRzERmKjObmUeK8rNH5Df52SNSnJ89Ij/kZ49ISX72iJTmZ4/Ij/nZI1KWnz0iP+Vnj8jP+dkjkv/ffAhSkZ89Ir/mZ4/Ik/zsEUHzs0cEy88e8/eZIDgiy88ekfyty3JEkZ89Isr87BFR5WePiCY/e0S0+dlj/h4VRI9Y87NHJH/7sQ2x52ePSP72YxLJ337sQFz52WP+jpT83Sn52WP+3hWYvIoRGgnkZ49I/gbqIJK/ezo/hRUjYSSdnz0imfzsEanOzx6RmvzsEanNzx6R3+Vnj0h9fvaI/D4/e0Qa8rNH5A/52SPSmJ89In/Mzx6RpvzsEcnfm/wnpDk/e0T+MT97RFrys0fkn/Kzx/ydLfk7XfKzx/y9Lkgbkr+b+Z+R9vzsEfuWnz1if87PHrH7/OwR+0t+9og95GeP2GN+9oj9NT97xEX52SNekJ894uL87BH/Lj97xAvzs0f8+/zsUWhQaFBoUGhQaFBoUGhQaFBoUGhQaFBoUGhQaFBoUGhQaFBoUGhQaFBoUGhQaFBoUGhQaFBoUGhQaFBoUGhQaFBoUGhQaFBoUGhQaFBoUGhQaFBoUGhQaFBoUGhQaFBoUGhQaFBoUGhQaFBoUGhQaFBoUGhQaFBoUGhQaFBoUGhQaFBoUGhQaFBo8N9Hg8JeA2GvgbDXQNhrIOw1EPYaCHsNhL0Gwl4DYa+BsNdA2Gsg7DUQ9hoIew2EvQbCXgNhr4Gw10DYayDsNRD2Ggh7DYS9Bv9/7jVAxSIxKka/4/M7tJDPQvR7Pr9Hi/gsQov5LEZ/4PMHtITPEvS3fP4W/ZHPH9EyPsvQcj7L0Z/5/Bn9hc9f0Ao+K9Bf+fwVreSzEsX4xFCcTxyV8ClBpXxKURmfMlTBpwJV8qlE1XyqUROfJpTgk0DNfJpRC58W1MqnFbXzaUdJPknUwacDdfHpQt18ulEvn16U5pNG/Xz60QCfAZThk0HDfIbRGJ8xNM5nHE3ymURTfKbQv+Pz79AqPqvQaj6r0Ro+a9C/5/Pv0Vo+a9Hf8fk7tI7POvQf+PwHtJ7PevT3fP4ebeCzAf0Dn39AG/lsRP/I5x/RJj6b0D/x+Secf7Z4Ef4bPn+D808YL8b5J4z/gPNPGC/BS/ksxfknjP+I808YL8N/4vMnnH/OeDnOP2f8ZxzhE8H5p43/IjQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0+O+jQZFYpBX9hP4ndAH9z+jiv327hC6jb9GV/DaC/FYC/hWT6H9Ep9BpdBbNoRw6h/4X9L+i/w397+gq+j/Rdf4VRSIJnwXov8DH/Ef87/UE/dd/+9536Cn6V4xvUqQXlWM/Yj9h5djPGIL9gv2KPcFQTIJJMQWmwtSYFtPxry9H/wX9X+j/Rv8P+n/RP6N/Qf8VfcQKMDH2PfYbrBgrwXhJIlT0A1aGVWCVGIbhmAyTY0pMw//cH9Ab9B594H89EfYdVogVYT/wPzojqi5ACtACeYG2gCggC6iCYEGsIFNQW9BQ0FzQVtBR0FXQU9BXMFAwVDBSMF4wWTBTMFewWLBcsFqwUbBdsFuwX3BYcFxwWnBecFVwU3BX8CAWi4vFZeIKMS5WivVii9gppsWMOCGuEteJG8Ut4nZxp7hb3CvuFw+Kh8Wj4gnxlHhWPC9+I34rXhNvit+J34s/8H+SX5AipEQkQkqRn0Tfw86PH2Dbx2+RJwgu+hGRISrRz7C9oxLRI3oRilgRhwhDXIhHJIedHCrYxqGBPRw62MBhgN0bJti6YUbqkXaRFfuGPYgY7BH/XhTPbyRB/0d+IwlkMeQPkCWQpZA/QpZB/gT5MyQCWQH5K+QTSBQSg8QhZZBySAWkElIFqYHUQuohrZA2SDskCemAdEG6IT2QXkgaMgAZhGQgw5BpyAxkNWQNZC3k7yDrIX8P2QD5B8hGyD9CNkH+CbIZ8h8hWyD/CbIV8j9AtkH+M2R7PrFvkH+GvIf8C+QD5CPkX/OJiyALIMWQ30EWQn7Pp2D6b5lmwTQLplkwzYJpFkyzYJoF0yyYZsE0C6ZZMM2CaRZMs2CaBdMsmGbBNAumWTDNgmkWTLNgmgXTLJhmwTQLplkwzYJpFkyzYJoF0yyYZsE0C6ZZMM2CaRZMs2CaBdMsmGbBNAumWTDNgmkWTLNgmgXTLJhmwTQLplkwzYJpFkyzYJoF0yyYZsE0C6ZZMM2CaRZMs2CaBdMsmGbBNAumWTDNgmkWTLNgmgXTLJhmwTQLplnB9N80nQXTWTCdBdNZMJ0F01kwnQXTWTCdBdNZMJ0F01kwnQXTWTCdBdNZMJ0F01kwnQXTWTCdBdNZMJ0F01kwnQXTWTCdBdNZMJ0F01kwnQXTWTCdBdNZMJ0F01kwnQXTWTCdBdNZMJ0F01kwnQXTWTCdBdNZMJ0F01kwnQXTWTCdBdNZMJ0F01kwnQXTWTCdBdNZMJ0F01kwnQXTWTCdBdNZMJ0F01kwnQXTWTCdBdNZMJ0F01kwnQXTWTCdFUz/TdM5MJ0D0zkwnQPTOTCdA9M5MJ0D0zkwnQPTOTCdA9M5MJ0D0zkwnQPTOTCdA9M5MJ0D0zkwnQPTOTCdA9M5MJ0D0zkwnQPTOTCdA9M5MJ0D0zkwnQPTOTCdA9M5MJ0D0zkwnQPTOTCdA9M5MJ0D0zkwnQPTOTCdA9M5MJ0D0zkwnQPTOTCdA9M5MJ0D0zkwnQPTOTCdA9M5MJ0D0zkwnQPTOTCdA9M5MJ0D0zkwnQPTOTCdA9M5MJ0D0znB9N80zYFpDkxzYJoD0xyY5sA0B6Y5MM2BaQ5Mc2CaA9McmObANAemOTDNgWkOTHNgmgPTHJjmwDQHpjkwzYFpDkxzYJoD0xyY5sA0B6Y5MM2BaQ5Mc2CaA9McmObANAemOTDNgWkOTHNgmgPTHJjmwDQHpjkwzYFpDkxzYJoD0xyY5sA0B6Y5MM2BaQ5Mc2CaA9McmObANAemOTDNgWkOTHNgmgPTHJjmwDQHpjkwzYFpDkxzvOlGkVHUIXosmBTbxLvftX53Vzj2vf77raLGouvfDBfLi9d+qP3homTgt5W/XS5NlZ7++KKsrGzhJ+ano/Lun4t+nkUo5MMvHb88Vkz+avt1t7K18u7JmCj/NZL8bj8R7PbTi6qfbD/ZfbL/5PDJ8ZPTJ+dPrp7cPLl78oDmv1ZShlagOKpE9agFdaI0yqAJtAqtQxvRFrQd7US70V60Hx1Eh9FRdII/j8+i8+gb/qS+hm6i79D36Af0I/oJ/YxeoF/Qr+g3/sxcyJ+Vy/kTspQ/WRsxG+bG/FgES2E1WD3WhLViT7Fn2HPsBfZSVI1e8efmO/SBP2UXw7ka58/TesyCOTEaY7AEVoXVYY1YC9aOdWLdWC/Wjw1iw9goNoFNYbPYPPYGe4utYZvYO+w99gH7iH3CPmMX2BfsK//35BEvxEvwcrwSl+Jq3IjbcDfuxyN4Cq/B6/EmvBV/ij/Dn+Mv8Jf4K/w1Poaz+DTO4QuiarwCx3ElrsctuBOncQZP4FV4Hd6It+DteCfejffi/fggPoyP4hP4FD6Lz+Nv8Lf4Gr6Jv8Pf4x/wj/gn/DN+gX/Bv+Lf8EdJoaREUi6plEglaolRYpO4JX5JRJKS1EjqJU2SVslTyTPJc8kLyUvJK8lryZiElUxLOMmCZEmyIlmXbEl2JHuSA1G1hJEkJFWSOkmjpEXSLumUdEt6Jf2SQcmwZFQyIZmSzErmJW8kbyVrkk3JO8l7yQfJR8knyWfJheSL5Kvkm+RRWigtkZZLK6VSqVpqlNqkbqlfGpGmpDXSemmTtFX6VPpM+lz6QvpS+kr6WjomZaXTUk66IF2SrkjXpVvSHeme9EB6JD2RnkkvpdfSW+m9qFraKe2W9kr7pYPSYemodEI6JZ2VzkvfSN9K16Sb0nfS99IP0o/ST9LP0gvpF+lX6Tfpo6xQViIrl1XKpDK1zCizydwyvywiS8lqZPWyJlmr7Knsmey57IXspeyV7LVsTMbKpmWcbEG2JFuRrcu2ZDuyPdmB7Eh2IjuTXcquZbeye7lIXiQvlfOfquRyuVZULZuQTclmZfOyN7K3sjXZpuyd7L3sg+yj7JPss+xC9kX2VfZN9igvlJfIy+WVcqlcLTfKbXK33C+PyFPyGnm9vEneKn8qfyZ/Ln8hfyl/JX8tH5Oz8mk5J1+QL8lX5OvyLfmOfE9+ID+Sn8jP5Jfya/mt/F4hUhQpShX8p0uFXKFVEApSQSmCipgio6gVVcs35e/k7+Uf5B/ln+Sf5RfyL/Kv8m/yR0WhokRRrqhUSBVqhVFhU7gVfkVEkVLUKOoVTYpWxVPFM8VzxQvFS8UrxWvFmIJVTCs4xYJiSbGiWFdsKXYUe4oDxZHiRHGmuFRcK24V90qRskhZquQ/ZSvlSq2SUJJKShlUxpQZZa2yQdmsbFN2KLuUPco+UbXiQvFF8VXxTfGoLFSWKMuVlUqpUq00Km1Kt9KvjChTyhplvbJJ2ap8qnymfK58oXypfKV8rRxTssppJadcUC4pV5Tryi3ljnJPeaA8Up4oz5SXymvlrfJeJVIVqUpV/NuGSq7SqggVqaJUQVVMlVHVqhpUzao2VYeqS9Wj6lMNqIZUI6px1aRqRjUnqlaVqypVUpVaZVTZVG6VXxVRpVQ1qnpVk6pV9VT1TPVc9UL1UvVK9Vo1pmJV0ypOtaBaUq2o1lVbqh3VnupAdaQ6UZ2pLlXXqlvVvVqkLlKXqhE1qpartWpCTaopdVAdU2fUteoGdbO6Td2h7lL3qPvUA+oh9Yh6XD2pnlHPqRfVy+pV9YZ6W72r3hdVq/3qiDqlrlHXq5vUreqn6mfq5+oX6pfqV+rX6jE1q55Wc+oF9ZJ6Rb2u3lLvqPfUB+oj9Yn6TH2pvlbfqu81Ik2RplTDv4lq5BqthtCQGkoT1MQ0GU2tpkHTrGnTdGi6ND2aPs2AZkgzohnXTGpmNHOaRc2yZlWzodnW7Gr2NYeaY82p5lxzpbnR3ImqNU81zzTPNS80LzWvNK81YxpWM63hNAuaJc2KZl2zpdnR7GkONEeaE82Z5lJzrbnV3GtF2iJtqZZ/I9fKtVotoSW1lDaojWkz2lptg7ZZ26bt0HZpe7R92gHtkHZEO66d1M5o57SL2mXtqnZDu63d1e5rD7XH2lPtufZKe6O90z7oxLpiXZmuQofrlKJq7ZiW1U5rOe2Cdkm7ol3Xbml3tHvaA+2R9kR7pr3UXmtvtfc6ka5IV6pDdKhOrtPqCB2po3RBXUyX0dXqGnTNujZdh65L16Pr0w3ohnQjunHdpG5GN6db1C3rVnUbum3drm5fd6g71p3qznVXuhvdne5BL9YX68v0FXpcr9Tr9Ra9U0/rGX1CXyWq1q3rtnQ7uj3dge5Id6I7013qrnW3unu9SF+kL+X/uYbq5XqtntCTekof1Mf0GX2tvkHfrG/Td+i79D36Pv2Afkg/oh/XT+pn9HP6Rf2yflW/od/W7+r39Yf6Y/2p/lx/pb/R3+kfDGJDsaHMUGHADUqD3mAxOA20gTEkDFWGOkOjocXQbug0dBt6RdX6M/2l/lp/q783iAxFhlIDYkANcoPWQBhIA2UIGmKGjKHW0GBoNrQZOgxdhh5Dn2HAMGQYMYwbJg0zhjnDomHZsGrYMGwbdg37hkPDseHUcG64MtwY7gwPRrGx2FhmrDDiRqVRb7QYnUbayBgTxipjnbHR2GJsN3Yau429xn7joHHYOGqcME4ZZ0XVxlIjYkSNcqPWSBhJI2UMGmPGjLHW2GBsNrYZO4xdxh5jn3HAOGQcMY4bJ40zxjnjonHZuGrcMG4bd437xkPjsfHUeG68Mt4Y74wPJrGp2FRmqjDhJqVJb7KYnCbaxJgSpipTnanR1GJqN3Wauk29pn7ToGnYNGqaME2ZZk3zpjemt6Y106bpnem9qNpEmYKmmCljqjU1mJpNbaYOU5epx9RnGjANmUZM46ZJ04xpzrRoWjatmjZM26Zd077p0HRsOjWdm65MN6Y70wMhJoqJMqKCwAkloScshJOgCYZIEFVEHdFItBDtRCfRTfQS/cQgMUyMEhPEFDFLzBNviLfEGrFJvCPeEx+Ij8Qn4jNxQXwhvoqqiTaig+gieog+YoAYIkaIcWKSmCHmiEVimVglNohtYpfYJw6JY+KUOCeuiBvijngwi83F5jJzhRk3K816s8XsNNNmxpwwV5nrzI3mFnO7udPcbe4195sHzcPmUfOEeco8a543vzG/Na+ZN83vzO/NH8wfzZ/Mn80X5i/mr+Zv5kdLoaXEUm6ptEhF1eYR87h50jxjnjMvmpfNq+YN87Z517xvPjQfm0/N5+Yr8435zvxgEVuKLWWWCgtuUVr0FovFaaEtjCVhqbLUWRotLZZ2S6el29Jr6bcMWoYto5YJy5Rl1jJveWN5a1mzbFreWd5bPlg+Wj5ZPlsuLF8sXy3fLI/WQmuJtdxaaZVa1Vaj1WZ1W/3WiDUlqrasWjYs25Zdy77l0HJsObWcW64sN5Y7y4NVbC22llkrrLhVadVbLVanlbYy1oS1ylpnbbS2WNutndZua6+13zpoHbaOWiesU9ZZ67z1jfWtdc26aX1nfW/9YP1o/WT9bL2wfrF+tX6zPtoKbSW2clulTWpT24w2m81t89sitpStxlZva7K12p7antmei6qtp9Zz65X1xnpnfbCJbcW2MluFDbcpbXqbxea00TbGlrBV2epsjbYWW7ut09Zt67X12wZtw7ZR24RtyjZrm7e9sb21rdk2be9s720fbB9tn2yfbRe2L7avtm+2R3uhvcRebq+0S+1qu9Fus7vtfnvEnrLX2OvtTfZW+1P7M/tz+wv7S/sr+2v7mJ21T4uq7cX2MnuFHbcr7Xq7xe6003bGnrBX2evsjfYWe7u9095t77X32wftw/ZR+4R9yj5rn7e/sb+1r9k37e/s7+0f7B/tn+yf7Rf2L/av9m/2R7KQLCHLyUpSSqpJI2kj3aSfjJApsoasJ5vIVvIp+Yx8Tr4gX5KvyNfkGMmS0yRHLpBL5Aq5Tm6RO6Jq0knSJEMmyCqyjmwkW8h2spPsJnvJfnKQHCZHyQlyipwl58k35Ftyjdwk35HvyQ/kR/IT+Zm8IL+QX8lv5KOj0FHiKHdUOqQOtcPosDncDr8j4kg5ahz1jiZHq+Op45njueOF46XjleO1Y8zBOqYdnGPBseRYcaw7thw7jj3HgePIceI4c1w6rkXVjhZHu6PT0e3odfQ7Bh3DjlHHhGPKMeuYd7xxvHWsOTYd7xzvHR8cHx2fHJ8dF44vjq+Ob45HZ6GzxFnurHRKnWqn0Wlzup1+Z8SZctY4651NzlbnU+cz53PnC+dL5yvna+eYk3VOOznngnPJueJcd245d5x7zgPnkfPEeea8dF47b533LpGryFXq4o/FomrnsHPUOeGccs46551vnG+da85N5zvne+cH50fnJ+dn54Xzi/Or85vz0VXoKnGVuypdUpfaZXTZXG6X3xVxpVw1rnpXk6vV9dT1zPXc9cL10vXK9do15mJd0y7OteBacq241l1brh3XnuvAdeQ6cZ25Ll3XrlvXvVvkLnKXuvmjuVvu1roJN+mm3EF3TFTteutac2263rneuz64Pro+uT67LlxfXF9d31yP7kJ3ibvcXemWutVuo9vmdrv97og75a5x17ub3K3up+5n7ufuF+6X7lfu1+4xN+uednPuBfeSe8W97t5y77j33AfuI/eJ+8x96b5237rvPSJPkafUg3hQj9yj9RAe0kN5gp6YJ+Op9TR4mj1tng5Pl6ja/cn92X3h/uL+6v7mfvQUeko85Z5Kj9Sj9hg9No/b4/dEPClPjafe0+Rp9Tz1PPM897zwvPS88rz2jHlYz7SH8yx4ljwrnnXPlmfHs+c58Bx5TjxnnkvPtefWc0+JqCKqlEIolJJTWoqgSIqiglSMylC1VAPVTLVRHVQX1UP1UQPUEDVCjVOTomqqkCqhyqlKSkqpKSNlo9yUn4pQKaqGqqeaqFbqKfWMek69oF5Sr6jX1BjFUtMURy1QS9QKtU5tUTvUHnVAHVEn1Bl1SV1Tt9S9V+Qt8pZ6ES/qlXu1XsJLeilv0BvzZry13gZvs7fN2+Ht8vZ4+7wD3iHviHfcO+md8c55F73L3lXvhndbVO21ed1evzfiTXlrvPXeJm+r96n3mfe594X3pfeV97V3zMt6p72cd8G75F3xrnu3vDvePe+B98h74j3zXnqvvbfee1pEF9GlNEKjtJzW0gRN0hQdpGN0hq6lG+hmuo3uoLvoHrqPHqCH6BF6nJ6kZ+g5epFeplfpDXqb3qX36UP6mD6lz+krUTXdRLfST+ln9HP6Bf2SfkW/psdolp6mOXqBXqJX6HV6i96h9+gD+og+oc/oS/qavqXvfSJfka/Uh/hQn9yn9RE+0kf5gr6YL+Or9TX4mn1tvg5fl6/H1+cb8A35RnzjvknfjG/Ot+hb9q36Nnzbvl3fvu/Qd+w79Z37rnw3vjvfg1/sL/aX+StE1b5Xvte+MR/rm/ZxvgXfkm/Ft+7b8u349nwHviPfie/Md+m79t367v0if5G/1I/4Ub/cr/UTftJP+YP+mD/jr/U3+Jv9bf4Of5e/x9/nH/AP+Uf84/5J/4x/zr/oX/av+jf82/5d/77/0H/sP/Wf+6/8N/47/0NAHCgOlAUqAnhAGdAHLAFngA4womr/kn/Fv+7f8u/49/wH/iP/if/Mf+m/9t/67wOiQFGgNIAE0IA8oA0QATJABYKBWCATqA00BJoDbYGOQFegJ9AXGAgMBUYC44HJwExgLrAYWA6sBjYC24HdwH7gMHAcOA2cB64CN4G7wENQHCwOlgUrgnhQGdQHLUFnkA4ywUSwKlgXbAy2BNuDnaLqwFHgJHAWuAxcB24D90FRsChYGkSCaFAe1AaJIBmkgsFgLJgJ1gYbgs3BtmBHsCvYE+wLDgSHgiPB8eBkcCY4F1wMLgdXgxvB7eBucD94GDwOngbPg1fBm+Bd8CEkDhWHykIVITykDOlDlpAzRIeYUCJUFaoLNYZaQu2hzlB3qDfUHxoMDYdGQxOi6pAoVBQqDSEhNCQPaUNEiAxRoWAoFsqEakMNoeZQW6gj1BXqCfWFBkJDoZHQeGgyNBOaCy2GlkOroY3Qdmg3tB86DB2HTkPnoavQTegu9MCImWKmjKlgcEbJ6BkL42RohmESTBVTxzQyLUw708l0M71MPzPIDDOjzAQzxcwy88wb5i2zxmyKqhmCIRmKCTIxJsPUMg1MM9PGdDBdTA/TxwwwQ8wIM85MMjPMHLPILDOrzAazzewy+8whc8ycMufMFXPD3DEPYXG4OFwWrgjjYWVYH7aEnWE6zIQT4apwXbgx3BJuD3eGu8O94f7wYHg4PBqeCE+FZ8Pz4Tfht+G18Gb4Xfh9+EP4Y/hT+HP4QlQdbgg3h9vCHeGucE+4LzwQHgqPhMfDk+GZ8Fx4MbwcXg1vhLfDu+H98GH4OHwaPg9fhW/Cd+GHiDhSHCmLVETwiDKij1gizggdYSKJSFWkLtIYaYm0Rzoj3ZHeSH9kMDIcGY1MRKYis5H5yJvI28haZDPyLvI+8iHyMfIp8jlyEfkS+Rr5FnmMFkZLouWi6shAZCgyEhmPTEZmInORxchyZDWyEdmO7Eb2I4eR48hp5DxyFbmJ3EUeouJocbQsWhHFo8qoPmqJOqN0lIkmolXRumhjtCXaHu2Mdkd7o/3RwehwdDQ6EZ2Kzkbno2+ib6Nr0c3ou+j76Ifox+in6OfoRfRL9Gv0W/QxVhgriZXHKmPSmDpmjNli7phfVB1djC5HV6Mb0e3obnQ/ehg9jp5Gz6NX0ZvoXfQhJo4Vx8piFTE8pozpY5aYM0bHmFgiVhWrizXGWmLtsc5Yd6w31h8bjA3HRmMTsanYbGw+9ib2NrYW24y9i72PfYh9jH2KfY5dxL7Evsa+xR7jhfGSeHm8Mi6Nq+PGuC3ujvvjkXgqXhOvjzfFW+NPRdWxw9hx7DR2HruK3cTuYg9xcbw4XhaviONxZVwft8SdcTrOxBPxqnhdvDHeEm+Pd8a7473x/vhgfDg+Gp+I/z/27jXWrvMs8PiJzz6XhlLCJqTbZ0opoRMVpoRSAnRCJ2TqvQ+dNlM6oZTQllA6EXYcx3Ecx3Ec3+/3W3y/rXe9a613reU4juM4jkEVQhVCFUIVQhVCFUIVoAqhCqEKoVBKGK+frfk430bkw/7yz9bRsROt58nKT34UnZOLzi8qF11YdHnRtUVfXvSVRV9d9LVFX1/0jUXfXPStRd9e9J1Fby56a9gb3j68Y3jX8D3Du4cfGN47vG94//DB4fzwoeHDw0eGjw4fGy4drhiuHq4bbhnuGh6Y+OSi7w0XDGeH7xreOZwbvm94z/CDww8PPzJ8YDgcfmL46eFnh18Yfmm4ZLh8uGq4drhpuGO4b3hkeHJ4flgOLwwvD68Nvzz8yvCrw68Nvz78xvCbw28Nvz38zvDN4Vuj3uj20R2ju0bvGd09+sDo3tF9o/tHD47mRw+NHh49Mnp09Nho6WjFaPVo3WjLaNfowOjo6PQojNLo4ujK6PrEJ0f3jD44+vDoI6MHRsPRJ0afHn129IXRl0ZLRstHq0ZrR5tGO0b7RkdGJ0fnR+Xowujy6Nroy6OvjL46+tro66NvjL45+tbo26PvjN4cvTXfm799/o75u+bfM3/3/Afm752/b/7++Qfn5+cfmn94/pH5R+cfm186v2J+9fy6+S3zu+YPzB+dPz0f5tP8xfkr89fnf3/+D+f/eP5P5/98/i/n/7o/3V16+jPdpac/2116+u/oLj3927tLT/+d3aWn//3dpaf/ru7S0/+B7tLT/8Hu0tPvd5ee/p3dpaf/w92lp//u7tLTH3SXnv7C7tLTn+suPf0f6S49/fd2l57+j3aXnv77uktP/8e6S0//x7tLT//93aWnf0936en/VHfp6d/bXXr6P91devof6i49/Z/pLj39n+0uPf37uktP/+e6S0//F7pLT/8j3aWn/4vdpaf/0e7S03+gu/T0f6m79PR/ubv09D/eXXr6n+wuPf2HuktP/1Pdpaf/K92lp/9wd+np/2p36el/prv09H+tu/T0P9tdevq/3l16+o90l57+b3SXnv7nuktP//Pdpaf/he7S0//N7tLTf7S79PR/q7v09L/YXXr6v91devpf6i49C9/sLj0L/6W79Cz8bnfpWfiv3aVn4fe6S8/Ct7pLz8J/7y49cxPdpWfutu7SM7egu/TMTXaXnrled+mZm+ouPeMJjic4nuB4guMJjic4nuB4guMJjic4nuB4guMJjic4nuB4guMJjic4nuB4guMJjic4nuB4guMJjic4nuB4guMJjic4nuB4guMJjic4nuB4guMJjic4nuB4guMJjic4nuB4guMJjic4nuB4guMJjic4nuB4guMJjic4nuB4guMJjic4nuB4guMJjic4nuB4guMJjic4nuB4gjcnOHHbxCcm7p74zMTnJr448TsTyyZWTqyZ2DCxbWLPxKGJ4xNnJ+JEM3Fp4urE7038wcQfTfzJxJ9N/MXEX0387cTfT/zjxD9PfO+2BbfN3vau2+687cakJm5buG7huYkbf9cbf81udP3CcKMbFsYb3aibdLOvb1mY3+jWhcWNbvN5u887dKfu8v27fd7je/b6vM/n/XpAD+ohPaxHug7+xuejfp9jfu1xPbHw/I2e9PmUntYzvn7W95+70dsW3H/j4f0/ft7Dgq8v+MaCby741oJvL/jOgjcXvDXZm7x98o7JuybfM3n35Acm7528b/L+yQcn5ycfmnx48pHJRycfm1w6uWJy9eS6yS2TuyYPTB6dPD0ZJtPkxckrk9cnf3/yDyf/ePJPJ/988i8n/3ry7yb/YfKfJr/bm+hN997Z6/cGvff23t/7yd6Hej/f+2jvY72P9z7V+0zvc70v9n6nt6y3sremt6G3rbend6h3vHe2F3tN71Lvau/3en/Q+6Pen/T+rPcXvb/q/W3v73v/2Pvn3vemFkzNTr1r6s6puan3Td0z9cGpD099ZOqBqeHUJ6Y+PfXZqS9MfWlqydTyqVVTa6c2Te2Y2jd1ZOrk1PmpcurC1OWpa1NfnvrK1Fenvjb19alvTH1z6ltT3576ztSbU29N96Zvn75j+q7p90zfPf2B6Xun75u+f/rB6fnph6Yfnn5k+tHpx6aXTq+YXj29bnrL9K7pA9NHp09Ph+k0fXH6yvT16d+f/sPpP57+0+k/n/7L6b+e/rvpf5j+p+nvzkzMTM+8c6Y/M5h578z7Z35y5kMzPz/z0ZmPzXx85lMzn5n53MwXZ35nZtnMypk1Mxtmts3smTk0c3zm7EycaWYuzVyd+b2ZP5j5o5k/mfmzmb+Y+auZv535+5l/nPnnme/NLpidnX3X7J2zc7Pvm71n9oOzH579yOwDs8PZT8x+evazs1+Y/dLsktnls6tm185umt0xu2/2yOzJ2fOz5eyF2cuz12a/PPuV2a/Ofm3267PfmP3m7Ldmvz37ndk3Z996R+8dt7/jjnfcdePfh+/7vz8H5J6JqRtvpAcn3nfjHfLYxH2D2wbTEw8PZgd3Tzwy+InBRyeeGTww+PzEzsHiwe9OVH5Sw5sL35x798R3u/drt5H9GZ3Vd+jt+k79fn2X/oDeoT+off0hvVN/WO/Sd+tAF+qc/id9j/6Ivld/VN+nP6Z364/r+/U/6z36U3qv/rR+SH9GP6w/q/fpz+nP6y/oR/S/6v36i/pR/W/6gP6SPqi/rB/X/6Gf0E/qQ/o/9VP6K/pp/V/6sP6qfkZ/TT+rv66P6G/o5/Tz+gX9TX1Uf0u/qL+tX9L/rY9575wf3Nb9TNPu82BSezqlNmFgBwZ2YGAHBt+nNmFgEwY2YWATBjZhYBMGNmFgEwY2YWATBjZhYBMGNmFgEwY2YWATBjZhYBMGNmFgEwY2YWATBjZh8BP6k/pf9INqEwY2YWATBjZhYBMGNmFgEwY2YWATBjZhYBMGNmFgEwY2YWATBjZhYAcGdmBgBwb/XT+mi3SoI51XezKwJwN7MrAnA3sysCcDezKwJwN7MrAnA3sysCcDezKwJwN7MrAnA3sysCcDezKwJ4PP35r4Yl2ij+tSfUKX6ZO6XJ/SFfq0rtRndJU+q6v1OV2jz+tafUHX6XrdoBt1k27WLbpVt+l23aE7dZfu1j26V/fpfj2gB/WQHtYj+qIe1WN6XE/oST2lp/WMntVzevN5Zho016iFllpp0lobbfWCvqQX9WW9pK/oZX1Vr+hrelVf12v6hl7X3+268AP6Exx3nuPOc9x5jjvPcV3/Td/Sf+86N6G3qbfEnLfEnLfEnLfEnLfEnP9ezHlXzHlXzHlXzHlXzHlXzHlXzHlXzHlXzHlXzHlXzHlXzP3QzS2du1N/WO/Sd49tNLbRf7iNMjbK2Chjo4yNMjbK2Chjo4yNMjbK2Chjo4yNMjbK2Chjo4yNMjbK2Chjo4yNMjbK2Chjo4yNMjbK2Chjo4yNMjbK2Chjo4yNMjbK2Chjo4yNMjbK2Chjo4yNMjbK2Chjo4yNMjbK2Chjo4yNMjbK2Chjo4yNMjbK2Chjo4yNMjbK2Chjo4yNMjbK2Chjo4yNMjbK2Chjo4yNMjbK2Chjo4yNMjbK2Chjo4yNMjbK2Chjo4yNMjbq3unZLRtlbJSxUcZGGRtlbJSxUcZGGRtlbJSxUcZGGRtlbJSxUcZGGRtlbJSxUcZGGRtlbJSxUcZGGRtlbJSxUcZGGRtlbJSxUcZGGRtlbJSxUcZGGRtlbJSxUcZGGRtlbJSxUcZGGRtlbJSxUcZGGRtlbJSxUcZGGRtlbJSxUcZGGRtlbJSxUcZGGRtlbJSxUcZGGRtlbJSxUcZGGRtlbJSxUcZGGRtlbJSxUcZGGRtlbJSxUcZGGRtlbHRz4ot1iT6uS/UJXaZP6nJ9Slfo07pSn9FV+qyu1ud0jT6va/UFXafrdYNu1E26WbfoVt2m23WH7tRdulv36F7dp/v1gB7UQ3pYj+iLelSP6XE9oSf1lJ7WM3pWz+l5vflUg+YatdBSK01aa6OtXtCX9KK+rJf0Fb2sr+oVfU2v6ut6Td/Q69rZKGOj7JaNMjbK2Chjo4yNMjbK2Chjo4yNMjbK2Chjo4yNMjbK2Chjo4yNMjbK2Chjo4yNMjbK2Chjo4yNMjbK2ChjI8+TjTI2ytgoG9tobKO3gY0CGwU2CmwU2CiwUWCjwEaBjQIbBTYKbBTYKLBRYKPARoGNAhsFNgpsFNgosFFgo8BGgY0CGwU2CmwU2CiwUWCjwEaBjQIbBTYKbBTYKLBRYKPARoGNAhsFNgpsFNgosFFgo8BGgY0CGwU2CmwU2CiwUWCjwEaBjQIbBTYKbBTYKLBRYKPARoGNAhsFNgpsFNgosFFgo8BGgY0CGwU2CmwU2CiwUWCjwEaBjQIbdW/zcMtGgY0CGwU2CmwU2CiwUWCjwEaBjQIbBTYKbBTYKLBRYKPARoGNAhsFNgpsFNgosFFgo8BGgY0CGwU2CmwU2CiwUWCjwEaBjQIbBTYKbBTYKLBRYKPARoGNAhsFNgpsFNgosFFgo8BGgY0CGwU2CmwU2CiwUWCjwEaBjQIbBTYKbBTYKLBRYKPARoGNAhsFNgpsFNgosFFgo8BGgY0CGwU2CmwU2CiwUWCjwEaBjW5OfLEu0cd1qT6hy/RJXa5P6Qp9WlfqM7pKn9XV+pyu0ed1rb6g63S9btCNukk36xbdqtt0u+7QnbpLd+se3av7dL8e0IN6SA/rEX1Rj+oxPa4n9KSe0tN6Rs/qOT2vmd58trlGLbTUSpPW2mirF/Qlvagv6yV9RS/rq3pFX9Or+rpe0zf0unY2CmwUbtkosFFgo8BGgY0CGwU2CmwU2CiwUWCjwEaBjQIbBTYKbBTYKLBRYKPARoGNAhsFNgpsFNgosFFgo8BGniQbBTYKbBTGNhrb6G1go5yNcjbK2Shno5yNcjbK2Shno5yNcjbK2Shno5yNcjbK2Shno5yNcjbK2Shno5yNcjbK2Shno5yNcjbK2Shno5yNcjbK2Shno5yNcjbK2Shno5yNcjbK2Shno5yNcjbK2Shno5yNcjbK2Shno5yNcjbK2Shno5yNcjbK2Shno5yNcjbK2Shno5yNcjbK2Shno5yNcjbK2Shno5yNcjbK2Shno5yNcjbK2Shno5yNcjbK2Shno5yNuvd4fstGORvlbJSzUc5GORvlbJSzUc5GORvlbJSzUc5GORvlbJSzUc5GORvlbJSzUc5GORvlbJSzUc5GORvlbJSzUc5GORvlbJSzUc5GORvlbJSzUc5GORvlbJSzUc5GORvlbJSzUc5GORvlbJSzUc5GORvlbJSzUc5GORvlbJSzUc5GORvlbJSzUc5GORvlbJSzUc5GORvlbJSzUc5GORvlbJSzUc5GORvlbJSzUc5GORvlbJSzUc5GORvdnPhiXaKP61J9Qpfpk7pcn9IV+rSu1Gd0lT6rq/U5XaPP61p9Qdfpet2gG3WTbtYtulW36XbdoTt1l+7WPbpX9+l+PaAH9ZAe1iP6oh7VY3pcT+hJPaWn9Yye1XN6XjMNevMJRy201EqT1tpoqxf0Jb2oL+slfUUv66t6RV/Tq/q6XtM39Lp2NsrZKL9lo5yNcjbK2Shno5yNcjbK2Shno5yNcjbK2Shno5yNcjbK2Shno5yNcjbK2Shno5yNcjbK2Shno5yNcjbK2cgzZKOcjXI2ysc2GtvobWCjyEaRjSIbRTaKbBTZKLJRZKPIRpGNIhtFNopsFNkoslFko8hGkY0iG0U2imwU2SiyUWSjyEaRjSIbRTaKbBTZKLJRZKPIRpGNIhtFNopsFNkoslFko8hGkY0iG0U2imwU2SiyUWSjyEaRjSIbRTaKbBTZKLJRZKPIRpGNIhtFNopsFNkoslFko8hGkY0iG0U2imwU2SiyUWSjyEaRjSIbRTaKbBTZKLJRZKPIRt0bPN6yUWSjyEaRjSIbRTaKbBTZKLJRZKPIRpGNIhtFNopsFNkoslFko8hGkY0iG0U2imwU2SiyUWSjyEaRjSIbRTaKbBTZKLJRZKPIRpGNIhtFNopsFNkoslFko8hGkY0iG0U2imwU2SiyUWSjyEaRjSIbRTaKbBTZKLJRZKPIRpGNIhtFNopsFNkoslFko8hGkY0iG0U2imwU2SiyUWSjyEaRjSIbRTaKbBTZKLJRZKObE1+sS/RxXapP6DJ9UpfrU7pCn9aV+oyu0md1tT6na/R5Xasv6Dpdrxt0o27SzbpFt+o23a47dKfu0t26R/fqPt2vB/SgHtLDekRf1KN6TI/rCT2pp/S0ntGzek7Pa6ZBc735nAsttdKktTba6gV9SS/qy3pJX9HL+qpe0df0qr6u1/QNva6djSIbxVs2imwU2SiyUWSjyEaRjSIbRTaKbBTZKLJRZKPIRpGNIhtFNopsFNkoslFko8hGkY0iG0U2imwU2SiykafHRpGNIhvFsY3GNnob2Khgo4KNCjYq2Khgo4KNCjYq2Khgo4KNCjYq2Khgo4KNCjYq2Khgo4KNCjYq2Khgo4KNCjYq2Khgo4KNCjYq2Khgo4KNCjYq2Khgo4KNCjYq2Khgo4KNCjYq2Khgo4KNCjYq2Khgo4KNCjYq2Khgo4KNCjYq2Khgo4KNCjYq2Khgo4KNCjYq2Khgo4KNCjYq2Khgo4KNCjYq2Khgo4KNCjYq2Khgo4KNCjYq2Khgo4KNCjYq2Khgo+7dXdyyUcFGBRsVbFSwUcFGBRsVbFSwUcFGBRsVbFSwUcFGBRsVbFSwUcFGBRsVbFSwUcFGBRsVbFSwUcFGBRsVbFSwUcFGBRsVbFSwUcFGBRsVbFSwUcFGBRsVbFSwUcFGBRsVbFSwUcFGBRsVbFSwUcFGBRsVbFSwUcFGBRsVbFSwUcFGBRsVbFSwUcFGBRsVbFSwUcFGBRsVbFSwUcFGBRsVbFSwUcFGBRsVbFSwUcFGBRsVbFSwUcFGNye+WJfo47pUn9Bl+qQu16d0hT6tK/UZXaXP6mp9Ttfo87pWX9B1ul436EbdpJt1i27Vbbpdd+hO3aW7dY/u1X26Xw/oQT2kh/WIvqhH9Zge1xN6Uk/paT2jZ/WcntdMg+Ya9ebTLrXSpLU22uoFfUkv6st6SV/Ry/qqXtHX9Kq+rtf0Db2unY0KNipu2ahgo4KNCjYq2Khgo4KNCjYq2Khgo4KNCjYq2Khgo4KNCjYq2Khgo4KNCjYq2Khgo4KNCjYq2Khgo4KNCjby3NioYKOCjYrORv+f/j++bjrrF3bT2bCwm8tG3aSbfX3Lwm5qWxd289rm83afd+hO3eX7d/u8x/fs9Xmfz/v1gB7UQ3pYj3Qd/I3PR/0+x/za43piYbdFJ30+paf1jK+f9f3nbnRsx7Ed/6PtWLJjyY4lO5bsWLJjyY4lO5bsWLJjyY4lO5bsWLJjyY4lO5bsWLJjyY4lO5bsWLJjyY4lO5bsWLJjyY4lO5bsWLJjyY4lO5bsWLJjyY4lO5bsWLJjyY4lO5bsWLJjyY4lO5bsWLJjyY4lO5bsWLJjyY4lO5bsWLJjyY4lO5bsWLJjyY4lO5bsWLJjyY4lO5bsWLJjyY4lO5bsWLJjyY4lO5bsWLJjyY4lO5bsWLJjyY4lO5bsWLJj994pb9mxZMeSHUt2LNmxZMeSHUt2LNmxZMeSHUt2LNmxZMeSHUt2LNmxZMeSHUt2LNmxZMeSHUt2LNmxZMeSHUt2LNmxZMeSHUt2LNmxZMeSHUt2LNmxZMeSHUt2LNmxZMeSHUt2LNmxZMeSHUt2LNmxZMeSHUt2LNmxZMeSHUt2LNmxZMeSHUt2LNmxZMeSHUt2LNmxZMeSHUt2LNmxZMeSHUt2LNmxZMeSHUt2LNmxZMeSHUt2LNmxZMebE1+sS/RxXapP6DJ9UpfrU7pCn9aV+oyu0md1tT6na/R5Xasv6Dpdrxt0o27SzbpFt+o23a47dKfu0t26R/fqPt2vB/SgHtLDekRf1KN6TI/rCT2pp/S0ntGzek7Pa6ZBc41a6M1nXmnSWhtt9YK+pBf1Zb2kr+hlfVWv6Gt6VV/Xa/qGXtfOjiU7lrfs2P3z/It+V/9Vv6f/pm/pv3e9YceSHUt2LNmxZMeSHUt2LNmxZMeSHUt2LNmxZMeSHUt2LNmxZMeSHUt2LNnRE2PHkh1LdizHf642ttHbwEYVG1VsVLFRxUYVG1VsVLFRxUYVG1VsVLFRxUYVG1VsVLFRxUYVG1VsVLFRxUYVG1VsVLFRxUYVG1VsVLFRxUYVG1VsVLFRxUYVG1VsVLFRxUYVG1VsVLFRxUYVG1VsVLFRxUYVG1VsVLFRxUYVG1VsVLFRxUYVG1VsVLFRxUYVG1VsVLFRxUYVG1VsVLFRxUYVG1VsVLFRxUYVG1VsVLFRxUYVG1VsVLFRxUYVG1VsVLFRxUYVG3Xv6+qWjSo2qtioYqOKjSo2qtioYqOKjSo2qtioYqOKjSo2qtioYqOKjSo2qtioYqOKjSo2qtioYqOKjSo2qtioYqOKjSo2qtioYqOKjSo2qtioYqOKjSo2qtioYqOKjSo2qtioYqOKjSo2qtioYqOKjSo2qtioYqOKjSo2qtioYqOKjSo2qtioYqOKjSo2qtioYqOKjSo2qtioYqOKjSo2qtioYqOKjSo2qtioYqOKjSo2qtioYqOKjSo2ujnxxbpEH9el+oQu0yd1uT6lK/RpXanP6Cp9Vlfrc7pGn9e1+oKu0/W6QTfqJt2sW3SrbtPtukN36i7drXt0r+7T/XpAD+ohPaxH9EU9qsf0uJ7Qk3pKT+sZPavn9LxmGjTXqIWWevPJJ6210VYv6Et6UV/WS/qKXtZX9Yq+plf1db2mb+h17WxUsVF1y0YVG1VsVLFRxUYVG1VsVLFRxUYVG1VsVLFRxUYVG1VsVLFRxUYVG1VsVLFRxUYVG1VsVLFRxUYVG1VsVLGRZ8VGFRtVbFSNbTS20dvARomNEhslNkpslNgosVFio8RGiY0SGyU2SmyU2CixUWKjxEaJjRIbJTZKbJTYKLFRYqPERomNEhslNkpslNgosVFio8RGiY0SGyU2SmyU2CixUWKjxEaJjRIbJTZKbJTYKLFRYqPERomNEhslNkpslNgosVFio8RGiY0SGyU2SmyU2CixUWKjxEaJjRIbJTZKbJTYKLFRYqPERomNEhslNkpslNgosVFio8RGiY26N3W6ZaPERomNEhslNkpslNgosVFio8RGiY0SGyU2SmyU2CixUWKjxEaJjRIbJTZKbJTYKLFRYqPERomNEhslNkpslNgosVFio8RGiY0SGyU2SmyU2CixUWKjxEaJjRIbJTZKbJTYKLFRYqPERomNEhslNkpslNgosVFio8RGiY0SGyU2SmyU2CixUWKjxEaJjRIbJTZKbJTYKLFRYqPERomNEhslNkpslNgosVFio8RGNye+WJfo47pUn9Bl+qQu16d0hT6tK/UZXaXP6mp9Ttfo87pWX9B1ul436EbdpJt1i27Vbbpdd+hO3aW7dY/u1X26Xw/oQT2kh/WIvqhH9Zge1xN6Uk/paT2jZ/WcntdMg+YatdBSK735/GtttNUL+pJe1Jf1kr6il/VVvaKv6VV9Xa/pG3pdOxslNkq3bJTYKLFRYqPERomNEhslNkpslNgosVFio8RGiY0SGyU2SmyU2CixUWKjxEaJjRIbJTZKbJTYKLFRYiNPiY0SGyU2SmMbjW30NrBRzUY1G9VsVLNRzUY1G9VsVLNRzUY1G9VsVLNRzUY1G9VsVLNRzUY1G9VsVLNRzUY1G9VsVLNRzUY1G9VsVLNRzUY1G9VsVLNRzUY1G9VsVLNRzUY1G9VsVLNRzUY1G9VsVLNRzUY1G9VsVLNRzUY1G9VsVLNRzUY1G9VsVLNRzUY1G9VsVLNRzUY1G9VsVLNRzUY1G9VsVLNRzUY1G9VsVLNRzUY1G9VsVLNRzUY1G9VsVLNRzUbdO7q+ZaOajWo2qtmoZqOajWo2qtmoZqOajWo2qtmoZqOajWo2qtmoZqOajWo2qtmoZqOajWo2qtmoZqOajWo2qtmoZqOajWo2qtmoZqOajWo2qtmoZqOajWo2qtmoZqOajWo2qtmoZqOajWo2qtmoZqOajWo2qtmoZqOajWo2qtmoZqOajWo2qtmoZqOajWo2qtmoZqOajWo2qtmoZqOajWo2qtmoZqOajWo2qtmoZqOajWo2qtmoZqOajW5OfLEu0cd1qT6hy/RJXa5P6Qp9WlfqM7pKn9XV+pyu0ed1rb6g63S9btCNukk36xbdqtt0u+7QnbpLd+se3av7dL8e0IN6SA/rEX1Rj+oxPa4n9KSe0tN6Rs/qOT2vmQbNNWqhpVaa9OYUGm31gr6kF/VlvaSv6GV9Va/oa3pVX9dr+oZe185GNRvVt2xUs1HNRjUb1WxUs1HNRjUb1WxUs1HNRjUb1WxUs1HNRjUb1WxUs1HNRjUb1WxUs1HNRjUb1WxUs1HNRjUbeT5sVLNRzUb12EZjG70NbNSwUcNGDRs1bNSwUcNGDRs1bNSwUcNGDRs1bNSwUcNGDRs1bNSwUcNGDRs1bNSwUcNGDRs1bNSwUcNGDRs1bNSwUcNGDRs1bNSwUcNGDRs1bNSwUcNGDRs1bNSwUcNGDRs1bNSwUcNGDRs1bNSwUcNGDRs1bNSwUcNGDRs1bNSwUcNGDRs1bNSwUcNGDRs1bNSwUcNGDRs1bNSwUcNGDRs1bNSwUcNGDRs1bNSwUcNGDRs1bNSwUfd2bm7ZqGGjho0aNmrYqGGjho0aNmrYqGGjho0aNmrYqGGjho0aNmrYqGGjho0aNmrYqGGjho0aNmrYqGGjho0aNmrYqGGjho0aNmrYqGGjho0aNmrYqGGjho0aNmrYqGGjho0aNmrYqGGjho0aNmrYqGGjho0aNmrYqGGjho0aNmrYqGGjho0aNmrYqGGjho0aNmrYqGGjho0aNmrYqGGjho0aNmrYqGGjho0aNmrYqGGjho0aNmrYqGGjmxNfrEv0cV2qT+gyfVKX61O6Qp/WlfqMrtJndbU+p2v0eV2rL+g6Xa8bdKNu0s26RbfqNt2uO3Sn7tLdukf36j7drwf0oB7Sw3pEX9SjekyP6wk9qaf0tJ7Rs3pOz2umQXONWmiplSat9eYsWr2gL+lFfVkv6St6WV/VK/qaXtXX9Zq+ode1s1HDRs0tGzVs1LBRw0YNGzVs1LBRw0YNGzVs1LBRw0YNGzVs1LBRw0YNGzVs1LBRw0YNGzVs1LBRw0YNGzVs1LBRw0aeDBs1bNSwUTO20dhGbwMbtWzUslHLRi0btWzUslHLRi0btWzUslHLRi0btWzUslHLRi0btWzUslHLRi0btWzUslHLRi0btWzUslHLRi0btWzUslHLRi0btWzUslHLRi0btWzUslHLRi0btWzUslHLRi0btWzUslHLRi0btWzUslHLRi0btWzUslHLRi0btWzUslHLRi0btWzUslHLRi0btWzUslHLRi0btWzUslHLRi0btWzUslHLRi0btWzUslHLRi0btWzUvZfbWzZq2ahlo5aNWjZq2ahlo5aNWjZq2ahlo5aNWjZq2ahlo5aNWjZq2ahlo5aNWjZq2ahlo5aNWjZq2ahlo5aNWjZq2ahlo5aNWjZq2ahlo5aNWjZq2ahlo5aNWjZq2ahlo5aNWjZq2ahlo5aNWjZq2ahlo5aNWjZq2ahlo5aNWjZq2ahlo5aNWjZq2ahlo5aNWjZq2ahlo5aNWjZq2ahlo5aNWjZq2ahlo5aNWjZq2ahlo5aNWjZq2ejmxBfrEn1cl+oTukyf1OX6lK7Qp3WlPqOr9Fldrc/pGn1e1+oLuk7X6wbdqJt0s27RrbpNt+sO3am7dLfu0b26T/frAT2oh/SwHtEX9age0+N6Qk/qKT2tZ/SsntPzmmnQXKMWWmqlSWtt9OZELuhLelFf1kv6il7WV/WKvqZX9XW9pm/odf3drmzU3rJRy0YtG7Vs1LJRy0YtG7Vs9H9Y+xb4KIrk/37MY7OZHcJmk2w2IcQQEQKGGJBHAI0hIEaeIUGIyCME5C3mOMCIgBgexhwiIiIiInJq0ONQOeQ4RY7j+HHIISJGTBBRQRGRlxgQkf19p6eB3Un86/3vd/Wp+lZN99T0dFdX1yDcVonaqErURlWiNqoStVGVqI2qRG1UJWqjKlEbVYnaqErURlWiNqoStVGVqI2qRG1UJWqjKlEbVYnaqErURlWiNqoStZGYE1EbVYnaqErURlXi3/FpYCtjzcfKU+ICm9aV6LaQSswI8LfeUt/dVk/OrBbvqNB+vgdFv6FE8Z71zYpODW3zfibahhPdN5lw72cxg33FvrdCe8S+gzNWI+kxxSQ6eqLvEcJjitBzjK84urv3sG+Wb/U1K/ZG3yO/qV862kPf5FHxjNSYYcT0f2HfGf2mbyz8vUW4b0d0sW8sPDtb00NbG/CX7h9Kohvy5x0l3vLqvfX6pTfcL/QZeE8tpjhmZExJzKiY0fE34IluwmLuj/m9tVa+aaK3pllzSRv/MUR/iRAgIQYhqHixo8kYXIghlMbSeMJogLaA3pL2hd6PPgV9KcXupMvoc9BXUsQ+/Qs9Bf00PUM4PUvPQf+B1kE/T3+EfpH+BP0SvQw9yCjhjDEFNbbKNOg6c0OPZAZ0D2sEPYo1hu5lPugxLA46DkfoAZYAPZFdBz2FNYOeym6A3oK1hJ7G0qC3Yq2gt2atod/IboSezpZDf5Y9C30FWwH9OfYc9JX8dkJ5T34H4TxPjSYUNTHeF3Vxd+g91NsJV3uqI6AXq2Ohj1Pvh16qToM+XS2HPledC32euhX639W/Q9/mwoyiwryeMFfziPGERkyImEB4xERPFaGetZ61hHte9fwd+jbPP6HvMJsQaiaZmCvzvBkktBFphNVqxKKaERqVGjWA8KiCqALohVGF0AdGDYR+V9Qg6IOjBkMviroH+tCoodCHRQ2DPjzqMeiVUZXQ/+BVsac0VJ/cOyqmP5Y1H/uOxQzDDqMxIxAzLGZk3E+Exl2KC2JHEz+WHnVqF8L9Xf1doVsVKvcP8Y+GbtWp3L85vjkywQ2IMCpqVh6fFv+g/Be51q9G4U3j18a/jutvxCPC4jfFW/lvc/x56FZ1ywP+gJ/QQHwggEyTkNDS2vEyBhn5K6LotIifH0TkXLRihgZFtKgiTiJFhESJ2IgRUREQ8ZAiIgGxyu/AmlqrVgxZopZAjlYxfnzXjBErWAo5RZ0COVWdKtfCZSabyViLFBN+zFQTWclsbjaHbGHCp5lmIrrM1ibiykw30yEzzAzItiaynnmzeTNkB7MDZCezE2RnszNkVxNzaN5q3gp5m3kbZDezG+TtJmLPvMe8B3KkORJylIkcad5r3gs5wZwAOcmcBDnZnAw5xcRozakmRmtON6dDzjRnQs42Z0OWm4hGc745H/JREznZrDQrIReaCyGfMJ+AfNJ8EvIpE/vXfNp8GvIZ8xnIZ81nIZ8zsZfN583nIV8wX4B80XwR8o8mMoX5svkyZJWJlTVfNV+F/JP5J8j15nrIN8w3IDeYGyA3mhshN5mbIDebmyHfMd+B3Gpij5jbzG2Q283tkDvMHZA7zZ2Qu8xdkLvN3ZB7zD2Qe829kPvMfZD7zf2Q1WY15AHzAGSNWQN5yDwEecI8AXnKRP4xz5hnIL83v4f8wfxBRL71O7+G+FXfKG8Uvs3sX/WN9kZDt3/VN9YbCz1O/JJvgjcRehPxu70p3hTo9u/2Xu+9Hnpz8eu9N4pf6c30ZuJKW/H7vO297aHbv8/byZsF3f593q7ertDt3+fNxndgpPx93ju8edDt3+ft7e0N3f593n7e/tDzxa/ojsSejcRORJ724xuAKH58BhM3vh4joRt+g+h+j9+E3sjfCHqUvzF0r98LPdofCz3O74ce728CPcmfBL2pPxn6df7roKfgK1TxN/O3gM+W/huhp/vTcb2N/ybomf5M6G397aDf7G8PvYO/I/RO/k7Qs/ydoXdBltCRH26Fnu2/DXqOvxv0XH8u9O7+HtBv9/eEfod/MPQiZBIdOeQhvNFMVJ0R/lmo/jT/UlR5qn856jvVb/0qnuq3/v+pVL/1t8FVv1WXcf+rqLZU/wbUWar/LWQhVWQeFZXUJVEx/Uwi4y+L3wvWAm6iBCIDkUQPGIFo6D7kHE3mFzct1vOJPqJ0RDFpPaJ04iSyYOQDpRPI0ntH3VdK9t5bOmo8OThmVHEpOTlhxJRJ1CCJROlxW34yad271+Bk0nFAn9xkkluYD9mPkGCQqDiB40kLcjNpL2xOIkiAtJS6mySQNKlHwlcrqRukCWktsp5lM4CHRBGW03dAMkkakJ+D54kWBW2NSFOSLi3rrE8iN0qL455k0uaqH0oaX9UVkJdcRzIwBnrHXXgDn3xWNEmRmo80I7GE39GvX0+Smt+3dzLJKMi/M5ncIj2oJIakkpvkmGPJ9SRTtmgkjjQnbaWl49i4gbQjd4yc/LvJdJOQW4TcLuQuIfcKWS3kQSG/GD+qdBI9ZkmWLmQfIScJuVDIPULuF7JGyMNCfiXkCSHPCnlByMuW5IqQbiGjJo4oHc9jhewhZImQc4RcJeRWIfcLeUzIS5ZUxL1KvpBLhHxFyLeF3Dtx/MTxyhEhzwp5yZKqJmSUkAEhU4RMEzJTyCwhc4TMEzL/d7/L6KAWQXZUJ5VltG+nlkPerFZAtlcXQXZQl0J2VFdAdlJXQ96mvgKZo66D7KZugMxVN0N2V7dC9lB3lGV0yFB3Q96k7oPMVA9AtlUPQbZTj0DerB6Xe+M/kdchPtMReRmIjkzEQTsR/x1IR9KJZJHOpAsZTkaQYjKSlJBRZDS5FzXlWDKOjCcTyEQyidxHJsOLGebFec9/354U1v6fj4+S+4Wk9WRpiG6EyPo9LRmLHdsVu+pWkk1uIzmkG8kl3UkPcjvpSfLInaQX6U36kL7IKP1JvsgFdu+Gev13reb/o7Uv2l3IClzsfA272oVc9t9da4rxmMhgUchMXmQeHzJKLHKHHzkzgNyYiDyYhF7JiKgUZKNU5JjmyCUtkEHTrGz5f+Dh//qdVHIHGULuIUPJMFhcWr+mWV9jkf8FukgBKSQDyV1kEBlMisjduBZBBjRwlSKyLVks5EghS4QcJeRoIe8VcoyQY4UcJ+R4IScIOVHISULeJ2ToriglF2kd0/DdlcXyWBEbx8pYBVvO1rLNbBc7ws5xhft4R3xhTVUmqDvUavUrrURboF3S0yJmRiyMWBmxLmJLxJ6IQxEn3V53iruHe6Z7o3uHuzpSifRFpka2i8yNLIgsiZwSWR65JPKcYRpJRkejpzHIGGOsMtYbW40jxjmP4vF5Uj23ePp4Zng2eLabOeYQ1M/HzYuN3I16NVrYaGWjTVHto3pEjYva2thoPLXxvMarvEXexd793pPey9Ep0ZnROdH50cXRpdFzohdHb4yuib7sS/H18I3zLfS94av2XYxxxwRi0mKyYvJiimLGxZTFVMQsj1kbszlmV0xNzPGYi7Hu2EBsWmxWbF5sUey42LLYitjlsWtjN8fuiq2JPR57Mc4dF4hLi8uKy4srihsXVxZXEbc8bm3c5rhdcTVxx+Mu+t34HEpDTZWHCmmcv8xfgVporX+zf5e/xn/cfzHeHR/AF1ZWfF58Ufy4+LL4ivjl+L7aHL8rvib+ePzFgDsQCKQFsgJ5gaLAuEBZoCKwPLA2sDmwK1ATOB64mOBOCCSkJWQl5CUUJYxLKEuoSFiesDZhc8KuhJqE4wkXE92JgcS0xKzEvMSixHGJZYkVicsT1yZuTtyVWJN4PPFiE3eTQJO0JllN8poUNRnXpEzsAfvPHZDbEiphu0RF48NepFYtk1Bj44vNbdy0LOQe1DAROeF2fma4PeBEuH1Xdbg9rTTcLjscbs9YTiJcIfbC0SHtGqEv7Qu3X7d2UoTYaV4xYvrmfhs3p+M6vebpH6vC7e23hNjg9yYI+9psWNdWSNxt424W7mN3hrAVZLlYZLLmdsu/L9i4x5SYI3G66O3HaXYLMngf7P2h2NGTyFQyk8wjC8lSspK8RNaRjWQL2UH2kGpyiHxFTsq7yyS+InGHje8zickSh0gslbjFxr2GRNm+d5nEahs/8EkskLhEomzf55XYT+JCiXts/FC+7Yey/cNyiZvFW6fgtMpHlitGriolZWQOqSCLyXKymqwlb5DNZBvZRfaRGvIFOU7OIjsx6qZeGqApNI1m0iyaQ/NovvQoZ2B/Dxs/kjPw0VYbq+VIq+dIPGfjx+kS50k8bOOBFImy/4EjNn4i1/MT2f+TYzbWrLGxttjGg/L+g4tt/FSROF3iXhsPpUmU/g5Jf5/1kviGjYfl+A9PkXjAxs87Slwu8XJ4NH5hhEf0d6nCNkRkpjcQdXYvOZrvLtl4cpGNp+Tbn7pFohzNqdckbpd40cbTmRLzJM6uv59Oy3vPZEgcI/pYX1epqPfaobbLRUVTgHO3BOeY3UfG0Rn5nLOrbPy+p8QTNp6Ts/9DlsSNNtbJVTofJbGyoT17Xnq/INfsR3n9x2rRuzOZQcpJJVlCVpA15DWygbxNtpPdZD85SI6QE+QcuUQValAfTaSptDVtR7vQXNqLFtAhtIROoFPoDFpOK+kSuoKuoa/RDfRtup3upvvpQXqEnqDn6CWmMIP5WCJLZa1ZO9aF5TIZFxflzv1JvsGlJBt/zrbxsnzDoL2SDDtKILXjjjF7ZZnSwkZ1oI2aPbNM32Cjy55xFmHvE+ZWJNbYGGnHJzMqbPSU2Gjm2tjI/q8BLEqTaMc3a2xnT+a1I4hFJ0q0MwfzzbYxxt7PLNaQuN/GODsLM+vPMS2Mby3xrI2BzTYm2PuXJdrzxprI5zSxI4QlvW1j04USj9uYLO+/Tr5Xip0hWTM5D83kOFPt2GDXt5do5xXWXM7fDfL9Wsj2FpdtbGlnapZm7yzWqihs37LWSWH7lmWUOuxyh70i7AxkGW+EtMO+yR9uZ+bV24msrYyBtjIG2jp8tD1Q/5526yTa+ZHdXCb6qKjv/ajhW5AMeX2VRPvkYO3lerbPkTi94fvar5Qo172DW2K2xKnh89BhZfiYO+xsYGezTskSZfR0km/R6UL4KmR1EZWEbaOCyBoe0m7ZY0LacX/WuBCbwT4YbndOC7dzysLt3B0kIiLkbXqhXmEUPa7MSUd8cfbEd+Ug2W7nVdZ7jI19ZBT3tc931l/uxnz7dGAD5K4rlP4Hbg6rlHDlLrl/Bq0PH9ngLGfPu+2TlQ3pGD4HQ1Y47L3h7zSkjkRoDaz0PT6JWRJlFN6zXuJFUZleHdHQpPC1GjHaEZ24NqqXjXOSbVy+JeQelbBnk0mEO8THn06H2Gh//UR4dP3FPidCZmGjHPXGQ+GjeWtLQ3H3zkyJ9jnJtsjstmVlA9GP57+bYuM2OZ4dzMb/uWDj3snh71OT8htOd/a5nNEv7KqMfSlz5xGZc4/Ks+IrmfO+jpIoc+IxuZe/kbns20yJJ8NmB7vvxGobv+tBIiJD5vG76cL+lXF+J3PsSbnXT8qcekpG8Wl5dp1eZuMZmVPOyJx85isbz16w8fs+El8jEXrIaM55HfZUMToNbxFAjZpGMomMyXPy9PxBzkTdSzael1n8wgwbf0z6JQ8/FkvcZ+NP8l0vybn8ebjE/eGRdznHGXmX5cl8eZ7IEb8yl5dlHXB5p0R5DgdNiXKOg6USF0iU+Te4TSCHVxvtjMLpzLBxcvpavTOC050S7Wdy5pL5IdYxZrvVKzFX4hyJGyTaFTrnbonZEqeQCIUSXTz3WuVot1VItNePK0RihkR7Vbgq30LtKUboDlm9nKvfKnaP4RIXSnxb4mkbtSSJvSTKEWhbJdp1AtfTwnYw1wc61plHSA8Rk0SLt954Gvp2su8okbhY4haJcozugMQeEidLXCFxh0TZP9IvMUfiBInLJO6WaO83biRLzGvwbOeGnEtDzqGxSaJdS3BPlLiv/i7iHrua4qYccaNKG6PsaOeNoyRWOjISb/yFjfEZYXUCT1gtdlFY3CbaNSJvIteyyc6QGgt2kumwWzvsXg57gsNe6LDXO2z7zzXCxpQkx9RURkfTjvX7NM2XWCZxdQN9ZCw0tXMkTzbr90lOk1ggcWYDfWSsJMtYST5dv891psSOEosb6DNb4msSDzTQR8ZVSqrEfvX7pMiISJHjStnZQB+Zh5r5JGaHVRa8WUm43XxN2NnOByeH20NfCreH14TbI86F2yO3hdslGeH2ve5we+wQh7033J6Q6LArwu2JvcLt+8rC7fs3hNu/Oxm+N6aWOOwj4fa0kvD7px0Jt8sqwqpo/uCakIoQ8zvLLfbeNXt0uD0nN6wW5XNTwu35ieH2AsNhXwq3H80IeT7G8+hQUZH+sj3OYYd+c1j2HIdd4bAXO+zlIdUQ7IqAw85x2GMc9kKHvcFh14TbjxGH3dxh93LYpQ57WUh9ZNlbHfax8P6VUQ67vcMe6rDLHfZah703fP4q68LtPygh8WLZLoft/pX2/9TWfv155Jdspb69MCvcfnxc+P2Lljvs1Q57rcPe4LC3iMroqv9F28LtJ7wOu4/DXuKwj4T7X9zCYWc47CyHneuw+4TXQIsHOewt4f2fTHXYrR12O4fdxWE7nv9kaH5EPnuyINxelhS+vstvqW+H/DeU+nYfhz3EYU9w2GUOe4HDXuaw1zrszQ57l8OucdjHHHZduP2s4rB9DjvVYbdz2LkOu8BhlzjsKQ673GEvcdhrHPYGh73dYe9z2Icd9kmHfSncXuF22H6H3dxhO+ZjRY7DznfYVl3sRuS3IP1wXpnYc3MIYRmsH5nF1rCPySr+HH+O7FemKC+Qj9QPtQWUuwe4R9C/uudHUrrTiDK6s27G3cZK9oCnxDOOveOZ5alk201mutg+87x5nn1CqGej9XeLtGpfw/9LB3X05YRQT0npDVC+b/ZVmgdaBloN2imorh6lx5AYb+w5SZevUZxL0NAGaUzcuqt0LO7sFfIXSCprgCpBiwMXrlECs0m0OCghKqH5VWqdeAsoV1BxQ+SvTJycOK/JsRA6a1FScoOUnjToKpUmTb9KqyW90iCtE7RBYjgdkhL9mqYKyrxC9t1NuzTt03RB021NLyVrFjm9JxsNke09OTY5W1L+NbKekjzIkkmHLG62tuWyq7S25fqrtE3STtChljvTFoFWtqpstbrlTsjK1sk3Nk9vJyg/fRNoT5tyUEVGdsZAcHbGkJua33TJoozszEBmT1Bx5oTM0rZ+UGa7FaB17TbdfNGm9okdDnUqz+qRdbrLYtCKrlO7bupafWuUpMCtqbdmZi8ALc0+kpPVrUTQydxkQUW5S7q7JflgFQH7CKtP9+Egd/eKHiduD9xeeefGOzf26tJ7R7eTdm9gH7tX3xVWv75r+83ut7Dfiv5a/3JB6/rvFFTd/0j/i5DV+S1At+QfyD80oMuAPaBzBVvQa11h68LW+S0gsywNlF2YVzio8JBFA5WBaYK6DMwDdxlYMLB4YAHa8wZuuivrruy79oFOD5qJfgraRMugAwMLBucM7nX3untSh24cOXlk2cjyicUTN01qP2nQFZxUManivqgpk6bMnlo99fC0pGnZ0/KmFUwrnrZo2upp26ftmXZg2lfTzk13T/dNT5meMX3P9NMPaA/0e2DoA5MfeOmBrWWBsnZli8u2ll18cMODX81InJE/o2RGxYw1D7kfyn1o9cxBM8tmrpm5ZebemRdnGbPaz5o9azNSQ/vZg2aPmz1l9tLZq2Zve1h5uP3DCx5e/fDbD9fNcc3JmlMwZ+WcA48EHil5ZOUje8vN8tTyovLp5TvmKnPz5i6bWz3PmLfuF3KVr14+Css28/ZfIyuPzLt8jewM8gt77xXnjgvfJ3akN5h1rmSeEArPHfNTr5GVHeZnXiM7L1g5NM7VNLXJWeThjt374E3sHGwh8m3cOuTXuhgSe86XfjVnoq+/oOU2kX99vrpruVPO0mzrHpDda3YMuTp7uGrlYtG3o9UurssZhF8fnroTWZv4Ogpv6b5leLLP6ivOiZ4NnA/54nnXzoGrJ4Hlp372l7nfFZbxx8hsf+xKnrf8iLdeDb3uSibEemj2elm5yc4/dn6z19HKiciA1qptu5Idr64oclzSK/OzrTuurXHL9fOz52cjx1m98tG2Ljm75fr6MYE8mBmSURvIs6F5tX5OlZk7VUSTnUXXXsmfVl7HFTx1fl6yhivrk9Z1WVzYOrHYPscE4sxKGoSTqjhx8tXTR54q/rLE4msnkB2V1tkmehdbPXBvcuJkq0VcQS/rur/Ml34lUpOmoy03cbJ1v9DF1WvnaOhJao1FnJpXzs1rJ+dkjM5xToadlOnyfCwVZ6MYPdoHyafj+f3XJd6StBrjCZt9a9asOZ6fHbpjr8yxvROt2bQjpeW25HysB1bTmomkdYELYr01a21CdvWyZAPvKk9YsbrQ5+clHZqfZ5P1BAtbrrdWxdLsSLNwfl6ryrRFNtsnXNoicSqFkHXC2aebOB//P0mcqSFUv4d10oaSPHGvUv07xEn7H5E4i38zXTmxf4mcM2XR1XP8F0ic7L+ZRLXxG8k5O6JGCaH68ydqlxCy4t5e6f+M6nv+9dH9NrLn2apdYki3kn6zc4t8Ha2qx6JuJ60r3UqsSkdYJ/vNtmog2QZCBbXUqprsq+JkGm6Tdc+dG63KStRQfbr3EfWRVUP1yU3udtKqTlDNXKliLFJQ32QVHrIqGMuSlU4XqSuogrKtK6LWwX2FkkTFs0/URugrWhVLJhvorVjVFLJFeWGWqLuqJa0TV8qtqktY6wqzrLwk20Co3Bb232lVaOK+I6JWA4k6bY+o59DXqs6u1Wv913UfLmakyJqLu/bZM9GtRLwPRmyPNL+F8G096Yjly/br2Iv1VjQ0DtLb2RZhtBG+2m7E12IWuZWkkdtAGeROMoDcJP7WcBYZTEaTLmQMqSR5ZCFZS+4jm8kWWFtBT5BdpJosJgdAz5NPyVGyinwNj1U0gSaQfTSJ3kg+pL1ob/Il7UsLyFFaRIeQb+kwOoycpCNoCTlFJ9BJ5Hv6e7qM1NHloABdAUqgK0GJtIqupU3oVvo+bYrv1UzahrVjHWgmy2JZtD27hd1KO7BuLJd2Yj1YD9qZ9WR30i6sN+tNs1l/NoDexgayQTSX3c3uprezYWwY7clK2Ch6B7uX3UvvZGPZJNqLlbKpNJ9NZ/PpXexR9gd6L3ucLaUT2DL2DJ2CL+TX6VT2JvsnLWf/w6rp0+wA+5K+zL5h39I32Sl2mm5kZ9l5uon9yH6iW1iQE/p3zjin/+A699B/8kbcS3dzH/fRvTyWB+gH/DqeQqt5Kr+eHuA38Ja0hrfmN9JPeRvehn7Gb+KZ9DBvx9vTL3gW70yP8q78Fvo1z+bZ9Buew3PocZ7Lc+m3vDfvS0/wAj6InuJFfCQ9xyfwifQyL+XTGOEz+Aym8Zl8JtP5Uv40c/F1fB1z8w18A4vkb/G3mMH/yv/BPHwP/5j5+Rf8W5bC63iQtVZUxWTtFZ/SgmUrXZWurFCZosxnA5UK5S9snLJJ2cKWKv9W3mfPKfuUo2yVckwJsg2qW3Wz3aqhGuzfapTqZXvUD9VP2AfqQfUwO6B+qX7JPlW/Ur9ih9Rj6jfsM/Vb9TT7XD2rnmVfqz+o59kx9Uf1R/at+pP6Ezuh/qyp7DtN10xWp0VpUeyy5tViWFDza0mca9dpbblbu1m7mTfROmi38yStr1bI22j3aHN4e61cm8eHaI9qj/Fh2uPa47xYe0JbzEdqT2lP8VHa09oKPlpbpa3iE7QXtRf5RO2P2h/5JO1V7U1+n7ZRe5tP197VtvFZ2g7tf/gj2r+0j/hc7WPtAF+s1Wg1fIl2SPuMP6V9rR3nT2tntEv8WZ3ojL+s63oyX6s319vx7XonvSv/UM/Ws/kBvZt+O/9Ez9P78EN6f70//1Iv0Av4EX2gPpAf1Yv0YfwrfaRewk/oY/Wx/KQ+Xp/OT+ll+kz+sz5bf1hh+jx9vqLoFfpjiqY/ri9TXPpyfbni1VfoK5RofaX+vOLT1+hrlFj9Vf1vSpz+D/1fSgv9A71aaaPX6meVm/Vz+kWlt35JDyoFruau5sogVwtXmjLYle5qowxxtXO1U4a6OrmylGGuLq6uyghXtitbGenq6cpTSly9XL2Ue119XH2VMa4BrkJlnGuwa7Ay0TXSda8yyXWf637ld64yV5ky1fWQ6yFlmmu2a44y3TXf9ajyoOsxV6Uy0/W463Fltmuxa7HysGup61lljutl1yvKAterrleVCtc61zrlMddZ1/dKpesH1w/KQtcF1wXl8QgSQZVFEUqEoiyO0CPcypMRRkSc8nREfES88mJEQkSSsiYiOSJZecU9wF2kVLmHu4crr7tL3CXKG+4x7rHKm+7x7vHKX9wT3ZOUje7J7snKJvdU91Tlr+4yd5my2T3DPUv5m3u++zXlXfdW907lqPsj90HlpPuQ+6hS5/4xMqBcjmwWuUhNjlwc+YK6MHJj5BZ1ZeT7kWfVlw3d8KvvGa2M7uqn1r86UC8Y443JWoRRakzRGhlTjema1ygzyrQYY4YxV4s1FhgLURouMhZpNxiLjSVaC2OpsUprZaw2VmvtjTXGa1oH48/GBi3beMv4m9bDeMd4R7vTeNd4V+tl/N3YqfU2dhv7tEJjv7FfG2JUGwe0e4wa4zNtuPG5cVobbXxvXNCmGheNS9oM47KHaLM8zMO0OR7Fo2mPeFwejzbPE+WJ1So9fo9fe9IT8CRqSzxJnlTtaU9zT3NtpWeWZ5b2vOdhz1xtlWeB5w/aHz1PeJ7UXvU85VmqrfM843lGW+951vOs9rrnOc8L2hueFz0va2+ZzDS1t02vGaf9y0wwm2jvm+fNi9o+otGtwRreO/g2LySN+CBi8NLgGb6FdMC5szW4F9ZRoZ3ghcEjhEKeJwzyX3xQcC+JJK8GL5HtwUt0OImmI0g+LSbxdCS5DudGYzqeNEbPduh5K58QfJdQ+PmSKOhroG9j9DXQ1y38HUWvkwikoSQR7c3QXoj2JmhvBl/Xw9d1uPtZjOcQiYT2BsbbmM/AOB4KvoXxZvEvg0/zIySDHyWZ/GvSin8T/IAft/7WGLzvhfcviAKN8UGXf8JolsDTP8h00ghnZhQ4i7QkncElwQ/IKPBo8O+CX5MpwXPk9+Cp4Gng6eAHiEHKgvvIg+AZ4IfAM8GP4P5y8FzwPPB88ALwo+AK8GPgSvBfSQ5O6BxyAfplcJC0pARMwf1IZ9ofnA8eAC4AjyV96Q7SFG88lg8kXfjdxMWHgSeQBXwWSeIPk2T+CElSng/uU1aBXwDvIy2VD8H7wR+Bq8Efgw+APwHXgGvBB8GfkpZqVPAD9XBwn/otMdQT0L8Dnw7u01SSp7UEtiUttfbACcEPtIngSeD7wL8Pfq1NBWNuNMyNhrnRysCYG+3PpLO2HvwW+DzprKeRpnor8DDSUh8OLgbfDy4FPwCeDX4YjDnSF4GfAD8PfoHk6K8CvwOfBJ8GnwGfBZ8HYw5dI8El4FHg35OmEYR0jvCRpiJ2v0Jcu4X2DVb9PIlB1L6JqH0T0dYc0XYbom0Oom0Aoq0Y0XYHoi0bvdcgXtL5wOBCflewDBF0M+LmKXgYzrcEX+JfIs6OEs6/Qgx+Q+4WcXYEvQ6Sxld3xVDSJsR/T/ifCv/d4b8DehfB9xL4fgt3tYXvpfD9LPy9DX8DiQkvp+DlFLxEwcsN8DIJXtrASxt4aQUvN2CUh+CpBTyVwEsmPLwi3vRf0P5M/PDxLny8Cx8t6LDgZvhpAz/D4Kcd/AyAn1vp2OD78NWGLgtuwp1/gz8F/qZiZKPhMxojewTeHuNfBM9hdLv4MezWb8iN/LjcsY3hNQ1ex8JrB3jtDq+p8NgC3j7EnR9i5/XGWxaSSJlhfkYmsTLLM+SR4AlSDp4LngeeD14AfhRcAX4MXAneFbxA3gPvBv8bvAf8Pngv+APwPvCH4P3gj8AHwJ8Gg+QQ+DPwYfDn4C/AXwbfI0fAR8Fng7Xke+zzc+AfwHXg8+ALyG4/ov0i+CfwJfDP4MsYSzB4ghIwFVnxS16ECBsSPMWHAocHTyn7gieUD8H7wR+Bq8Efgw+APwHXgGvBB8Gfgo8FLyjfgI+DvwWfAH8HPgk+BT4NPgM+C/4efA6MsSiXwcHge6o3+J6eHbygdwfnge8E9wl+rRcAC8FFaL8bPBQ8LHhCHw4uBo9H2/3AUvAU6NPA08EPwJ4BnA18GDwP+nww1kF/HLgI+AT4SehLwE+Bl4Kfhv/ncX019DXQX4X+Z+h/A2ONdKyRjjXSsUZ6bTCoHwRjjXSskY410g/jns/BX4CxRvo3wVr9OPhbvMsJ8HfBvfpJ8Cm0nYbvM+Cz4HOwsXZ6HfA8bKyRayS4BDwK68XwVeQTJxcnCxG7hYhh6/RSYf0JVh6sOxDl2/n7pBWhuFpHchGZtYjMWkRmLSKzFpFZi8isRWTWIjJrEZm1iMxa9P4akXYBkXYBkXYBkXYBkXYBkXYBUXQCEVOHiKlDxNQhYurwvK14Xi2/h6h8BLgYETQy+CWiphZRU4uoqUXU1CJqahE1tYiaWkRNLaKmFlFTi6ipRdTUYiXrsJJ1WMk6rGItVrEWK1eHVavFqtVitf6Xd3uPj7Ou9j3+ZKZN02TCpRQKFIRwqYBc5K6AXLUCSr1tFXFvd7YKGgREsFx0F1qCsBGwIoJFRHBT5KIUJRZFbCjQ0pKSkrRJmialSZsOSaaTNEnzTKYt+NvvmR056Dnndc4/5/zxcTIzz2Wt73et9fs9Y8lxKsepTq50cqOT6nmq56mep3qe6nmqZqmapWiOojmK5qjYScUcFTup2EnFzmLHdkSTaHmOTi6z9i6x9i5ONllrm61CVpuivhkZNstwU1Hff/duX+8OoO8trrAuutg6WWWdrLJOVlknq6yTVdbJKutklXWyyjpZZZ2scqdTrJWHWSsP07MterZFz7bo2U16NtazsZ6N9WysZ2Pr6RQ9m9azaT2b1rNpPcvv6BPWzZP06SZ92qVPN+nTruRXoxnJr+GK6Fbr6EHW0YOso9OtnVXWziprZ5W1s8raWWXtrLJ2Vlk7q6ydVdbOKmtnlbWzSi+m9WJaL6b1Yovei/Vci55r0XNpa1yVNa7K+lZlfauyrlXplbS1rcradpheSVvfqtR/i/pvUf8t6r9F/W9S/5vUf6z+Y+vfFOvfFPWfVvMtaj5W82lrYJX1r8r6V2X9qyrUexih9Yj92Y/CDzhwvnm+yTyfzYnzOfGYb+9S7R9LrrGTagl/TbZGXy261+noDke1WzF/FG7y7qvOXePctT4927k/cu4K517o3BbnfSkqHe+jLzqy1ZEtjrywuL8q1MzjxStd6vuzfL/a922+P92V7vDt71zpXFdqcKUPFo9fX9wnbiz+by4qL9k9OqjkElyBK/FtXI3v4Bp8Fz+00u9ZsjSqdJdbXP0G13mtuDd6JJqWfCE6OfkS/zdHh1q1P2eXOMXKvb9d4qHJPpOhXwQZn22NTraeXxNecsY+9pSHFNZ0518RXWAFu0TNfzm6IPmV4u7rgmg3kU0X2XSRTRfZdJFNF9l0kU0X2XSRTRfZdGdOdeZVzpzqzKuKZ1Y6s9KZlc6sdGalMyudWenMSmdWOrPSmTOcebwzZzjz+OKZKWemnJlyZsqZKWemnJlyZsqZKWemxs88afzMk2Ty5egofx1V1LiuuEcYo1YnhT+Nz+Cz+Bz+KSq3dyu3dyu3dyu3dyu3nyq3c18a7eWcT4/vNJYVPdoUtZQcETaXHImj8AEcjWNwLI7DB3E8TsCJOAkn4xScig/hwzgNp+MMfARn4iycjXNwLs7DR/ExzMTHcT4uwIX4BD6JizALn8LP8SB+gV/iYTyCX+E/8SgW4jH8Go/jCTyJp/Ab/BZPYxGewe/wezyLOvwBi+3Wlnp9KXSUvIxXsAzL8arPV4TWkpV4DQ1YhdfDWyWNWI037CAu8bTyldA0YbmdxKtYgZV4DQ1YhdfRGFonrMYboXXinmHzxKnYG/tgGvbFfmFz6Xw8ABqU/jK8VfrrsK30cTyBJ/EU/uDzV7zabZYu93dTaC1d6/h2f+fC5kkH4n04CAejKmybdAgOxWE4HDNC66T344jQMelIqIVJamES3yed4P2Jvjs9vDXpDK+fDdvKEmFzWRITMBGlmIQyTEY5KpBCJXbD7tgD8i2bgr0g7zJ5l8m7TN5l8i6Td9n+mI4DIP4y8ZeJv0z8ZVU4BIfiMByOGWI6IbxVdiI+HFrLTsPpPjsbM/Fx/Kvjvur1Mt99w3HfRA0ux2zfzcFNuBlzMd/njzr+ccc/ETrKnvT+KYz4LA6bJ5dArpP3Cq2T5TF57/DW5IPV0PdLqFNCnRLqlFCnhDol1CmhTokzSqhTQp0SypTsEXpL9sQU7IWp2Bv7YBr2xX7Y3571fTgIB6MKh+BQHIbDMQPvxxGeso/EUfgAjsYxOBbH4YM4HifgRJyEk3EKTsWH8GGchtNxBj6CM3EWzsY5OBfn4aP4GGbi4zgfF+BCfAKfxEWYhU/h02FLyWfwWXwO/4TPi/sL+CIuxpcwJwyU3ISbMRfzcAtqcSt+gNtwO/4DnjdKfhzGSu7BT3Avfor7cD9+hp+bkQ/iF/glHsYj+BX+E49iIR7Dr2EFLHkCT+Ip/Aa/xdNYBLO2xKwt+T2eRR3+gKVm+Ut4Ga9gGZZjBVbiNTRgFf5xinw+/JspfbF1YHeT/wzrwO6m/xmmdvMEE2+CiTfBxJtg4k0w8SaYeBNMvAkm3gQTb4KJN8HEm2DiTVjkGeUZ/A6/x7Oowx+wGH8KAxOex5/xAv6CJajHi1iKl/AyXsEyNEapCavxRpSauGdUPnFqVDFxb+yDadgX+0UVpXeFgdK7Q7Z0vr/v9/eC0Fv6gDWJB8Vp9ojv5FL6mO/EXCrmUjGXmtKlz4Qtpb/Ds76rQ2HKPef4P/rsed//GS94/xeIs1Scxem3wvsG363y+rrPGrEab6ApSpWudW/PdqWe7UrbfLYujBUnZYfYPM+V9jrXM0tp1t9216V216Xb4Jml1DNLqWeW0u0YRYyc3MbClkm7hYFJu2MP7Il9w9ik/bA/puMAHBiVT3ofDsLBmBGlJr0fR+BIHO+zE7yeCKvsJKvrf0/dKFWWiCrKkpiAiSjFJJRhMspRgRQqsRt2xx7YE1OwF6ZG5WV7Yx9Mw77YD/tjOg6AOMvEWSbOMnGWVeEQHIrDcDjeHwbKPuAZ7Wgcg2O9t1MoO97ff5vEJ/n7FJyKD+HD8jgNn/T3RfCcW/Yp5306LCv7DD6LL4Wxsn8V52WO+8cp7Xm3zPNu2fWYI4abcDPmOv4O99b/xal9v9cFrvsAfo4H8bjrPYG/TfHf+IyHZbFzd4WxyVHYMrnEXqksZCfTc3K51z19vleUKk52K9TkaT7bF/vBPJ58QOF3yUKnj++r5ujQ1uIe7eV3P7/K5zcWf0cp7LcGo4mJ88M/Jy8Kr9idlhd+2/LdQHR04oMhkzgJp+IsnB+aExeEVYlP4CK78s+HjXYXG+wuNpRfHFaVX4LbQ6b8P3AHfog7cRfuhme58vn4Me7BT3Avfor7cD9+hgV4AD/Hg/gFHsIv8TAewa/wn3gUC0Mm9YGQiZIizSUu9kx8jWfo08Ufiz9OnBbS4o8T53m9I2xK/NCzy5ejY8yvYxy5qvxzIV3+T/gC/hlfC5vKL8cVuApX47u4PcRyi+UWyy2WWyy3WG6x3GK5xXKL5RbLLZZbLLdYbrHcYrnFcovlFsstllsst1husdxiucVyi+UWyy2WWyy3uOLCsKniE/gkLsIsfAqfxmfCJrnHPDw1rOPQ64mij2Fl8ZfDg+T+hLyfSHw5LEp8HVfijrCUBksLz99yf0LuT8j9Cbk/Ifelcl8q96VyXyr3pXJfWn5DWFR+I76PefhBWCSupeJaKq6l4loqrqXiWiqupeJaGp3DgRoO1IithwM14htTQaMqaFScXSJpF0l78vN/HU1e/NfY6lLJmeOsLpXcOW78GX+Z6hpVXaOiaxddu+jaRdcuunbRtXOmhjM1nKnhTA1najhTw5kaztRwpoYzNZyp4UwNZ2o4U8OZGs7UcKaGMzWcqeFMDWdqOFPDmRrO1HCmhjM1nKnhTA1najhTQ4F2CrRToJ0C7RRop0A7Bdop0M6Zmug8KlRToZoXr1Ghmh+vJc6PDpT9LNnPGv+99c7x5+mjqLAPFU6kwj5UOHH8V+Iv8eo1Xr3Gq9d49Ro1ZlFjFjVmUWMWNWZRYxY1qqlRTY1qalRTo5oa1dSopkY1NaqpUU2NampUU6OaGtXUqKZGNTWqqVFNjWpqVFOjmhrV1KimRjU1qqlRTY1qalRTo5oa1dSYRY1Z1JhFjVnUmEWNWdSYRY1Z1KiOJqmFURmnZHyPjK+T8RQZ3iTD66P9aLSMPsto00abNjpMocEU394r/2XyXyb/ZfJfJv82+bfJv03+bfJvk3+bONrE0SaONnG0iaNNHG3iaBNHm16pCY//w7wbjY5JfMaMuxg15tzlZty3cAVcW8Td7866OWbGzWFVxfdDpuLfMQc34WbMxTzcglrcih/gNpiNFWZjhdlYYTZWmI0VZmOF2VhhNlaYjRVmY4W5WGEuVpiLFeZihblYYS5WmIsV5uJuk1GOCjOvMNkzxdhjPZ7W42k9nqZb4Tl9hm/X6N203k3r3bTeTevdtNhjscdij8Ueiz0Weyz2WOyx2GOxx2KPxR6LPRZ7LPZY7LHYY7HHYo/FHos9Fnss9ljssdhjscdij8Ueiz0Weyz2WOyx2Asz6+KwntqvU/ild2dWIaOu6AQZ1fl+s+/HuPE2N97mxtuO7XJsmWMrdEq5TI/VKeWyPXb8N6BXOfQ2h96WZZ0s62RZJ8s6WdbJsk6WdbKsk2WdLOtkWSfLOlnWybJOlnWyrJNlnSzrZFknyzpZ1smyTpZ1sqyTZZ0s62RZJ8s6WdbJsk6WdbKsk2VddLJManmzkjcrEzXRAfxZKYOv6YAdOiAnk1tlMm38l5lphV9mZPKzwq9ZvFvJu5W8W8m7lbxbKataWdXKqlZWtbKqlVWtrGplVSurWlnVyqpWVrWyqpVVraxqZVUrq1pZ1cqqVla1sqqVVa2samVVK6taWdXKqlZWtbKqlVWtrGplVSurWn18cbGPPySLN8b/P6eZor5X1M9GFfJtlG+jXBvltbec9vbNffJplE+jfBrl0yifxqg0MZuv14UdievDW4lb1cXdYTBxX+GXdp/uTNwaclGJ/90RHemIXOIGFXEjbg2tiduissTtzr4r9CXujyoTC8KuxANhV4X9bYX9bcWBeB8OwsGowiH4umMuxWX4Br6JGlyOb+EKXImr8G1cje/gGlyL72I2rsP1uAE34nthVzGfnSLtScwJvXLZkvhp2JbwpBddkrhGtV+L2T69QZY34ubQlJiLebgFt0Z7J24LzyTmO+7HoTtxD36Ce7EgPC+/5ysS4fWKJCZgIkoxCWWYjHJUIIVK7IbdsQf2xBTshanYG/tgGvbFftgf08MgDQdpOEjDQRoO0nCQhoM0HKw4LTRVnI4z8BGcibNwNs7BuTgPH8XHMBMfx/m4AF+Xx6W4DN/AN1GDy/EtXIErcRW+javxHVyDa/FdzMZ1uB434EZ8LzwfTVA5G6m4loqbEveHYbV0axhRJ2PRp7mQ50KeAzs5UKiwTVacnBUn54gclfNUzlthclaYnBUmZ4XJWWFyVpgc9fPUz1M/T/089fPUz1M/T/089fPUz1M/T/089fPUz1M/T/089fPUz1M/T/089fPUz1M/T/089fPU30n9ndTfSf2d1N9J/Z3U30n9nVa5nFUuZ5XLWeVyVrmcVS5nlctZ5XLUzVM3T908dfPUzVM3T908dfPUzVM3T908dfPUzVM3T908dfPUzVM3T908dfPUzVM3T928nrtOdRd6cQ5Nb1Ldt0a7UbuH2pupvS26msb1NK5X6X2OXEnrHlr3JL7n/ZzQ76wRlZ9V+VmVn1X5WT68w4d6PtTzYTjxo7BCB6zTAet0wDodsE4vvW42vMqjVh618qieR/U8qudRPY/qeVTPo3oe1fOonkf1PKrnUT2P6nlUz6N6HtXzqJ5H9Tyq51E9j+p5VM+jeh7V86ieR/U8qudRPY/qeVTPo3oe9fCoh0c9POrhUQ+PenjUw6MeHZLVIVkdktUhWR2S1SFZHZLVIVkdktUhWR2S1SFZHZLVIVkdktUhWR7X87iex/U8rudxPY/reVzP43oet/K4lcetPG7lcSuPW3ncyuNWHrfyuJXHrTxu5XErj1t53MrjVh638riVx608buVxK49bedwa1XAwzcE0B7fz+2UubuNcB+e2cm6Qc4OcG+TcIP9T/H+We1nuZRN3+uxuTs8PT3Owj4N9HOzjYB8HBzg4rE6WcLGLi11czHIxy8UsF7NczHIxy8U0F9NcTHMxzcU0F9NcTHMxzcU0F9NcTHMxzcU0F9NcTHMxzcU0F9NcTHMxzcU0F9NcTHMxzcU0lwa5NMilQS4NcmmQS4NcGuTSIJcGuTTIpUEuDXJpkEuDXBrk0iCXslzKcinLpSyXslzKcinLpSyXurjUxaUuLnVxqYtLXVzq4lIXl7q41MWlLi51camLS11c6uJSF5e6uNTFpS4udXGpi0tdXOqKPsilHJdyxW78bxdGuTDMhWEO5DhQeG4apu4wdYepO0zdYeoOUzdH3Rx1c9TNUTdH3Rx1c9TNUTdH3Rx1c9TNUTdH3Rx1c9TNUTdH3Rx1c9TNUTdH3Rx1c9TNUTdHnWHqDFNnmDrD1BmmzjB1hqkzHB1lMrxtMryt+7PW8/LEnbK4SxbF6P19PxZY7x+wbk+3qzsAB+J9OAgHowqH4OuOuRSX4Rv4JuwgaT1G6zFaj9F6jNZjtB6j9Ritx2g9RusxWo/ReozWY7Qeo/UYrcdoPRZ9k9Z9tO4TcVbEWV2Q0QUZXZDRBZmi/n/rALr/T5VvB58o/LLxv6/2Pn708aOPH3386ONHHz/6+NHHjz5+9PGjjx99/OjjRx8/+vjRx48+fvTxo48fffzo40cfP/r40cePPgpmKZilYJaCWQpmKZilYJaCWd2Q0Q0Z3ZDRDRndkNENGd2Q0Q0Z3ZDRDRndkNENGd2Q0Q0Z3ZDRDZn/i27IcCjDoQyHMhzKcCjDoQyHMhzKcCjDoQyHMhzKcCjDoQyHMhzKcCjDoQyHMhzKcCjDoUxxjR8q/r+Qp/Aqy6usaZM1bdK0z9K+oHGWxlkaZ2mcpXGWxlkaZ2mcpXGWxlkaZ2mcpXGWxlkaZ2mcpXGWxlkaZ2mcpXGWxlkaZ2mcpXEhx6wcs3LMyjErx6wcs3LMyjErx6wcs3LMyjErx6wcs3LMyjFbUaiF2bgO10O9yTErx2y0h1kc/33PqLQ7i52eM1Nz/6cesXe/zh7Vk6luS+m2Ut22SaftrdPKo1nvTpTZVuM5uMlz+a3udUcYUtlDjs7rzSGr86izjqVwjsKj79k1DanuIdU9pLqHVPeQ6h76/zRthlTfkOobUn1Dqm9I9Q2pviHVN/T/dFdUeFrJU2rFu88to1Fy/LM8l3ZFn6dtA20b+DfAvwHaFp5sOjgxkb699O0tzr/53v/UM8J9dkoLfPZA6KVrL1176dpL11669tK1l64NdG2gawNdG+jaQNcGujbQtYGuDXRtoGsDXRvo2kDXBro20LWBrg10baBrA10b6NpA1wa6NtC1ga4NampATQ2oqQE1NaCmBtTUgJoaUFMDdO+ley/de+neS/deuvfSvZfuvXTvpXsv3Xvp3kv3Xrr30r2X7r1076V7L9176d5L916699K9l+69FYU8Z+M6XI8bcCO+F3qLGu8Y74R8tFdicbRP4iU7zpfV5SthbmJFeCKx3T4jDvMTO0JT0uRMHuPp9bjwTPKkkH73Xyt/Idoj+cUoNf5vCvtSnWE1xxa67iK8rANeCS2JZSp9OVa450qvq0JnYrUn3RZ3a/Xahr5ocqJfp8b2uDk7oTHsDMPJKHQnJ6EM+3n6Py70JI8P25Mn4EScHHLJ08PmVHXIpi4NjalvwYxIfdvr1aEz9R2YCanve53j9SbYQ6dqYcVM3Q1dmZrv+3t9Zvalfub9AvzCNRaGHaknXf8Z/C5sT/0ez/qszvvnvcop1eSzZqzBOu/b0envDeh23EDoTm3HWOiunBoGK/fGPvB0WOnpsPIwn18eGivt6SvFVXl7GK28O2yvvA8P4NEwGF04rmoHn/JUXUfVAaoOUPVtqm6hajtV11F1O1XXUXUdNXPUHKHmCCVHKDlCyREq7qBiTMWYijEFByjYQcF1FFxHwQ4KrqNgOwXbKdhBwfZ/ULCDggMUHKDgAAXbKdhBwQ4KDlBwgILrqDdAvQHqxdSLKTdAsZhiMcViSsWUiik1QKkRSo1QaoRSI5QaodQIpUYoNUKpEUqtG1eqg1IDlIopFVMqptRIdEjiqfD9xOLwO0rVq8FdFPo1VbYmNoZvqLPZif7wsOr+QmLUTntHOFOdvZpMhmXJ0vCjZCpcpdpbk1NDVfKg6LLk4eG7Kv+Q5LHhXKo9qvpnqrkHk2eGm5LnhC+P/+usruQXwyPJi8PlyZqwpPDvl2T1ZzPpJavEK1gR3nTHt/ix0R3T7tDvqkOuuNkVt+ml0/XSRzwRPsWxl0Kzswr98nqxR/qi9zl7jTNfc+YWsaXFVuEKLcV+OCm0OPOl8Jqz3nLWc87Yyxmb3K+r2L+eqos9fJA+Pcb748JGZ3WLcll0oMraXjxzmcpajpUqZpWzV6uqFrvIVq9tYYvq2KI6tqiMLSpjk8rYpCo2qYrtqmK7qtiuIvIqIq8i8ipik0rIq4S8StjCuS2c2861wuTvi3YTT6nIF7rfU+77J7k+j5VhJ1030DOduiHkXH/E9UdcfyT1gPe/DDnXGYkmOGtU5Nc4Y3Oh7u2EnzJLFsvlldDk085EszlS0HBjyNCt2XXXue666GJ3ne/ouXqqp1gtfwpz3H2OM4cpsZMSO12hhxKBEqPjfTVKidFEe1jkinUqqSmRVT3lmBouTe7DjWnYF4eGa5OH4fCwNXkEn4/EMdyje/Is359T/LfLx4vmeL3XQ91R6o7qvR4Kj1I4UDjovR4qzKF0oMR8SsynxHz910PtndTeSe2d1A76r0f/9VB9J9V3UmsO5UcpNif1tEm0CC+Ea1PLvL6ORqzGenTgTd91ed3kGpvDtZVReLVyYlhUWYpJqPJ+Bi43oeaF+Xqwh5s7K+8Pmyt/hgX4OR4Ki6IKFTmiGjdz+kTT5x3T5x3T5x2un6rT39Hp7+j0d3T1O9EB/Ch4maP9EO2HnFVqRg2bUcNm1LDcR+U+KvdReQ/Je0jeQ3IdkuuQ+TJsvgybLcNmy7DZMqy+h82WYbGOinPIrBg2K4bNiuGScnecpwLu5/5S7v+E+z9JLOFoPV4KKxLLrIrLsSI8qgp2Jdb4vEVttYfZifXhL4kOdGID3sTGcHuiy+tm9LjmFq9p9KIvmqda6hIZf29FVuUNeB3EtnBtYgjD/h7B9lBjNjWZ3O0md7sO/oIZtTqxy3dv452wJPFXr8EqXIIECvNrgmqb6O9Sc6o8zE1W+DsVrizOs9297oE9MQVTw+mq9XzVer5qPd/aelty/3B9crrvDsBB0ZeSVV4PwaFm3mE4PPxzcob378cR3h+Jo/x9NI4J55mR/2ayPM21eVybx7V5qv0i8/Lu5CmOORUfCrckP+z1NJwebk6e4fUjODP8i644P3m2v88J1+iML4z/i9mndcj1yUuifZNfQU14w3z9baomNKUux9Vhly7ZpUN+okN2qZJ5qmSeKpmXmuf7W/AfuAM/xF3RPqm78SPMd/x9PrsfP/N+AR5wnQe9/6XXh8OVqV/hUSwMt6UeC9dbzW5OPeX9b/BbPB1m6qqZVribVeA8FTjP/uA2q9zNqT+EW1KL8ZzjnvfZC477i7+XoN7ny7xf4fOVrtvgs1V43WeNWI0m12rGGqx1/DrHtmO97zpgeqvuebp2Zmpj+IvOnWkVvVn3nq97Z6Z6fKYGU2ow9RbUYaoP/WFpSh2m1GEqCzWY2oYhDJsAI8j5Ox+WpHZgp7/fgZpLqTlTYW6luqtUd5XJsKRygteJYbYpMduUmF1Z5v1k06McarAyFZZWVmI3f++OPXy+J6ZgL59PDe1W+nYrfXvlNNfb1zH7YX9MxwE40LEH+f5gVLn/IT4zYU2juZU3hyYdPq/y9mifSl5X8rqS15V34i7c7bt7w/U6f55JNdOkmmlSzTQF5plWMysfdJ2HxP2waz7q+gu9fwy/xuPh2qjKlLjGlPh9cWV+ubieLzcJenX8fJ39Lzp7sa59Rte+Zs2NdeyLOrZHVzbrxgZduEQXrtV1H9NZX9FJz+iYu3XMch3Tq0vu0yVrdUG96n9M9X9K9S9V/YX/UuEUFf9G9FXz6kmR/NaKtSbxjFVqsZnwJ589j5etc6/4blloMz3brFxLzawBK9dia+CAaPutXoutXovNr4UiX25O9Yt8tVm0TNTt5s1m82azyHvN6xaRbzOzW8zsFvNkmeifNgueNgueFuUuUX62sOexeq1J/ZtJe2lYbAVbbAVbYwVbrDcH9OaAFWyN/nxSfw7ozyf155P680kr2JrUrc77Ae7EXaHNVG8z1dv05oDVbI3VbI0J32bCt+nNJ61mi/Xmk3rpaXX/tDp/Wk33W09arCct6rbfmtKiVvvV6TJ1uVBdLlSXC9Viv1rbrNY2q7XNaqtfbfWrq83qarO6WmYtalFTy6xwi9XUk1a4NVaONvWxUH30q4/NdpBL1EE9XrJDWxH+ROktVodmtXCuab7BNN+gHlZRtZuqTVRtUhN/NLk3UnalSb2Bsispu1JtbFUbb5nGa03jtabxWjVytBoZM2U7TNkOtbJenaRN1kaTtdFkbVQzrabpelO03eRcayI2m4jNVN9C9S3U3mICNpuAzSZgswnYbAI2U3aLqdds6jWbdM0mWrsp1mGKdZhi7aZYoynWaIK1m2DrTbD1ptV606rDdOownTpMpw7TqdF0ajSdGk2n9aZSh6nUMT6VGk2jDtOo3TRay52VJssGk2UDl1ZyaKXpstF02WiCbDQtNpgWG0yGDSbDBpNhA6eaONXEqSZTYaMJsIFTTZxq0vkbOLVS5zfr+GYd36zjm3V8s45v1vGNur1Rt3fo9g7d3qHbG3V7h27fwMUmXb5Bl2/Q5Rt0+QbPxH12x4V99Unh7ehkXVZ4zvqWjlqgoxboqJf5PFfX7ODrr/lax9c63ZLhaw9fF/F0EU8X6Yi8LsjzYi4v5uqAPD/mqvi8Kl+gyheo8gW8mKvK86o8r8oXqPIFqnkHvRbRaZFq3kGrRbTqoVWPqt5Brx6VvIM+dfSpo08dfXpU8w7VvINGdTSqo88i1ZtXvQtU7g4518nxlXC3ih2TwRLvtos9Dk+pzY3R/jLb7l1aZv0y65fZkKwazYGMzBpl1ii67aJrFF2j6LaLrlFU20W0XUT9IuoXUb9ototmu2j6RdMvmkZRFJ5l+6OD3Cl2p/XulHantDv10bDwjNrkbqPu1uRuTe4Wu1uTuzW5W+xuTbQYocWIu8a0GHHn2J3T7px25zQtRtw9dvfY3dPunnb3JncvPB+mPSNsNC+3hzdk/YY7j7rjBrPseRN3nYlbeD74Y3HiljpqdPwZKjP+3zAdl7w4OqGoXLdvNvimu/iu8Gy3q6jjxPGzRrzLun6b6w/bDbfb02YpvFOe5ZSIMNGetBSTUOX9DDwUhlxjY9GZZkd3WkUKMY5GM1xjuW/+RL8R1/qzI9762/N9cb2JzJdJKEN5+LOsPiObr9FxhI4b6biRjoXn6430GxHDn8WwXAzLxbCcln//3D0dB7zn+bvK8YfpxRleH3L8wz4rPHOXyHkwmia+YTENi2mrmLaO/4KzTfT94tomrm3i2CaObWLY5t7D7j3s3sPuu9V9t7rvVvfb6n5b3Wub+wy7x9boMFd/Qfavynzle6ZsC52fdqdccaqWF/+lyA/GvVwv+5rCv+j52/SR8Up3fcFdX3DXF/6Xk6cwaaocV5gyM7wWJsZDjv3HiTG5uIputw/Y4dm6lK+fD1eP/+uON9z5S8V/MXqCuDc68o9ca/Rc0Cb+F6n0zHsmSGFlaKfUQ7wurLtvUeshaj0knxdd9U5XW8TFRnu3Ngo+RMGHONlIxYd0RLuOaOdoo/xe1BXtctwox41y3MjVRnuwNnuwNvuttn+YHO1cbuRy47uTo8o1DgsPyf1FeW/kcmNxekyneifVO4u/RsSmyI7wiqgHKN8p4gERF37DGaB2J7U7RTkgwgEqd1K5k8qdVO6kcieVOync6U4DFO6kbid1O6nbSd1OXRWbujutfqpHhcXhxShhFdxpp7QjStqNrPBu2LveqMq7Qc8wefuTQfuTQSvlmJVyzEo5Nv4bYcaeZcg+Pm/Fy1jpMla6MSvdmP163mqXsUfP21cM2pPnrW5jVrcxq9uYfXfevjtvZRuzso3Zdwxa2TL2HoNWmjErzZjVZSyabC3fIZJfWLsHrdmFfd1b7jrIwUc5+Ghxqky22o8mp5okx4SsDPodlU2eHO1uwnjmiY53n/ZogutscZ3Cb675QgYyThV/QcgUjqfEVP10csj7vPCrrCOctzna27tC9qOyH5X9aDHzS+wVvhJa35P5qMxHi1k3eW3GGnRiA2Qns1GZjcpsNDrY3VbTN6bvOvque++TuXtn3SVN29gd0u6Qfvdp/NniL35p2sa0XUfb+O+e0Nd53178FbD4pE7bde6epu269z6tRyUyj6PDkpX+mhoetlsatFsatFsaFNNzYnqOWrEdU78dU+HXtQE6bbUzGuTA2xz4DQd+4zlyiufIwr+OLOx6+u16+sX1nN1Nv91Nv91Nv91Nv91Mv91Mv3ies5Ppt4sZFNNzdhT9dhT9dhT9dhP90STR/N6dt7tj3h23u9sOd1vlbquiQ327iW69YlwvxvWOzI3/hv0/HDrZzu50dX0OHRaGXhrupOHOd1161md13j/v9QU7rRVe3+vaOu/b8Tf33nRMt+M3h/V/5+I+VOumWjfVuinVTalucXeN/ybVTZFuinRTo5sa3dTopkY3Nbqp0U2Jbkp0U6GbCt1U6KZCd7S/PN+U45tyfFOO2+TYIse1clwrx7V2qoWqWyuftXaVGbvKjFzetLMsVOBauayVy1o7yYw81spjrTzelMObclgrh7VyWFv8rygPTf5rdGi0IPp6eCC6FJfh2vBI9L1wT/R9/Dvm4Cb0hAXRFqQx4pgd4cfRTuzC23gn/LjkiNBUciSOwgdwNI7BsTgOH8TxOAEn4iScjFNwKj6ED+M0nI4z8BGcibNwNs7BuTgPH8XHMBMfx/m4ABfiE/gkLsIsfAo10bSSpeHFkpfCH0texitYhuVYEZaUrMRraMCqsGTCw+GeCY/gV2j0fjXegFwn/BUh/HjiHuGBiVPCgol22RPtsifaZU+chn2xH7rDPROzjhnAULin9EicgivCA6VX4ip8G7PDI6XXge6l80NTaVNYUuqJZ9KMsGTS+3FE+OOkI3ECTvT+jP+i7kzAoyrPvn+fJfNMzpxJQhIChH136aLWTyutprV0sSpKFbWgiILlhYKCLAohIFpXlEUUEBBEEKOoUNBWFq1K1WqVdYBhAGVPGMIJS1gT5nl/5zD4gkBRX6/vu77k+s0585xnO8+5n/993yNmoKOeoDpBZz1ajYcZsJH3m2Az8MzUDv2CSkIl16p4f0CPDpt6WdgCGzIgBESKYSLFcCY4EAEXopAF2ZADtSAX8uAy/U64DdzO+Z84PsDxZY6l+u/h/XpZJn1l5hEf3ya5eonkAeontaEA6kBrOAfOhfPgfLgaroFroR1cB9dDe/gD3AA3wR+hm56M5U7GcidjuUOlv35eBsBAuA/uh8G6FGsuxZpLseZSrLnUfkIvsUfAk/AUjIRRMBrGwNMwFp6BZ2EcTKXdCzBNl/LUJ2es0Usy1sMG+BI2Ur6dYxlUcH0X7KbsqF4SCoGCTHCgLtSDltAKWIcQ64B1lIYu5ngJx59x/C3cBp3hdugCvfRkLGcyljMZy5mM5QzFcoaGuN8Q94sFlYbv8ddGxuhl8jSMhWfgWRgHM+FlKIVX4FX4FP4Nn8HnsASWwjJYDitgJcRgFcRhi56LJsxFE+aiCZ/IPqiC/XAADsJhPRudmI1OzEYnZqMTs+1yvczeAUnYCRVAdmJ7UAm7YQ/sBTIWuwr8dinQejb7ba5CCxR7X7HXFXtdsc9VO/2JupFjB+hInU7QWc9Wf+Z9fxgA98H9MAQegUeB/aZYI8UaKdZIsUbsp9nqRY4zOM7muBBYB8U6KNZBsQ7stbnstbnstbnstbnstU/Ya5+onVABlbStopz1YN/NNn4kttSSDAiBgjBkggMRcCEKWdBGCuRn0E0XY+PF2HgxNj4AG++JjffExnti4z2x8Z4yiB4G697YeW/svDd23hs77y0PSbb8BR6GR+BReAwehydgBDwJ86WRLIAtejBPdDBPdDBP9BmeaClPtJQnWsoTLeWJlor/LZOHdQlPtYSnWsJTLeGplhgT9SpjEkyGKTAVXoBp8CJMhxnwEsyEl6EUXoFXYRa8Bq/DGzAb5sBfYS7Mgzf1KvMCyTYvlALzYo5F8DtdbF6l+5lXQ3ve99DDzZ66l/ln6KV7EbNdbXXS/YnbrrZu59hff2oN0MutZZJhLZd8ayVR7yqy8tXiWFt0qbWVWGSbnGNt51jm/20gjjsl1+4vtewBMBDug/thEAyGYhgCJTAUhsFU3Ru96I1e9LZXSLa9EmKwClbDGojDWkjAOlgPG4D1xNpLsPYStKY4o5ZehdUPRmN6Z+wUB30pRl+K0ZfeGdVSK2QBthXKhTxoDufq3qHzOF4IP5ECNKV36FLOe+li9KMY/ShGP4rRjwHoxwD0oyf60TOELYUGA7YUek6vCk0M/g/6VaohNILG0AQuhHa6lJ02mJ02mJ1WovpKtroXHoDhMAbGUz6V4zRpxG4qUbM430j9TbAZsDl2zjPsnGfYOaXsnFK1SzKVB5XUr+I69scOKlEHJTucr1eFa0MB1IG6UA8KoT40AOYaZq5h5hpmruGm0AyaQwtoCV3pqxvcBSW8HwrD9KpMQ69ybtH9nI5Qons5w4B947BvHPaNw75x2DcO+8Z5CkbCKBgN3K/zNIyFZ+BZGAfjYQI8BxNhEkyG52EKsD7OCzANXoTpMEOyI8UwBEpgKAwD1jbC2kYeBPZ3hP0dYX9H2N8R5hlhnhHmGWGeEeYZYZ4R5hlhnhHmGWGeEeYYYY4R5hhhjhHmGGGOEeYYYY7u+ZKdlQkORNAH01rKTtmCGvln/t8eqWPeh5q5qJmLmrmomYua+d9d5aJFLmrmBr9RyIJcnSACSBABJIgAEkQACSKABBFAggggQQSQIAJIEAEkUL48lC+PSCBJJJAkEkgSCSSJBJJEAkkigSSRQJJIIEkkkCQSSKKS3VHJ7qhkd/kv7UkP6Al/hl7QG+6Ge6AP9IV7oZ/ugaL2QVH7oKh9UNQ+KGof1LQtatoWNW2LmrZFTduipg5q6qCmDmrqoKYOauqgpg5q6qCmDmrq4HfX43fX43fX43fX43fX43fX43fXi/95Rym8Aq/CfKmH8tbD/3r4Xw//6+F/Pfyvh//18L8e/tfD/3r4Xw//6+F/Pfyvh1r3Ra37otZ9pYxcthx2QBJ2QgXsAg8qYTfsgb16PMo+E2WfibLPRNlnouwzUfVBqPogVH0Qqj4IVR9ETB8npo8T08eJ6ePE9HFi+jgxfZyYPk5MHyemjxPTx4np48T0cWL6ODF9nJg+TkwfJ6aPE9PHienjxPRxYvo4MX2cmD5OTB8npo8T08eJ6ePE9HFi+jgxfZyYPk5MHyemjxPTx4np48T0cWL6ODF9nJg+blwvBUZ7+APcADfCRB3DE8XwRDE8UQxPFMMTxfBEMTxRDE8UwxPF8EQxPFEMTxTDE8XwRDE8UQxPFMMTxfBEMTxRDE8UwxPF8EQxPFEMTxTDE8XIJeaRSywil1hELrGIXGIRucQicol55BLzyCXmkUvMI5eYZ3wmjvE5LIGl4uDFXLyYixdzzTb+/6PK8Vccf6eH4c3a4c3aBd6sk64wu0EPvNsJXs3srSvwbJfj2Xri2S7Hs/UkFx9l9dOvWwv1B9a7kmW9j/dbSj6/nDx9pdTByyXxcpa1hvz+mKfLwNO1CP7GZJLynXie/uLi5Vy8nIuXc/FyLl7Oxcu5eDkXL+fi5Vy8nIuXc4mkk0TSSSLpJJF0kkg6SSSdJJJOEkkniaSTRNJJIukkkXSSSDppj9eePQGeg4kwCSbD8zAFpuq2eM62eM625F3zyLvmkXfNw4s6eFEHL+rgRR28qIMXdfCiDl7UwYs6eFEHL+rgRR3iTI840yPO9IgzPeJMjzjTI870iDM94kyPONMjzvSIMz3iTM/eryvsA3AQDsFhOALVUAPsCTzzIDzzIDxzdzxzDM/cl/wvTv4XJ/+Lk//Fyf/i5H9xsoQEWUKCLCFJlpDAg7fN2Ko9MoUEmUICT94dT949gzllMCc8els8ukvWkMhI8V5rLyRggAmWuHh6l4wiQUaRIKNIkFEk8Pwunt8ls0iQWSRCDajbEJpT1pL3rQCtJctIEBm0JTJwQxdwHRskOsgj60gQIbQlQnDJPBJkHgkyjwSZR4LMI0HmkSBy6E7k0J3IoTuRQ/cQOhpCR0PoaKgf9IcBugfRRA+iiT5EE32IItqSz8aJJGJEErHQlOAvMhWE5sCbwV9lKgh9yHGZnkeUEQvxLMl746GDUkDEESPiiBFxxIg4YuTC88iF55ELLyIXXkQEEiMfXkQ+PE/9TBxy4nnkBR55gUde4JEXeOQF64lSZpIXeOQFHtFKX6KVvupWXaFug856EPmBp3pxzp5Sd8M90Af60ue9wH2RO6wnd/DIHTxyB48IxyHCccghPHIITz1B/RHBXxX0iHoc8gmPfMIjn/DIJzyioEFEQQ5RUD3yCo9IaBCRkENu4ZFbeOQWHrmFR27hkVt4REh9iZD6EiH1JULqq7bS9zbYDmi9QuuJmsYTNY0nappJ1DSTaGkQ0VJfoqWZREuDiJYccv04uX6cXD9Orh8n14+T68fJ9ePk+nFy/Ti5fpxcP06uHyfXj5Prx8n14+T6cXL9OLl+nKgrRtQVI+qKEXXFiLpiRF0xoq4YUVeMqCtG1BUj6ooRdcWIumJEXTGirhhRV4yoK0bUFQtfxJx+ApfpeeE2cDt9d+V9N7gL/kRZd47/BT2gJ9yjk0RoMSK0GBFaLPwAbUZR/jJ1S/Wi8Cucvwr7dTxTpIAILpbJvWXm6XmZtcVxbtBbnBvhJrhFtyOya+fcyvn9usIZBMVwPNIbzvnD8Ki4RHwuEZ9LxOcS8blEfC4Rn0vE5xLxuUR8LhGfS8TnEvG5RHwuEZ9LxOcS8blEfC4Rn0vE5xLxuUR8LhGfS8TnEvG5RHwuEZ9LxOcS8blEfO7/w4jPPSniqy0j9c+NznKt0UVuMO6Q+4075ddGV/m50U1uNn8nt5g95Carg77SukX/0lqgZ1rv6mutzfoTYsN8C4WztusxVrn+2Noh9a0k+dZOfUAay8jUYpmlV8g/9Qp6vyL912Avoffz6f18ev+F0UMfwLduYxSyObKyDroNo1zOKAOsRXqh9Q68m6qw3tNv4ePWWB/oD63FeiSj/4WRD1nbdBmjt2H0UYxuMfoURl8sYWuJnmEtY05k8tYK3dVaqedbMVqt1uvwihuIU2fpj5jbR9T8I75zCbXHU7vYWpFKUXsata/Cj75Fi/toMTH4244/ZrYlePOGeO+rzGvx5D10D/NuscxXiZMX6zvNj/UE8wv5P+Z+PHK+ZFs/1i9Zi8TFS/+YO/grI31MPmpZK8g1V+k38dIZ9J7ijmJ46uK0p7bSOanFnZVZO7irJOU79S7jZrH1fMmAECgIQyY4EAEXopAF2Xqh5EAbvU5+Bg/pOfIXeBgegUfhMXgcnoAR8CSMZA3n6+WyQC83TL3OsMCGDAiBgjBkggMRiEIO1IJcyIN8qA0FUAfqQj1oBI2hCTSFZtAcWkBLaAWt4Xq9wWgPf4Ab4EYogaEwDB6A4fAgPAR/gYfhEXgUHoPReq0xBp6GsfAMPAvjYLxea16g55gXQxG012+bj+uE+YROYOUdeCoV2FkNNjaHJ1GBjV2HjdVYB1Ll1kF2xCGtrMOpg9aR1DqrWoesmlSZdVQXWSnKta5nZ6TK7ZC+0lZa2eHUQTsztc52dMiOpMpsVxfZUcqzqNdfz7cHwEC4D+6HQTAYimEIlMBQGAYv6nX2dJgBL8FMeBlK4RV4FWbBa/A6vAGzYQ78FebCPHgT3oK39QZ7PiyAhbAI3oF34R/wHrwPH8Bi+Ces0HPslRCDVbAa1kAc1kIC1sF62KDnZFTr+SELsN9Qhl4YyuWYB83hPLgQfqLXhS7l+KTeEBoHE3jPfYZe4pz7CXE/Ie4nxP2EZlM2B+bCPPg7zKd8ASyERcDcQ8w99Cnn/4bPOP8clsBSWA1r9NpQgmtlsBP2wF7YB1WwHw7qDSoLsiEHakFdvVbVg0KoDw3gYr1OXQp99Rx1LzwAw2EMTIVpermaxfGgnhNurTeEz9frwj/ieAHHdnAd53/Ua8Ndud4N7oLHKZ9A+XMwESbBLKjWazNFb8isxZH9lcm+yiyEBnqd01UnnJ7QC+6GPtAf2O8O+91hvzvsd4f97rDfnadgJIyC0cB8nadhLDwDz8I4GA8T4DmYCJNgMjwPU4B7dF6AafAiTIcZek7k9zoRuRqugWuhHVwH10N7KNZvR4ZACQyFYfAADIcH4SH4CzwMj8Cj8Bg8Dk/ACHgSnoKRMApGw9MwFp6BZ2EcjIcJ8Jx+2z1fz8nK1G9nORDRb4uNr5iD8ietVfIjdLlGnpXBepIUwxAogaFwWCfInxPkzwny5wT5c4L82SN/9sifPfJnj/zZI3/2yJ898meP/Nkjf/bInz3yZ4/82SN/9sifPfJnj/zZI3/2yJ898meP/Nkjf/bInz3yZ4/82SN/9sifPfJnj/zZI3/2yJ898meP/Nkjf/bInz3yZ4/82SN/9sifPfJnz/8rXMZHzPNjXUHOWkHOWkHOWkHOWkEeOoE8dAJ550ryzpXknSvNGbo8+PeRx/7V0SbzoN6EN4vjxSZZS6Ux/nIjHuxJcrhJ5HCTyOEmkcNVkMNVkMP5+VOC/ClB/pQgZ/LImTxyJo+cySNn8siZPHKkSeRBk8hTJpGTTCKHmEQO4ZEjVJAbeOQBFeQBFeo8nVDnB3+Ps4LY34/lE8TZCWLrBLFwghg4QfzrEf96xL8e8a9H/OsR/3rEvx7xr0f86xH/esS/HvGvR/zrEf96xL8e8a9H/OsR/3rEqxXEqxXEqx4xakV4AH0/wPnL/l9N0x7xpke8WZGZz366RU8gxpxATLmSmHKlW6LL3aEwTJdH8/WmaG0ogMbQBIZTPl1vEhOv8hp+nTjOWiCXWQvlNusfcrH1ntRlff9ufUAktVhaW0ukHWvdjrw+g4jhCnL7XCsmF7HuXxI5NCLO2UzpFjmPeKEd8UIrq1x+Q78fpD/LPp+R3tezqD82GHMO13oSVSyULMo+4d1S/+9Snvq3dI0eUnT6v6fLfC5kd/ycUa/BH17FHI6VXIi3PEjplXjLhXjLZPA3ineKwchbpAHvrgg+U6xD3ZbMwf8ugu3yQ2r8iHdLpYg7zOdaI+7V/6tvt+jPrf7Shvl/YF9OvGZS8i/e/Zva+CZiwkrebeBdL4ny7gjv/iWtxZYiyYAQKAhDJjgQAReikMWIHaS21ZEYrzP04p4WEge+R5z5vl5u95ciewAMhPvgfhgEg6EYhkAJDIVhUkQuX0TOXkTOXkSOXkSOXkROXkT+XUTuXUS+XRR8/0WU6LaKkTZwF9utf/Ak/W8zeV//jeh2J/fenzVZwLzeoRZ3y71HJddYJs2N5XIBK9OZdfiV1ZFanaST1Tn4G3OdrF76ff+vElkD9WZrnFxijZdLGcfjSbckknnDvkwustvIBaxWJ2lEi0aMczFPs780YaRd/vjBSNH095p8bN1K69uo34XjHRz7Y2HL9Fpi5Ari48OB/ayWMK0sCfnfhELtAmoWUDOTmh41KqVAtqCixFCyjbjpXkbyn+lAvZK4u4Knno3iLg/6i/EEV9GKPv2IOCNX15DD15DD15Aj15Aj15Aj15Aj15D71jBmB13u/x9P9HgeO0UFva3SVVLnpDFvRbO6QG/urT+R+FK9h9lVch8eFlebsffT6kPGjTDuobOOG2Hczf53s9BbLuNm0ON+eqygxyp6zKS3Pem7qGGfdaDU/3uBtxLJd4F7udJf6tEykxmHaHmAljW0jDKXlL9qtKxmV2yR38pW2AaHsewjUA01cBR16EDmcou+wLoVtbhNbre6cLyDY29yn3uZz0A93RqCXYyTn2IPP2fFlzFim+DZrNDPB6PF9Gr2XD5ZzpG0jVxk07edAi2tM3Llt6ojdILO0lqNhxmwkfebYDMwT1VJWRXHA8zN//uPlczsMPd8mJmdx30fZmbncd+F3LevGGHu1+Fey6w1khNY3SJafECLrbQopMVWWhTS4qfUzmHO2wPLW6GrmfchWm4NWsWC7yXoyHidsOTOHG/nOABV3CzNULxKNMZBGeuhjLXQu0XBN+r4zy9BLYuSSp5DB85uCfaG/9fwCqx+WNV9+LvtzLucEXdoL7C3jbTbSjuH3sP0bHIlIfWkm94jd8GfoB9PvwPPsyPz6gwDsEy/9hasZDsrXcacdpBfJullJ37ycqmTkaP3ZFTALr0n1At6w91wDwyAgfSblf5OoDg9J+g5YfXjrgag+Zt5jluwoq3soOBu0eFy1miH/izIxeswv2rmV838qtN373+m/AW9fEEvJr2cxxxz6OUgvaToxf9L82F62OR/HxHzq2Z+1cyvmvlVM79q5lfN/Krlh9JNrpG74E8wWNpKMQyBEhgqbRkxmxF/gGZlsMLt0awMVrk9mvUyKz2XlX4HO/0YO70KO73GelWP4Z7+jYdodWw2+C1/NuVEE5dJG2y0jX25jttTpa39AkyTthk5ck3GRo4VHHfBbmkbOhcugV5yTag33A33gD+/MLM6kLYbM203ZvCs/BXcocuCTyPeYN4z07UK0rUKmLdHzYuCTyB26JVYRq/UYnLBXeR+G8n1dpHbbbTPSW3D1nqlPEorKam0z9FX0Guv1BfWAda5mtY1aMNRvcTO0AfJCw/ZEV1FzSXU/E3Q9n2uLqdkOSVO0NazjjBeNatyVK8ix0zZmRKibYpaq8glU9QsQpd6pbYzSoostYqZVViHOVYzag2WeaxlDaOmyE6rmHGFHeboMIsI5cd6quEO9mN1vchrD4pBL5X0kqIXTQ/lwdghMWhdSesUrTUty9NzONdfp9Ro5rCZ1s1pvY7WB6wj7Fh/9jXY8VEsLkWcoPVR5rKZ3prT2zp6O2Bn6lhwVxGesys5ZMpJej7KnF73vag26fEQ89hgpcSk1SHG3mBHOT9HN/VrpJZSo4zx/JVKUKOMPv1VStDHblb3a8+Lp59+TrQ+y/MJ6gbPhbpneR7c4//yOaCn33L9UZnved25xzOsd3DltOssWXa+ZNq1mV9dcexCeqtPmwbEDA05b8S1xlxrxrUWvG/JtVZca40/sO0CRqjP1SYcW/JMXDufd+QQdh3GL2SE+ozk99WI8saUN6W8BeUtKacfnoJf2x+5frqGP5LfVy7zMrm6zS6gpA7UlUbML5ea2+izEfMzmZ9Jq212E643hWaUt6BOS8pacd6ae8+ilw3M1b9D067HXAslI92L33oD8/fv0LSbc60F1461NrnffKiN7RUw57r0W8i91OfpN2Cshv59cb0x15twvRnXW1DWkuutuN6a++MueDa16beA0jpQV69mDilWZ7PdgGfZkHtuRJ3G1GnC9abQjDrNqdOCOq2o0xrP5j8nN1jXupLPPPwVO8Q88plHhHm4wdo2432LYAUPMYd85hDxn4pYwb0Xptf52Oz91bOC+z7WojI9a1Oyv6tNsGs91u9rdsFu/7FEv61t0OoCUWeyD662lLzvy0bo7Qfc9Xe0E1qfI7X+t7ZCL5f5d/T92AtP4tPgOX4nmwl8Q/Tb2k2g6udYB1I7UNIuKE4DVO1a60iqElX7tVWTSqI+3VC1JqhaGzsjtQNF7YIaNUDVrrUzU5Wo2q/tSCqJMnVD1Zqgam3s/NQBVuSHrMi5rMi5dl3e19M/YEWymNWFrEorVqWl3YjyxtRrQp2m0Iz3zanXgnotqdeKeq2xmkwyN5ecq8jyv9dnseQR7eYT6bYgqvgpscKHRHvZwXcLLTA6y8+MLvIb4w4ZYdzJsSuZewc92bqJXORmvYDIY3LwTXXn/odaHwa1/O9AWhOUHn8356t3Jpn8u8Z7ek5w5n+73WYxHRRWxL2y1vVyjjSR7+lHL9Bb9Ha5QJdzvu60NVJ6kp7Nb6V+gnfX6060+ZCz8vT1cp3kdVP63YFT2vtXk7qK3/+5pk4zzj545qzzLYZ3Tir5ghEK/FHO+INvpN5a4l4WkLW+lZxZ9JaT53j8bk4z5md6o/b05/SwmbstO9scv8FPmF7HpXvfqiv0h3pb+t3eU0bfCRv0l5oMSv9eMlm786TpCddTZxtM7+fZVdHD/8yc9cemjl19Sb8kLnz1DL/Wehds0wn6+IK3GeyEVnIFZ42Dq//US/Rq7AfbIbI6/fiv6hf1FI6PQZH+kR6g+3N2wjoev3vOKk5pndIf6TIs6CP9b+bBc/BX7+RWX9X97CxLIUQSIlnB2ch0iUffnx+3zROtIl1SxZ3vZe3X6X0ocjZFF/MUvhpd7wye0M7jtU9pX6F3sMe84yvu567Bcf2Jdc4273S9xEnv+p707l/frA9+Lgzqpy1Nr+H5hfWas4x88IS9faH89Cy1X9Ol/o7WH33jOZ3cfrtvHb7NnnJl1TdozZ3pR4Kzv319P+s7v0F7bES/GejWF/5z+7Y/+pVATV9hXU/9CX+jHir1gkA1v6FdnKaHvd/cqk7TOq2wesV3aj0neF3jK8f3/vOTbzD+9mO+TFdjR/u+9Qjuf7zaGv4QjHLc42069pu+3vg0bc7ltzG/5540y5np49Jjv/+h/YWnbZ9eXaxkP+q0/0wTRj936T0o2MZgT/lWfSgoHxtcbqTf0+/qmO/Rz9C+5oTzEVIP/b9ZrvN3SLpsA75h4ala/FWb6hPOR+N5suUq6cL5G+myLaze8jN71ePjBxb9HO0zUZ9700rul8/Vs8XSfz9j+69bYQbRU3fKn0pf/5f+mPX/NP3uVP0+csL5E7SuJ9eKHwkVpcve0fPp4fUzjr/19OUpnpivj7q9bqe76evStaee0v5BVOwl/bpepmMnFJtymzwkT3I2Ukb5/6pZXsNy35C/Ex0ulHflInmP30tksayWS2WtbJOrpcww5BajC7FpP7O9+Qfpb3YyO8lAs5t5l9xn9jR7yyAzbsalxFxnbpGhZrlZLo+aSXOnPGZWmrvlCfOAeVCeNKvNahlpaktklGValoyxlBWRsVZjq7FMsG61bpPnrC7WHTLJ/pv9N3neXmFrmZKRm5Ern4XeCr0ln4feCb0rS0LrQutlWUiHtKxQv1K/lZXq96qdxNX1qr1sUDeqG+VLdZO6WTaqjup22ay6qm5SrnqoHpJUf1b3y041WA2Vw+oBNVxS6hE1whA1So0xQmqsmmBkqolqopGtJqvJRo6aoqYatdR0NcPIU7PUQqO2Wqw+MVqp5Wqv8UNVpbRxXdgKZxidwuGwY3QOu+Es445wrXCe0S1cO1zH6B4uDDcweoYbhZsYvcPNwy2NPuErwkVGv3DX8F3GgPCj4ceM+8MjwiOMweE3wm8Yxc5gZ7AxxBniDDNKIsWR0cbwyNLIXmO8m+PWNRa6r7mvGf90t7i7jQ/dfe4hY6V7xK0x1rqpqBjro2bUNL6M2tGQsTEajkaNLdGcaIGxI1o3WtfYHS2MNjD2RBtFWxhV0VbRVkZ1dFJ0klETfT46zTganR592TSzMrMipsqqnVXHdLIOZR0x/U991gQWYwQWY2Ix48goxstEbHqSzKDkJX6VzJRX8VKzsKdQYE8h7GkRu+4drMoJrMrBqj6h/FOJSURW8WtiZauJqtfKeqKrDbKZPbYFm2sqZbKHHb+X32ayTw5KcznEbws5LEelpaSwyFqBRTYMLNIKLNINLNLFIntJjtkbu3QDu8zFLjdIgfmF+YXkmV+am6SOudncLHXNLdhrg8Be6wf2Wjew19qBvRYG9ppnalOT2xH+k92ZlskrP1Ib21Wc8/ClnpWJHecHdlwfO75VWlm3Yc2tseYunN+BTbcObLohNr1BDPsLext57na7TEJ2ue2RKVfaVdLI3m8fINs+aNdIY/so1t8ysP6mgfU3DKy/YWD9DQPrb4j1/0ryVVvVViLq1+rXYqvfsB8y2A+/p+RqdTUl16hrRKlr1bUSVu3YJ83ZJ9fTtj27JTPYLRF2y00SVTezZ7LYM52kqbpV3SbZqrPqLC3V7eyiWsEuqhXsIoNd9Gda9VJ9qNNX3UtJP9VPTNVfDWCUgWogPd/HTouw04ppNUQNobxElVB/KHsvGuw9g733KHUeU48z7hNqBFdHqVGUjFajaTVGjaHOWDWOkvFqPDOZoCZQwv4Ux9+f9DNFTaHVVDWV8ulqOv3MUDOoOUvNouQ19QZtZ6vZrMMc9SYr85aazzwXqAWsyUK1kFktVh8y24/UJ/S5XGGZapXCJtUalaC3depLaaI2qi2syVZVzlg7VFKaqZ2qgpXcpTxpoSpVJSPuVnuZc5WqouZ+tZ+rB9QByg+qg8zkkDpM/0fUEXquVtX0XKNqJE8dVUcZPaVStNVK+9+AF86Qhr6a8Iqa8Iqa8Iqa8Iqa8Iqa8Iqa8Iqa8IqaiIGaPMrrY+HHxPQ1RWxfU8TwNUVcNGUIryXOMMnxlUUslGW1uJE1kbhEI2sjeyXHVxmxfJWReqjMFslzt7pbJd/d5m6TqLvd3S4FbplbxtVyt1zqujvcHdLATbq7OPdcj/qVbiV1dru7qbPP3cd5lbtfCt0D7gHqHHQPUeeIe4Sr1W6NRNyUq6Vu1E+t83z94tWO2rxmREOSi4qFpU40M+pI7WgkGqGmG41KA3Qtj5L8aIEU+uomBahbIa/1ow2o0yjaWPKjTaJN6KdptBnnzaPNqd8i2oJztI9ytI+S56NTGGVq9AVaTYtOo+fp0Rn0+VL0Zantq6FYvhpKjq+GkoNi/TWthqP5tQI1zEANJ3A+CR20Ah0MoYKvcf6GvM3rfMHaUMP3OP8ADbTkQ3TQQgdXoZir0VdL4vyGAx20Ah2sHehgQaCDTqCDdQIdrBvoYL1ABwsDHXSN7GPf13zsG5uPfV/zsW9pPvY9zf43NaOS7cUMVDITlezGq6+SkUAlMwOVzAo0Md+sMCukVqCDuYEO5plHzaOSHShgjmVbtuSifWHOHcuRWlZHq6M0sDoF/9bA176GgfY1tjpbnSm/Pfj3B74ONgx0sLF1p9XV/w7ztA6WiYUCVkkY7asRJ1C9wkD1CtQv1C/Yn79Uv2T3XqmuFCvQuLD6LRpno3FXc+6rmxWoWyhQt7rqOnUdJb66WeoGdQOvN6oO1PQ1zg7UrSBQNydQt0LUrYu46k51J69dVVfq36Xu4rW76s6rr3ThQOmctNL1V/0pGYDShQKNC6tBahBtB6vB1D+udMM4P6ZxD6qHOPeVLhwonRUonaOeVE/S6ik1khJf9cKB6rlp1XtaPU25r33hQPsKA9WzAtWz1fOonpVWvRfUC5xPU9NQtBfVi9T3ddAKdLDwBB20Ah0Mo4MLOD+mfYvU+5wvVst49bUvjPYlOPdVr3agegWB6jmB6tUJVK9uoHr1AtUrDFTPVfvUPlr52lcQaF/dQPsK09pXg8ZZgca5YSNsiHVMrZz7nUGS6RQ7xbyWOCUScYahTRFnuDOckoedhyUz0Ckz8nTkOTEDxcl3d6E1Oe4ed6/kBvqSEyhLPspykPND7mHJRlNS7HNfU2pFragl2aiJkqxAR3IDHclHQXI59xUkL1onWoc6vnbkRxtGG1LeOK0dTenB147cQDtyAu2oFWhHLtrxPH1OjU6l1fTodOrPQDVyA9Uwxbxot//J66Xbf3WJ/F5uOVOc///Hjy7XO3zS7zaeLu/yP+cJPuv7tn1v9T/hCjLv94L3646PGbwuS2efFX7+GeSiCb1Zl538ic7Zxz3+CZ3u8+1n+P3+6KvJPP3jGXPvU1qUk2l//N0/l/mqn4qvv9N7gtd0ObliFSu7WXvw1Sd7J2Si+Se0TlArLv7nHnU4S3/CeDy7/r/043w1mxPHdeWPQdnO0326oJOnfjan9+pNei1XTvmvEN/15/in5Ce/8/dP2qpP+LyAuVtfnVec6SnrL0/9VPP7+jn9f8E5a6sZelpwrAk+Df+Xj//5kH7lv5m7GjiZyv3/nOfMeebM7DOzWG+787Kzs7Mzs2tta62ltSu0JIQrqSuV63YlSZIkSZKEJCSkTUISJVeS5FL9JcmVkOR6T5QkSajk/L/Pb2a3FeX11j37eb7zzO88bzNzzu/5fs9zzm+Rez9epuzIUmfw99aHZfZz6mc3HaO7fnmvroJZWyuUeIyuB6lr5dsptxujqeih4t/v2f6+dNV615nLnfuGI61Cu9YR6zjSj+pal/XzSeV+b13qf2z7g8/5s9is0guo3O407e1iURyD/gto9fe3KCPfqvwp+dTTbvANZ72GeOFzxa/aO2lUFc+9s6w/31pqzYuvD1S1nrWWkvUzNbtXnL3Piz9sgm/cQfxhL3ET8mZqTrJ24HVOvNQBWm9bhfQu/vaefOWaPFkyK7s2uxxzwfvWR0ilsLa01lsfkH1DjEXQivZfz32kp4z8y5Pe0Rxq/bOCpYc13brdGqGu8lt9yq0NYVukzrtTVx2ZWnM9dS10n/UWPsvmi3emlh0Pah6DByvjhe+z+PpsxTHAL5evjag1ljO0/O+LNcbz3fAtueh1rFpvPmVvX2v5SWVjr1sxu32mjpDz6O9jddQT36LvSeUwv+2If2tA61ZrDf3eR5l+mjnMxXJPafMAzoOv46tLOjxH2arT0djeC5/fflmHPnm9soylKO5F8/Zu/B04hXtuJ+55mrMdZ/NF9l2n237lz9afsv/4ry1x+52nt7NzWUc/583qdo4VYvdYDLceptdvyAO8qhJys6yFsRztK+NntN6JX+qN8xjdfGsRPOZr8XfLrdlM3R/0usojwXPCiy2Hlyhjwd/A+34Q9xOx9TP3KW2+Z71mLYu3WVW9i9tP8g6Wde6jpXo4S61Py9+VaZedKlemK2NMnDza++r4iN0jEj9/DpFHvsFqR++WMbWa1xvpHuTGWJMw190Tb6XCvS34Bt60BpzHaP9m3W9Ns25H7h2c1dOsW8g/PIbZaBq+52VWqdUdc+s3ag2QPtlia641NdZzfNZIsd75VZt7rY1QlbEzt155Ls47rR9i6ewZ80ltH6bzvfyuoJNnKZqny5UvMd8ddN9DxTsuck6+Y+WP2k5exaU7mL4+80joE51y/9UfsZ2sZNW3imP4uzP5T/p1LprSPZetIv/A2aBU1id4/Y2V7vKS+y58vNYz1kBrqDWR8h/ieH9O3SkTn4difPF7awHS0gvrh1rKjd3JckFtfGbtwUxI8yN+0z04Dss5d+xXtw6Ccxw8HQM8577Og3NXqP1B7FfFWJQf/Hf83fb4+RMf9Z9zPp9us7pZ/7CWWAsZp3f3W/3grbvEGIH1unUM70ZZd1qXWunwo/nWPdatF9BXjD8GLmi8cZ8U07Tl9xs+d/Lei7lZMy5CG+ro3Rjz6uC3p/z6tH+Xte6XWfjP3TCa/+Cco2ueOIaVUixXKjGmi73vIf3Gvap/9Ibxjq545oJfLf4zx/PbG862voo7xe50te4CO9qAsy+2bxnhf6w3rOutEcg9bm2J2c6zr/cufLzn2OPhivd5/e9u5Rz30IXfXXm6e90v5hZjh+Dfn2PWuwhXLM50j/Lv1j3LI8p6ha7tf3X+PVXYki9KK2e1gQtdMHO1xl6MkZyhj7inA7u94OvyF+lXOlMvn4HZ/pfPlIu3gfUcvmjfTJULGMfFON//wPWI8zkawXt2xWrGn+wouy6yhtYZ1vxu5V7xsvPOvd8/ejufZyBOaeM3V0N+pw5drVdXimJKOHZFp3wt2Pl7+piu7Saz25k4936p/nk85WXtpbnjl2fJyq7Jna22S2BXnHuvf+pW/XwrnvvKE1N3Nah16XJlb71J+DX88xlXI/7XNvD+73/7mYkK5Y7998dydtvZecjzndVP+6zUGfuiOwh+eXaQVizKjyznaSuVlVXXqrzsepxzf8J2MnePeQ2opzP4WVqJ+ROu91nfXsS2drL4FeXTPnGUSU85qRX0D0+z90xtq+eodpbVLMvRFf6dcUtZnw2pr1+Nq8K7R35ps2ws6nmtU0alnsqqo1Zpzke1W6XWTGtx+XNg8ZxiBPFrmh+Wj6POKeOdee79nVT/PO4UstbRqsSq8vd0DxD4pjjrlb6zeHrvN/o+7bPJZ6izh65aqZmcfAG9W45zL+YZnL/HL2lGSWSNzu55zdPUP5/7H9ar5y0pHYm9J4xfNf997xD/LN6T7zfC8fWt9RGlUlYDnPTL+GrSjtg5Tcdaj3Mf6Rk+R2yFrYJat7pY91gvWFMobkD5PT1WK2v+Oba8/I9hzGqMv92PdeJ0q8qxFcVf2b498yrO+W50j0zcM1uHwCcOgR9tsjb/4oms/bCpNeMGVkd6/yqOgI3WDda76r21zBpvrVBXzGnfEye1vbXMfk4jamvdbj1otYy/oxyOwFsoP9OabvXBcVAKtrYYM68qsdB6zVoQn7XV1fnqLJfWnPtbPckWux9xCnj1M+r3UFESyu8COulakPVD2dP85zTep6wXodUmx9+tob5Lyc+voe9Arb7Osw5bb1OB2FP78TsM4kdxvXPv9c/a/itPY5/ay84yjxVbd/6ztvNZp8Iv/TWrcNWhPELC2cw9SUzdv3M15b0sH9ozQHU/B+v4nGYTD6trfYwzVP1ttbZZl+J8uYVJKzavx3Uqzs6YpqoRfz8/vlLBWfkT02R/6Xc+B91bYQ3APBe/Amk1sW5CamV1Y0lWbA4ui6FxP1Izq6F1jRV/ssFaaW2huyXUGbsPc9LOuH6txaI0c9aiUr9/deP043rOmg58sfz9YqXlTrqzokM8cz1rzxqwPIoTk0F7Kn5254l1VsKJozRTLrFus15Vc5g1yHpI5dDqyJO6jd0Ddtt5jLendQc+/x30xkSuJ/nNh2im/gi/5d4TsSfpX6eoIGUbfbPWXfE2zkLjnbbvL89c5pQ6++mOAMUT6Giio3k53ttot/xdvqNqJbIijJ6z9ahRG+8L2WUsizXBXy5rhWO7DuvIroW1E+uGkt3ZEHalxrVq7GbNr9Vm/bXW2lVsuNZW68BGap20G9gY7VbtVjZe66n1Yk9qd2sj2SRtlDaRzdUma5PZYq1UK2VvalO0KWyJ9qI2m/1Le1v7kC3jubwOW8PzeQFbywt5IVvPL+OXsQ38cl7CPuZX8lbsE96H38U28/78XraFj+FPsG18Bp/BdvEX+Fz2GV/IX2df8Tf4G+xrvoQvZQf4cv4u+5a/z99n3/F/8zXsMF/LP2JH+Hq+nh3jG/lG9oMudRf7Ua+kV2HH9ap6VWbp1fUUjelpelAz9JAe0ux6RM/UTL2Onqcl6AV6gebSC/WGmlsv1htplfTGemOtil6il2hJeif9eq2qfqN+k1ZdPSun1bT1tT2ipdhG2l7Tcmyv25ZqnWz/tn2odTWchlP7hyENqXUzKhmVtVuMqkaydqux3vhUu8PYYuzU+hmfGZ9pA409xh7tfuML40ttkPGVcVAbbBwyDmnDjO+Nn7RHjJ+FoY0WduHWJopKopL2rKgiqmlTRU3h12aINFFXmyPqiXraUlFfXKEtE23FNdpacYMYpn0iRohHuSYeF49zmxgrxnFDPCme5HYxUZRyU0wV07lbPC+e51XEHPEqTxILxRLuFcvEOzxdrBDv8Yh4X2zimWKz2MwvFdvEdl4o9oqveJH4VhznTezMzvlVdrs9wNvZw/Z83sN+qb2Y36uej+ODTG5y/oApTDsfbCaYCXyImWhW4g+ZVc2q/GGzppnMh5k+08eHm2lmkI8ww2aYP2pGzSw+yswxL+GPm3XMOnysmW/m83HmpWYhf8IsMov5k2ZjswmfaLYwW/KnzNZma15qtjHb8mfMq81r+LPmX82/8mlmN/MWPt28w7yTP2/2NfvyWeYAcwB/0bzfvJ/PNgebQ/gcc4Q5gs81R5mj+Cvm4+YYPs8cZ47j880J5tP8VfMFcxZ/w5xjzuFvmq+aS/kS8y1zPV9pbjQ/4VvMT83/8G3mVnMv32l+aX7H95vfm9/zo+Yx8xg/ZloOjf/gsDls/LjD7nDynx3SUUPXHMkOv+5yBBwBPckRdET1qo5ajhzd48hz5OmpjnqOenrAUd/RUE9zFDua6mFHiaNEz3Y0d7TQaztaOlrpuY6rHG31PMe1juv0eo5ejj56fWfAGdKLnFc7O+lNnF2cXfQrnY84X9JbOt9yrtR7Oz92btHvdW5zfq4/6PwhIUUfkdAh4e/6HPXUnv5mwsKEpfr/SbtM1FfLWrKZ/rG8XnbXD8rbZG/9hOwj+9pssp/sb7PLAXKAzSkHyodtCXK4HG2rJsfIMTavHCfH23xygpxqC8hpcpqtlpwh59iy5StygS1fvi7ftBXKf8l/2S6Ty+QyW2P5tlxpayJXy3W2K+UGucHWTm6Um2x/kZvldlsHuVPusnVyPeB6wNbZ9aDrYdsNruGux2xdXWNdT9i6u550TbDd5nrK9ZTtdjd3m7Zebul22+52V3FXtfV3e9w+233uo+6jtkGJLFGzPcC4tgtezw3Fl8gqMY1Vxp/OqmAetrGamLsNzOoZsIfxZ2cRzIImy4aXdMAfNmQS/lBF4m5EMcqVx3STx0yEx+yIWtfirzL85g1o8Ub2d9aY3Qwf2gQ+tA+Yw134a8r6sv6sGrsXf9XZADYIPT8AD1sTHlayZM2luVkKPSHs0SrB59aGz43AEtWiLFfL1LJgr6XVQj4bvjiZfHEd+OK2wHbwyM3gkTvDfgP8ch755Tzyy3XhlwfCfr/2CMvXhmvD0eYIeGoPPPXjrEAboz3J6msT4LXrkNeuQ167DnntXHjtF5GfDd+dC9/9LuaDFdoK1lB7T/uAFWmr4c2LyZtzePN8YD34dEE+vRL5dE4+vRL59Krk0y8nn34J+fQG5NO98OkvslQ+m89mPj6Hv8zS+Fx4+SB5+SB5+QC8/BLgv+Dr/eTrQ+TrffD1/waugccPwOOvBX4Ev+8nv+8nv58Ovy9Zhu6C9w+T94+S94/A+9dkWXqynsxq6Sl6CitRMwHymAlYJmaCCDCqZ6IW5gOWreYD1CrUC4EN9YbYW6wXAxvpjVAGcwMQcwMs6lnrK+hZ6xb0fPUV9Hx1C3qmujnmiQdYI9tg2yNMw2wxhiXaxtomsEttE22TWJLtKdsUVmh71vYcq2GbZnuZJdvm2l5jKZhRXmd5tkW2pSxfzSusSM0rTKp5BVjJqMSaGJWNyqyOml1YHmaXDUw3PjY+ZgFjo7GRJRqfGJ8wm7HJ+JQZmHW2wLLV2ArLNmMbsxvbje3MNHYYO1g1Y6exkyWoOYm51JyEkl8YX7DKxpfGl6wKZqavmGbsN75GjweMb1iScdA4yGqouQo9fm98z2oaR4wjrNg4ahzF2I4ZxzCeH4wfkP/R+BH5n4yfWCPjZ+NntHxCcJYkdGFjjYQhDKZhhrMzTBbCZC7hEE6WKBJEAtOFFJLVFC7hYsXCLdwog1lQ/d9dkYS6VUU11K0pklE+RXhYFeEVPrTsF37UTRNpwKAIooV0kY7yIRFC+QwRRflMkclqiCyRBXstUYvZRLbIZm5RW+Sg/UvEJaibK3LRWh1RB2XyRB7q1hV1mVQzLvqqL+rD3kAUomRD0RAtFInGzBBNRDOUbC6aM7u4QlyBMbcVf8Hnai+uQfs3iC7o/W+iK3r5u+iGdm4Rt7HGoqe4gzURvUVf9Hi36MeainsEvIe4Vwxg1cV94j6MdqAYhM/ygBiMdh4UD6KFIWIIWnhIPMQSxFAxFL08LB5GmWFiGHoBA2AexQBYLhjAWJYvxolxrK7iASwZPGAi9k4Sk1iKeErAD4inxdOsSJSKUnzbU8VU4HNiGssT08V0lAdXQAtzxBzgSwJHqZgr5qLuK2Ieayb+Kf6JlueLV7F3oViIuq+L12FfJBaj5JtiCUouE29h79viHVYAhrEC9vfEeywHPON9lF8lVsHygfgAJVeLD1FyrViL8Xwk1qHMerEeI9wgPsaYN4qNrLb4RHzC6otNYhPqgqOg1jaxDS1vF9tRa6/Yi9a+EPtQ/ivxFcp/K75HmSPiCL6No+IoxnZMHGfJisewuuAxLuTd9sos317FnsQ89qr2GqzAXtPuZfXtPnuA1QHLibAie9Seya60Z9lrsYb2bHs2LLXtl7Bie649Fy3UsddByTx7HsrUtdfF3nw7tCO40aWsnr3QXoi+GtobonyRvQh7i+3F6EvFFNAUZ2J5ijMBwZmA4ExAcCYgOBMQnAkIzgQEZ2IpijMxj+JMQHAmVltxJuTBmViR4kwsGZypMcsxm5hNUAvMCRYwJ5QBcwKCObECxZxYfTAnKAHzFvMWVgz+dAdLNHubd6IMWBTqgkXBDhaFkoPNwWjnQfNB5IeYQ2AHo8J4wKhQ/nHzcZZvjjHHoBZ4FasLXjUBlokmjjpzkvk08i+YL6CvWeYsdqViWrCAaTGnYlpAMC0gmBYQTAv4pfktu8w8ZB5CL9+Z36EdsC6Wq1gX8pZpqf+O4mCsmUNzaCxZMTDmAQOzA02Hyeo5sLFch9PhRF463MBEB+ZfRyVHJVbgqOyoAkuSI4kVOao6qrK6jmqOaqzYUd1RA/ZkRzLLd6Q4Ulhth8fhQd7r8KIXn8OHvX6HHxZwO+TB7TAScDsguB0Q3A4IbgcEtwOC2wHB7YDgdkBwOyC4HRDcjjkVt2OXgdtdzSo5Ozg7MOG8xnkN8h2dHZG/1nkt8tc5O7GqivnB8ohzBuPO550vIQ/+hzz4H8qA/6HMDwka4wk8IYVdrlggaxCL3aBYIOOKBQLBAoHXy+uZT3aWnVlA3iBvYJXljfJGlipvkjexdNlFdmFB+Tf5N6bLrvIfyHeT3VD+FnkLynSX3VHmNnkb8j3l7Swke8leKHOH7I0yfWQf7L1L9mV+MMt7YO8v+8MOfgkcKAcC75eDmFc+IAezNPmgHIKSD8mHUHKofBg9DpePwjJKjkbL4KDoZZwcB3xCjkeZCXIixjxJTkI7T8nJyD8tn0b5UlmK/DPyGbQ5RU7B3mflsywip8qpLFMxVxYFc53Basnn5fOsRM6ULyI/W85GmTlyDva+Il8BzpP/ZNlyvpyPva/KBdj7ulzEsuQbcjEsb8o3YQHfBYLvAt+W77AM+X9yOcq8K1ewsHxPvoeSK+VK9LJafgjLWrkObYINo/2NciPwE7kJZTbL/2DvFrkF7WyV25DfLrezfLDknWhtl9zFIoorMz+48hDmdT3kGsqCrodd+JbAm4ezbNcIF74r1yjXKJbqesz1GCxjXeNYLdcTridYieLTsIBPs2zFp1lVxacZV3waCD4NBJ9mVRWfZnlgdo2JTzcnPs2JScd4cxljVvzYTfzYzf6KPzcx4xbEjFsSM65CzLg1MePqxIxrEDOuScw4uUL8HoPi95gUv8eg+D0Gxe9xUvweg+L3GBS/x0XxewyK32NQ/B6D4vckUvweg+L3JFL8HoPi91xJ8XtaUfyeJIrfcxXF72lD8XvaUvyedhS/JwVMPQG82aW5iKMns3paipYCDq2YegMw9baskLj41do12l9hV1y8odZN6waGfbd2N7CfNgC8eSAYeX0w8uGsGFx8BPKPao+ivGLk9cHIJ7LG4OKlrAlY+ALga9prrKm2UFuGvYqFX0ss/HJi4SXEwpuBhecynVi4XoF/6+DflxP/vhL8uxWxcBVhyEYRhipThKHKFGGoGkUYqkwc/S/E0S/lI/hI1ohP4k+xDnGmrnh5Lf4Kf4Vl8kXg5enEyDOIkUf4B/wD8G/FxdP4Or4O9o/Bv9MoapGPf8q3gpFv59uBKoJRNkV1y+K7+eew7OV7gSq2m58iG4X41/wA8iq+UZh/yw8hr6IcRflP/DjyKtZRKj/BLeaniEdBXdM58iruUVg3dAN5Ff0oSNGPQnqCngBLIth/DvH+POL9+cT72+se3Qu7Yv85ejrY/yV6GOw/h9h/rp6lZyGfrWcD6+h1WV0ogfrIN9AbsNr6pdADOaQH6uhF0AM5+mX6ZWhf6YEcUgLXkBLoSErgGlICHUkDNAf7n8Dc4P1TWBVi/DWJ8XuI8TewLQTjbwjGv5wV2961rWZNifeXVIjJZFBMpkSKyZREMZnakRJoSUqgCcVnakV6oBB6YD0TpAHsxqfQAII0gJ00gJvYv53Yf01jt7EbLH+PsRcWxfsFMf4axPhbEuOvQoy/JjH+ZOOwcRioOH1z4vR24vRViNM3J07PhQCntxObtxObTybW3pz4up2YehVi6snEzpsTL7cTL69JvLw5uDh0r8gBIxfExasQF28eZ+H5Ih/lC0QByisu3pxYeIxz24ln24lbtyBu3ZK4dRXi1q2JW1cnbl2DuHVN4tbJxJ6TxSgxCpzyMfEY2KRiz4XEmIvEBDEBdsWY6xFjbiKmiCngkYorF4hp4MpFxJU9xJWLxUwxGzx+Dliyh1jy1cSPi8UCsQC1FEsuIJZ8NVjyItR9A1zZQ1y5AXHlYvF/YjlaeFe8i/KKKxcQS/YQS25ALLmYWHKJWAeWXEQsuQmx5AJiycXEkhsTS25GLLme2Cq2Yq/ixzFmXE/sFwdhUfy4AfHjQuLHV4sT4gQYqmLGRcSMi8GMayCvOHFj4sRN7Gn2DNaUmHEJMeNriRlfTjy4CfHga4kHlxAP9tjr2+sDFQNuRgy4xH6Z/TK0qSKKJVIsMYNiiSVSFLFEiiJmUBQxJ0URa0NRxAyKImbY29vbo3cVS8ygWGKJFEWsFUURS6IoYu0oilgKRRFLoShiBkURMyiKmEFRxBIpilhShShiiRRFzElRxBIpilgKRREzKIpYIkURMypEETMoilgiRREzKIpYEkURS6EoYgZFEUukKGIpFaKIGRRFLJGiiLWjKGIGxQ8zKsQPMyh+mIvihyVS/DCD4oe1qxA/zKD4YYkUP8yg+GGJFD/MoPhhBsUPS6T4YQbFD7uS4oe1ovhhSRQ/7CqKH9aG4oe1pfhh7Sh+WArFDzMoflgrih/WhuKHtasQP8yg+GEpFD/MgIZJYoVQLBmsCemTpmbEjEAbRM0ouH4tsxZrYGabtaE3cswc2HPN3LhuKTDzzLqsGamXArPAbABUGqbEbGg2RDtKwzQ1m5tXAFuYrdBaa/MqlGljtmH1zLZQMsVmO7M9FMK15rXYq/RMY/Mm8yaMp6vZFbVikRiVwimBwumBvpTCcZt3mn3Qzl3mXah1t3k3u9y8x7wHlvvNB/AplM4pJG3jociNBaRwiszR5mig0jnNSOcUmU+a8BKkcwpI4RSbz5rPwjLdnI7eldopIbVzrfmiORu1lOYpNl82X0aZV8x5wFehfBLMbeZnwM+heRJI81xBmqepedg8jJaV5ik0fzJ/wqdTmieBNM/VpHmakOYpIrVTQGqnkNROgcMFhVMEhVOZNSaFU0IK53JSOM2gcKpDBdVw1ETJZCicBqRtPKRnmkLPRNBLFvRMAvRMPrDAUQgshoZJIA2TAA3TFqjUSwKplwRSL1dAvXSIKxalVa6DDulEiqWzszMsf3f+nTVy9nD2APZ09gT2cvYC9nb2BvZ19gWqWHSVKRZdZYpFV41i0VWjWHSVKRZdZVI+OmmbvyR4EoLs0oSWCX9hjRJuThjAOlCkOhupHRsUTi2oCKVhapGGyZT/gIZJk7fKHmDqSrekkWKpBcVyB/K95Z1QDv1kP1iUVkmX98n7YLlfPgCVovRJBumTWqRPMqFPRsLyKFRKJqmUiHxcPo7ySp/Ukk/KCdg7EfokAn3yFFpT+iSD9ElMmaSTMsmRz8nngNPldKBSJvmkTNrLF6FM6kCZvAT7y3IuyyVlUoeUSV1SJvlQJq/CskC+xmrLhXIhSr4h34Bd6ZNL5BLokxy5VC7F3uVQJrmkSfJJk7SXq+QH2LtaroFdKZO6cr1cj5JKk+TLT+Vm2P8DTVIXmmQrWtsGZeInZZIrd8gd6FfpkzzSJ5fIzyQ4HkUHzKZ4pFlyn9wPi4oUGJQH5EHkVbzAMMULDFK8wGyKFxikeIGpFI/UL3+WPwNV7MBsaUkwQIogGAIxBwOkOIKpFJvUT9EEfRSb1E8xBcMUUzCbYpNmudyuRNhVfMGwK8mVBIuKMhilKIOprpquFOxVsQazKdZgmGINRinWYMgVdAWxV0UcDFPEwSBFHAy5erh6sDRSYhlQYg+SEsPx4HrE9QgU2nCorwxSX3VJd7WH7noS+QmuSSyX1Fdd12TXZORV5MIwRS70UeTCbIpcGKXIhWGKXGiDNpJsMjj+ULAtzmpoB7VvGdO+144wrv2o/cRsmsU1JrjBBXNA7EuWwCvxyszFq/HqLJGncA8Yf5CnsyQe5ZnQAM/wZ1gNvYV+Jbhdc+MKlmL0Me5iXuNt423md+OPpboD7qtYwN3O3Zm1cd/kfphd7x7rXsaGuFe697N/ug+4j0BpcQaNQXFR3FBbDlaZdWAJUIJdoahuZo+yzuwxNpoNhbJbz4ZBne2ERvtMc7JPNAl1ZWmJWjVN09Tqh6kUlVZD66Tdonm1W7VhWpY2XBuvtdAmac9AZ72mfahdr7+sv6z1A6e+W7vHNtg2RLvXNtz2qDbQNtY2VhsMfv2U9iD49XRtKJj1PG0EmPUb2ijbMtsybQyY9XvaWFqpHQ9mvV6bCGa9Q3vKtsf2pVZq+8b2jTYV/Pqo9pzi19oMI8lI0l4Amz6hzQK3DWkbREREtMPgqjna9+CehdpP6tqvZonLRQm3iebiKtDftqIzd4u/iZu5V3QTfXgA3HMQry1GiNG8vhgjSnmxeFbM5C3VNVXeXswVH/CrxRqxht8JTreJ9xFbxBZ+n9ghdvCB4Gv7+P2KqfEHxXfiMB8GpnaCDwfFdvGx4GXV+LP2GvZ0Ph1crB6fZ29i78nfst9lH8f325+0P6lLsIxS3QXWMFdPUhGX9Rr21+2LdK99sf1t3a+Ygh4GR9ik59s32/foDcALjurNMIfP1zuY3znS9J3un9w/2Sqx7Yx59iDtRzqEdAzpBGNeW/mr5nXitRJSdSQvUhApipSDlI9UiNQYqTlSa6T2SNch3Yh0M1IPpN6Me/tRYt6BlLh3CNJw5EcjjUeajDQVaSbSS0jzkRYhLUVaHh/Dqt94XRtvS+U3xutsQdpF+5j3C6QD8fGuir/iM3oPI/3ImI/F7PFX7hOUNJ9EqoJ8zXJbLPmRQrE8+uW+rLg9N54K4qkIqSlSC6Q2SB3iZTtReebrgtQt9j35epZ/57Gyfagc8/VHGoQ0FGlkbOy+MfH+JsQ+q68UaRrSrPj+ufH9C+JpMWxvIa3A51mNtK78s9Bn9m1C2oa0G2kf0kGkI0jHGcQ6khl/df/yWlbeXxUpJfaqyqt66n35/gBSGCkbKQ+pAVKjX17Vb+YvQWp51q/c367Cb4XP5u+I1Dn2e5/T69JfveL49neN9UPHUtxO/VZM3ZF6/fJKx9vS+PG2C+PrC/sApMHx40+1M+yXV/8opHG2yp4UT8AT9mR78ggbEDYClnhaAtt5OgI7e7oCu3t6Aft6BgBVrcGeYZ5RnnGeSZ4pnhme2Z55noWeJZ53CFeW59d4NgDV3s2eHZ49nv2eQ55jwFg+hie8Nq/TW8lbndALDFI+SPmoNweY7y0ENvY2B7b2tvc6qdZ1wBthudnbw9vb2887EDjEOxw42jseqOyTvVO9M70veed7FwGXepd7V3nXejd6t3h3eb8gPEB4GPijD2etT/gksIqvJtDvCwGzfLnYi1q+Al+Rr6mvha+Nr4Ovk6+Lrxuwp6+Prz/hIN9Q30jfGN8EXylwmm8WUFnmxu0xXOBb7HvLt8K32rfOt8m3rRxxtAKVfV8cD/qO+I77ud8kdAOrUj7FHwCG/dnAPH8DYCN/STm29Lfzd/R39nf1d/f38vf1D/AP9g/zD1Ct+UfFLeP8k8pRWab4Z/hn++f5F/qXEL5Tnlf2lf41/g3+zf4d/j1Ald8PPIT8Mf+JVFuqM7USYfXyvDc1CIym5gDzUwuBjVObA1untqf8dak2qntj6s2pPVJ7p/ZLHZg6JHV46uhyHA+cnDo1dSbyL6XOT12UujR1uRpD6irCtWX51I2pW4C7Ur9IPZB6OPXHMgywgADKQJVAzYA/ECLMIswFFgSKgE0DLYBtAh2AnQJdgN0CPYGqVp9A/8CgwNDAyMCYwIRAaWBaYFZgbmABcHHgLUKVXxFYDVR71wU2Bbb5+gd2B/YBDwa2BY7E8XgaTzPT3GlVCVOAAcoHKB9OywbmpTUANkorAbZMa5dmUq2OwM6wdE3rntYrrW/aAODgtGHAUWnjgMo+KW1K2oy02Wnz0hYCl6S9k7YybU3ahrTNaTvS9hDuJzwEPJZ2Im1z0BZ0AisFqwO9wSAwGszBXtQK5gcLg42DzYOtg+2D1wVvDN4M7BHsHexHODA4JDg8ODo4PjgZODU4E6gsL8XtMZwfXBRcGlweXOVrkbY/uLYMgxuDW4CwB3fF8YvggeDh4I/pjFCU5dNlehVgzXQ/MJSeBcxNLwAWpTcFtkhvk94hvVN6F8+49G7pPdP7pPdPH5Q+VLWWPjJuGZM+AVhKqCzT0melz01fkL44/S3CFeV5ZV+dvi59U/q29N3p+4AqfzD9SPrxEA+ZIXeoaiglbYDCUKA8Hw5lA/NCDYCNQiXAlqF2wI6hzsCuoe5AVbdXqG9oQGhwaFhoVGhcaFJoyq9wRmh2aFywfWheaGFoSeid0MrQmtAGws3l+R2hPcD9oUOhY6ETGbYyzHBmVAJWz/BmBDOiGTmE+cBCyjfOaA5sndEeeF3GjcCbM3oAe2f0A6paAzOGZAzPGJ0xPmNyxtSMmRkvZczPWJSxFLiccBXh2oyNQLV3S8aujC8yDgAPE6r8j2EWFmEZrhKuGfaHQ4RZv8rnhguAReGmwBbhNsAO4U5AVatLuFu4Z7hPuH94UHhoeGR4DHBCuBQ4LTwLODe8ALg4/BZ6WUG4OrwuvCm8Lbw7vC98MHyE8LjCCAdui5jhfRF3pCowJRIAhiPZyh7eHcmLNIg0gqUk0jLSLtIx0jnSNdI90gvYNzIAODgyLLRQYWRUZFxkUmRKZEZkNsrPiywEzogsIZyNdmL2GL4TWRlZE9kQ2RwWkR2RPcD9hIcix4CwR05EbVGnJxzPV4pWj3qjwWiUMKcc86OFwMbR5sDW0fbA66I3Am+O9gD2jvaLDowOiQ6Pjo5siI6PTg4vjk6NTkZ+ZnRy9KXo/PC+6KLoUuByQlgiedFV0bXRjdEt0V2/QmX/Inogehgt/5jJMkWmzKySWTPTnxkCqnwWMBf5gswi9bkymxK2yGwTy2d2yOwE7JLZDdgzsw+wf+Yg4NDMkcAxmROAqBs5kVmaOS1zVubczAWZizPfylzxK1yduQ64KXNb5u7MfZkHM49kHs/IV5jFyzDLzHIDq2alZAWywlnZwDzCBlmNgCVZLbPaKU6S1TGrc5biKuAGWd2zemX19TqzBmQNBg7LGhWbwbPGqXkwa1LWlKwZvuNZs7PmYcbETPT/7H19WFXXlfc55557oUYtXC43hCBBREDu9/f3Zwl+Po5xjLXGMYQaxhJjGWOsoQ4x1lhqrRXHWEsMOtYaQpAaqxQJWEMNEksJsYYoNZQhjmHQEmsooYzBd6/fvlrT9H2S/9/3Mfvnyjprr7322vvsvda6Nzd5DXnNea10K+W1sxuK3TV5nXnn83rSe/L68titR+9L3rW8G3mj0zNp3+aN62TdhOwUXYJOyzBNl8n3mC6X1ldn1Nl1tJoJunBuGvlBV6Cbp1tIPtEtYYiZ6pbrVjAs0ZXOGKEbR7dOt0G3id0+7OTXVei263ZNjddV6fYzPKSr4+ez7iidcrpG3UndaXZaDujOZg7TOaPr0nXrLtGZo+tnyE4S3YBuSDec1a4b0wtZ7bTzc6x6lX6iXq1P0afrs/R5erPeqffro/pZ+vn6Rfc36JfqC++/pi/Wr9KvYTLrmUy5frN+q36Hfrd+r/6AvkZfrz+mb9Kf0rfpO9JKH1ihP/dAqf6Cvld/WT+ov64feaBOf/OBRoNkiDdMntJm0BhSp1w3sFjFkG3QT99usBrchqAh3zDHsIDHG4bFhmWGIsNKA4stKaIwrDWUGTYathi2GXbSKhj23L7ZDdWGg8Bahkf06w0NhmZDq6Hd0Gk4b+gx9BmuGK4ZbhhGDeNG2TjBmGDUGtOMmTymTetnr9clHkfxKMVoNNrv38njRqPXGGZYYJzHoji2N4wL063GJcaFxuXGFcYSY6lxnXGDcZOxwrjduIsk0/Ybq9LqjPuNh4x1PHK7f6Xx6P3ZxkbjSTYWYlTjaePZtAlT0o1daZeM3cZLbPSgsX/KTeOAcYjhsHEsvcwkmFTpZQ+ETRMfkE1qUwrDdFOWvj7tqCkvrc5kNjlNflPUNMvQQB4wzTctMi3leztzg6nQVDzlpmmVaU16j2m9qdy02bTVtMO0m0eYpr2mA6YaU73pmKmJ3gvTKVObqYNF6SxWN53jaLpg6uURuOnyXTgIvE6jmEaAN82SOT5tgnmyWZNWak41Z7AomkXU5myz3myN0W5gkN4vc37MkyweNs8BLiCrzIvNy8xF5sWcBq40rzavnXLKXGbeyOJhFhWbt5i3mXfyGNi85y6sTt/J4r0y80FzLcMjhBS1mhs4mpvNrTxSNbebO83n04+Ye8x9DBmfca6Yr/GoNa/zb2i+QW+9eRQ4ztEiWyawWJRFpJYEi9aSxiJPFpdaMi25FuMDjRa7xftAo/mKJcz25LClgMWZbF0s8zhaFlqWWJZPH7OsYDcUO5mzVZYSSym7N8cs6xi9wbLJUpHdZNlON4Jll6XKst9yKKfaUmc5amm0nLSctpy1dFm6LZcs/ZYByxA/2/npPWOiZdgyZhWsKnYaD1onWtX8JLSmWNOtWdY8q9nqtPpz5lij1lnW+dZFPAbIvm5dym4B3DLWwhmzbt/R1mLrKusa63pruXWzFbetdYd1d1YDnVrWvbnzrAese6012VnW+py11mM5RdYm6ymrk9/LOX3WtmyVtcN6jmIJ64XpmdZe62W6062DTPN1K7uLrTdt7BbOXWGLp/vLNjk3zaaxpWYP2jJs2dmDM3bY9LdvCpvV5rYFbfm2OdkqiiWMdbYFtsWGBpqdbZmtyLaSn7TZhbbVtrVMT5lt44wRunNtW2zbcnpsO+mesu2xVdsO2mptR2wNtmZbq63d1kl+s52Hnh5bn+2K7Zrthm00vZrOcNt4LNphqCuI4e2oZsAuE3KOfQIwgWywa4Fp9kx7bvYau9Fuz95s9yIaYZGJrsAethdwOmeckPVid4F9Hp269nn2hfYlPK6wL48hm4Uu177CXqLL5TQhkyy1r8vptG+wb2IRBYsr7BX27fZdPIrQFfwN7Qk5ffaq3Cr7fju7/e119qP8xme3D0N7o/2k/TS/5e1n7V327txu+yU7u/eJzzgD9iF+y9uH78IxuqccAqE9AbTKMdGhZnc3u8EdKY50Rxa7qdk97shzmB3OGZcdfkeU4SzHfHY7ZzsWsbuY+dyxFFjIPeModqyakeJY41g/o8lR7tg8Y8Sx1bFjeqZjt2Ov44CjxlHvOOZocpxytDk6HOcYXnD0Zm53XHYMZtQ4rjtGpqx33HRKznhHk3Oyo82pcaY6M5zZTn1GjdPqdDuDznznHOcC52LnsqmrM0ucRZnrnCudq51rp3Y6y6b2ODc6tzi3OXc69zirnQedtc4jmQPOhsxhZ7Oz1dnu7HSed/Y4+5xXnNdi2cE5541pvc5R57hLdk2YdtOV4NK60lyZrlyXMWMkq9llvx2Hu7yusKvANc+1kNFLXMtdK1wlrlLXOtcG1yZXhWu7a5eryrXfdchV5zrqanSddJ12nXV18Qx0ap+rm+VcyHR4TuG65Op3DfAszzWUlcFw2DXGci5217uFaVlulVvIGndPdKvdKe50d5Y7z212VUxdS5JTq93OqbVuvzvqjuVZGenu+bfzWZ5juhchr+xjuQvL+NxLb48+zewuZIhcyV3sZnlTLMeZM3VLlsa9xhU2NU094l7P9Je7N7u3une4d0/bTB5w73UfcNfwWGXqYne9+1jmsLvJfSqr3d3m7nCfc19w97ov83zQPei+7h5x3/RInniKczyTPRpPKsupWWbtyQBme/QeK8uaWQZtXkDocSObLgcdpFE8+Rw9czwsO/YszsqfutqzzFPEcl6W/3pWelZ71sboMuBGipc8W2KeZNmrZ1sMmVWenZ49nmrPTk4DD3pqPUcyT3oaPM0se2U5rKfV0+7p5Bmr5/xd2DNth6dv2hrPFc81hjcIKcfUGTl6Rj3jPK/0yt4J3oRpx7xab9q0Y8RnnExvLs8xvca70E5RnNcLDHP0FnjnscyR5Y/ehd4l3uUsW2RZpHeFt8RbmtXgXefdwHCTtyKr3bvdu8tVQOvirQLun1rtPeRZ6a3zHp3W6230nsza6T3tPcsku7zdGSneS95+7wDlDvw+orNrelW2yjvkHfaO+QSfyjdxer9PbazzpfjS6e7wZfnyfGZCRjt9fl/UN8s3n+GiO7jUV+gr9q3yrfGt95WzXpt5Tufb7Nvq2+Hb7dvrO+Cr8dX7jvmafKd8bb4UOj8Jc8Z9Hb5zlkY6LX0XgL05bh/L73yDvuu+Ed9Nv+SPzznon5xj9Wv8qf4Mf7Zf77cC3XRO+oM8tyL05/vn+Bf4F/M8y7/MX+Rf6V/tX+ts95f5N/q3+Lf5d/r3+Kv9BxnW+o/4G+jM9DcDW/3t/k7/eYY92Wv8ff4rrhX+a/4brhX8TvGP+scDcmBCICGgDaQFMgO5AWPAHvAGwoECUxOdopaxwLzAwoyawJLA8sCKQEmgNLAusCGwKVAxoz6wfUZTYFegakZNYH/g0LRj/IYiDNTladhtyOjAUVsPj9xM9YHGwMnA6cDZQNf0Q4HuwKVAf2AgMBQYDox5B3xLg4KvOKgKTvTtCKqDKcH0YFYwL2gOOoP+YDQ4Kzg/c3twkS89uPRubcHCYHFwVXBNcH2wPLg5uDW4I7g7uDd4IFgTrA8eCzYFTwXbgh3Bc8ELwd7g5eBg8HpwJHgzJIXiHW2hySENw9RQRnBpDLND+umZIWvIHQqG8kNz/CtDC0KLQ8tCRaGVodWhtaGy0MbQltC20M7QnlB16GCoNnQk1EDrG2oOtc4YDLWHOkPnQz3BWaG+zO2hK6FroRt87UKjofGwHJ4QTtDXh7XhtHBmODdsZGgPe8PhcEF4XnhheEl4uTUrNyG8IjctXBIuZbguvCG8KVwR3h7eFa4K72d4yH8lXBc+Gm60LA+fDJ+esj58NtwV7g5fCveHB8JD4eGp8eGxiBBRRSZG1JGUSHokK5IXMed2mZoizojfdywSjcyKzA8PRRZNjY8sjRRGivkokVWRNZH1kfLIZkNDZGtkR2T39P5g4fShyN7IgUhNTmukPqczcizSFDkVaYt0RM5FLkR6I5cjg6H8yOXcs5Hrud2RkcjNqJSnicbnZUQnRzXR1GhGNDuqj1qj7mgwmh+dE13gWxVdbGkkjC7jWX+0KLoyujq6NloW3UjRS3QLRSnRbVRFie7kbxzFGFPqY5WKz7wdpOFvlYHonmh19KBvPd3v0VrKwaNHaDdGG3h1iM6HnPFosy+d6UckFm2NtmcX+qLRzuzCWPUGdZXo+el10Z7A6Whf9ArP+qPXojeio7TWulxBHH9E/hrDpcqnGN4DegJoC2gL0cJmxe8ZbZNnMbQr1+JpEZ7+BPQ2hlbla6BngeYaLKAXoK+JoRF8u7waeqivFaMsk22EykdI8tYrbERBWcZQcestcA4z1MhRQuXTDI+i1z6y5FPQn7bAqk3gPwHaBtoG2o5xbTEsA/4bZJjOT/9L1jHs40+JZk8fgZ3wAEafr7yHUOUjm2+9DP4MYAVDM2QsZDnDA7C5DDTHFGAl+LxvPfzjgQ+/BS+txFPwFRfAiYeMAKteAedJjF4HC+eC/1XQIej5Dp6+Dz3vw/6vYu7s6advk88/fVtZDY4SfZ3oW0z2gzaDtspe8EtAO6EZfKANT6146pLJGy7lE7DTC0mibYobkOGrsA3ammEb5oUdYlPugzyhSa6BZA08g9nJbuBCSK7AWA0Yi62R9BBZoniRUHroVgmh6irjfJ9Q1oG+SMj4DeA0gK4FXQu6AnQF6CHQQ0THpVBfQumh8Qij7cpCQVQOEirsGMsA+iyhZADneWUp0+AhlJ7nHFgyGzgRljyvepVkVN8gmjRL60iD/Dj0rEOvIsj/GPIhjPIanobwNIR5bQCegMykGNaCUwu6AnQF6CHQNK97aXTFaxg9hHn9BzRfUK5hI9YQShcwymnYsB6aj8Azx6HhAuw/Dg3VsL+c/C/vwyqUo285+i5A3/3EVy7H0/30VJSIFrFqosQ5JCkug/x3gHPBkbBeLxAymuZVSshomtcaQkaTVQWEjGa2iYeAEmybDduyMfpsjPUC6KmEwjA48KT0OhB7W34AMlbMxQo9AnbaXPAF8AX4H3aypz9ldAWhJMCrxeRV1RNYu2LIv6D8JtP8BqH0AufAS6/HEDPFWIdob8tnsMMPQfIQZAYIldMxYhPwEPVinAbQtaBrQVeArgA9BHoIdD6jZxBKh8bbmW2nlExG9WvYeQpjJYLuw65IjHHYiaQ4o9TCHjdxYM89sCGRbBbfI2sVD9NpIL4Hr74H/+wHfhOr+QtIfozdnkAofgzJjyEDefFjkpE1GL0Sa/FL+LwSllRi3GeADRi9Eu91AzxQife6AR6oxHvdAA9UYvc+Aw9U0hstPwNsAed38PmDGOvnGOtBGkvxY6Lj7leC5hwaMW6KitZ6D2zeE+PXgr+E9dVAjxZ6NHx22Dk3gWdgucxnCmtl7Gd4W1EHn/ShVx/0vwPJPryzdfTGiWPybxldSCiOQXKM/htXqYpQUQkMEYpjyo+JQ8jod0G/C7oFdAv6ZqJXJug56DuHaPikS36T7ZYcQqkL/peIVpSDgzdXWiifZ5zjhNJCzoENp2CVGfT3QHuV75Gk8nlG50G/Fdp6oS0NkjchWQBOAWb3EWRmEoofcQ4kJwPnYqbvAM9gjnMxxzOY41zM8QzmOBdz/ANsmEk2iB/hPbVhrGKZ8eUMQom/rcXQPwR7iqkvuxcy6fwhDbIOsyjGLPy0FnImoeRHXz/6voe+8/G0Sl5PND0VRrB2FYTCCOfAfsxFmg3Ef7csjNDaSVsIGc3mJf0zIaNbQLegL1nlIWR8Zpv4U0JhBLZNwm45gdEnwXtzMPoVjH6RczDiStjwV8j/GjJ/xdO/4p1twewugt8Cfgt6XUSvFpx+WkKxBV5VYOccxNop4JPZ8IMNaOAzpXnJBsxxNqx9GKuQilV4GL0eJkk5H/gcej2MXs+h18PkDUa/C7oFdAt6ZUI+E/QU0FMgk8bo/yCUHh4foXscdr6D3fUBrP0BpzHHfnijRM4mmttDp5/4AdZ3L+Y+DPwAXqqB5X8iFGugoQaSHliOvS3ugORhjFWCsQ5D8jAkg5A5DJk6md3Fiu8SinUYfSa8NwNrMZNz4Bkd9M+EZ3TwzEx4RgfPzIRndPDMTLwLQ/DMTLzvQ4SMJi99HV5ah9FvYawUrPgtnHJ5RKvy4ZM8zsF/XZ+vPEc0jcXo7zG6he8xzKsV8nXgtHIOZvoU8Ajm24o39wje3OPwzCx45jjkj0OyCJLH8f7Owvt7Vf42nVeE4lVIXlV2EAe4gVAcBl5VvgTOS6BLQZeCfhT0o6DfBP0m6GvQc41o7Od7aRTVBIx4Lzw/T/kbRu+j3EGah9FHKa5WFBCKo5wDS/4FNvQBB2P4HEkqTcTHzlcpf804HxBKKuqrnK48w+hUZSvjf6R8g2joHIcNFZj1OOdglJ8Cu6F/HHPsxhzHMcduzHEcc+zGHMdhQzdsGMeKFynPslFOE4opsf3PsgxFG6HYP55HiFHaMEo/tLVBWz+0tUFbv7KJ3iNCZj95aT95SVTgvp6qPM04v0CcORWn31XqK24nFK7GOKT/3wmldGAA+B1aQQErKGUQClhByUPI6HcYrSd7BKyacFV+jDQD+2DhdzBWH81F+AvoAxj3L5wTk5+MpzRiASy5gllswCyuwFfvkKTilyQpvhOzmcmIzxMKV+OCrO8zwGO0jgorrZdyCGvHo8pU0CcJmZfIq+9jRG8MXwLnJXqKHXKG1kWeC/k09D3PaWhLg4ZeQvl+aEijvox+CXQp6FLQj4J+FPSboHH/0nrJOVi1NLmOYmBCpp/lnooy7P+XMW4Z3v13ueXkN8W75BnFRezJx8G/zGlYchk+3AGsxNNOPEVEJ1bC8nvwdANmmqb8LfYM7cOnsCc3Egr8nbpXvkU7gVD8OufQb4Io8Msg4rPQ8G+QScUaXQTuxSgXYU8W9z88fJF7GO/LRfgnFe/LRfgnFTv8IvyTijNhLyGjyVdTCcW3ob8RO+dtaL5EtPINQukS59C4yjeo2sDoUtD0bjajbzn6NmMuXeCcAKcLb1wXLD8B/3TBzhPo+4K8jGkbIRRfiOU1JKmB5L4YPkcy9FZKZ8mHih4lRZvW8fkCZbVVhHGYe1y6QPkgcSaBcwKcSRRXs8wR+RfxxStACZKHOBJHHoD8IeXrbHYtWLVKPK3E0wZ6qvwIa/ox8Vn024DolzR/DBmZZNh5S0+vqgJ443BigDMOTjdx2Nn1EmicBsQX3yYU0FdK4wj5XpKXO+WN2KvETwX/In7dRiA+8+pL8CrdDl14egKjjGHcMVU1ouJ5jD4DTgs4c8H5JWLsf+IRGvHFHkIWfVUhxgASh8UwTF6ZKtMZNRP8meDrwP+a/Ae6B6G/FTqPIG5vxVhHSEY6iryJZ+uXsa+ywQmCkw1OBrKPe5QaosGxIK8XcN5aYhWJXDbifaqHGP0sNByAhg9R35jKabzj7yMfGUZu8gynoWEnve8sk6W7byf23n8j+2smFP8bMpPQqxK9UsejAtUNaNytNK78CnL/Ccp/Zfgn0IugJwl50z3gJBFHdiNv2kyoquI0+K/zPJo0s7uSRr8Xb9YpvMX1mFcb5lIPe/To2wj9+nG6s96FhTth4bu8doReT6KXFzbXwCc6cGp4Bko1OrkBWAg74TdFKbAZknEcSV6FDC6+hVCF/EX1Q3o34wVC1Xdw16O2oPwJ1u4EZldIb67M7+hP6RxQwfI41B9UT0KPnp6qfkuoPEsyUgVyxgHk/oPIfGuQbx7nlQ3QDl43QJYNSbEDvQ7zTPPWixjrKLPwZVQwGrnNcj3ZLD9PNPxwATNqhj9LUK/4FeoVKvKbzGsyD6nOY4dTbghkJwnRj8dqNUQ/BZmBWHWC08RPRM5+D/jTwb8H2MCz+Bh9HnuP+/+XjPMjzG4n7GmEPTuxjnGxHPwEk/8Ed8RDyKlfRBUL9SL5DPLrj1E3kHk9UDmAnTZANFVupefB+Rk4zxOHZffEWUsofgwOP2lxc4k7+L769AZDg+oC459VbSEaJ8A6jPs4bFjHOeMSMIPhvcAQcBL6VqLvaVh4HBaWQ8M+aCiHhnJUFX6EGkg5r86RBnZik54CyFiBAkfUCSugTSAZRTFWdiWqHMWkX/UE6VeUQv4FjPgGRnyBc6A5Ef7sA3860dJ8nGbvgf8wfPseOLfiZtH9rhqhcz6ujui4pfA8aU7gqwCdlePVQKIfxH3xc9R5HiQ9ih+TfNz9sO3HsEQDDVrYoIEfbKiI3oTMLuzwYUg6KE6TJxBKDrxxaoq0WQxPZ7JJmYo7gnGkFMRdEm40RMXKazj91Ihhhml3ie/E4kOKADOgMxWxIk5gdiPcTxmQsp1ofm4jjnofsVA29uc+ouUPwNkHmX08woH+ryMvqCWUPYgrVoB/jG5/xUzEAMdg2zk6VeJmId44Bz1dsGcdnQ/KXJwV7+JsOY8Tw4eIKB6Rw70U86gmKCcxDk4qSYP4f5RQ0iAa6eD5RZwbEYIbt20E9+yjuLk6cIvRjPK5DXRuxM2Cnfsp/mG5VRNyK448E2lC/sIR0Tui0DmEAvIySYdIrBcyvej1OGQ+Qgz2OGQux6I14rRixGXwTOt4mFYENr8Pm+OQbX1CKB6CJ5GDsBWkeCkN9HlkB12IBk9gduswr6exRk+j10uEitmkR9mHGBgVZsVsRMuI+RWz4bdRmc1dcZSQ5YZ0SlRCA+4vcQrivQPAKZCPYsX3wMKrdHqIN7FvVTgfUvFGxOO9Hgc2qj5hnN8QsvzrUeRiFMG6+W4kPnvjPkGMlIEoLogVDEJDFeIoqhV4CBVW3E2TaL0YTXtmiGJIBT83UuGfk8Rhb00HRnkOWQBlfwfhw8ugf4j3vRKcTnAqeYSjykHMT/l+pepHRNOnaSyS/yeBsrxPGf0YJB/DTFNxDqhg+duI1hoRrb0Ney7BwjcQ5Z5Dr2bYU44RmxEzVyBm7gL/BCTfw159BfI4x8RFKh3j/xp4ieJ8prMKva6hF+JSnO0bcLY7VRTLbVQ9y7x3He+Lm6oWcgJVbCQ33v1PUM24gBrOJzEOaXhRnk6RpEzeXi5vYvIL4c/1sM0HPZOh5zmZ7sESTmN3/QDaTkFzGqdjlViqngXlzYzzptxNJ7b8PaJ5JQryBpIXxrGTizEiVkqeQhVCAVVB8U9Ei7za8GfQl1HDOctp2HAfcZSdxFHch9Fn8coeKo0tiAGeI0ukt2iOSiPm+BYk78PskjEj9BVHYNtszGWEYjOFF3Q3+Ac5Dck61IXqYP8S6KmAniXQXAAbdLDqI1jbCA256IVIRvwQnGfA6ZDp3H5SprO6A3FOJlWZ4s6grpUJTi3R8fPBqcVNUYJRRoEJ4HRSXKF8Aufq93AOw5OqJ+ElfA6oWqNkN1ecCjFbOqx9DHWtZVSXU+agOsdvh1JeicXTs7zmiWgtHzXtx3kd7NZepgc7JO4MzUU1mVtLsVD8fIrTlOOoE1qwKzzYFbfGf8g0rIzVzKkG6EalNB+18Q9QG9wLegd8q+F1WmjwYzVnkwaxX25jkq8Sim3gjKEuV4iq+MOokKeiRtcKm4/wzxqUVGOcijNwDNHUQmU2e3qF73+cioeV91IsCpnD4OzF5wsJJCMu5593IJqSMGI5RpyIc4DnpOng94KviUU7dG68wxFPDXi6GT73w9pMcPyQ96N2qkHt1M8r/NSX5XSIxHgOCHwFs9Nidi2InRTkMeUBVEQVpFl5kDQrFNA8G2PZMNZszkGvl3kNGbb9AH77BJX8GiXqyeDUYMQ2RGselZM4qiugd8Fv1LcEkocheRjWesdXCZRv0txvoT58H/LKW4ig8qiXKh8WZqDXFehpgZ4rqMp24ZRuBb8O/EbszOmwuQO9jhPKGrxxh9Hru8A8qi0z/aM48+dgJxA9pvoaolmG4iBuyQZEU4NY35dQR31Qvp9ocH4Hzn+C87tbSfRJDe7HVERER3Cb/wEaPoX8p4im1uGmngDOaxjl65B5DSfYg3g6BZLpnIZkBm7ht4AZqPX103ctpAUy1SgSCaUFkOyk6p8CNRyxE/f4AH0Thp08RUTHzroinP9FREMmA3FFe6zaWcPoMLR9F3qewn2dhkjyKfCrwDGAUwXOT8GpRhSaoqSqSzXiEAtpUMWjgoRMX2EBn39+nYooaAaefoIYcgZkMuj0U/6CUMErBm+hVlki06ckLyJO3o5M/0XY/zH6roa1j8OeP8Ke1bDwj3i6jT8leaGbRzjAmfBeDaGATwckF9HsHKZorQjRWgc8tg8+nIOoewWqf6exFqvB+T44H6LGewR38Xkgvs8gDuKOlsGRY/HzBNbrR8CFZBu7Ix7DPctGlB9BJc0He/Lgn+t4mhdbZeLw1enE2b6Z1/roOy0sEliLu5Vkvg3+/9yyMRo6FU/C2njo2QGrnLDqLDz/L/yTAtxlW5Gx1iBj3Qr5QZlkTsj3UoUWa7EAucmHlJtI0zAi6tvStNg+oSgrgt2VwrMSeHImPPkOOC3oZVI04915EruCburf0xukWgpvbMQc8Wap1oJzBjKIllVl4HxyaybTs44yFHm/fJhozEiLXCmIWR9AXvAuySi/Bpl38eb66KlyvXI90ZApwB57BG8oPvOVhsBZhHUZ4lETaiOokzC6EGdUIWZBIypJmwhvKJ6it1Jqpr5KERpQWVXYEZMn4E3/ClbnBJ5+JbbuJPNzQkkHTiZkeiCTyStI8iN4ux8hGladgYwF+/YMOL+Sn4DPnyCafy4w7qB3nGwT+Of17bDzVeyWdtj2VawIsjklsjkJ2ZzklVfRp3LyfUTzOhvsrKZdIS2ib6zJGxUfEQ35RYo/Mc6zCrpZdskPMnqQvn8l7cIoQdpvqp/hLA1C2zF5BaMfI2R7DJ8mSC8STSiex+y2YnbnY7HTMniYOB/GONznNJd94PPs1YG3bBL2p1WWMQuG0geEyhOchlVWigqU3yBkJxWbi4jzU/G/wDhClZbTGPFl2DAHY70Mzhp4rB+cNfxdwzk/IFNVsJBQrEevZMigHqg4iTM5F/xhaMiF5T+B5f8Dy38CznzIHIXM08j0/4wT72l+W+G9zsB7vRYxWC48GcXNEuQ09JSA8yg4JcjyPsSeXwVrn4G2S+A4wfkWPsXoRB3glVjUTfb3065QdBCK/XSqi5voe3HS7wnFTbFP7r7CZL7P5XELZOCX0+9DtYp/XtmHVVsG257ErB/DrFFdlIrAmQNOETjz+CeVOGNTgJXARXjffwAPvA1OM/CF2Cebuxndg3nNpXOM3bxpuJHp9HsNModxnt9Cr9fh7TRY/jpO+IkCu+OE1fid2DjxuvgXcUy8JSVM9kymmn+2dJD+fwLSEek1qYV+o1R6W3pH+r10Xrog/VH6L/rlUekj+lVRBYvCFEqFSjGRfhuUfg1UkUu/+a/wK4KKsCKienXif+L/VbQq1tbE2vo7dLZQKBSzZ2sYr1zYLGwVdgi7hb3CAaFGqBeOCU3CKaFN6BDOCReEXuGyMChcF0aEm6IkxouTRY2YKmaI2aJetAojovvO91Jj366lb0dKC3DCDfNaO/8eE//2E2qi+F4Yiw6Ik6b6JfPTRNCo8Ss246kbffEtIZ4jiqcQyeJzeylfdY8Q+54Fu9lIphOcN0DfkC9gl9HTW+g7yKMqjqisz+CxA32Lk38OyT8BY/chcWpBv4k9jmoWO7H+VYh92slWUs04zBOMFr/C9q+wQZCFRMZNEdKYd3MEvWASvIJfCAr5woPCXOHrwjeEpcJyYYWwUnhKWCs8I5QJzwrfY36vFH6C3wg+JLzKfH9CeF1oEX4jnBbOCt3M+xeF94UPhA+FG8LHwqjwV2GcrYFClNmVoBLjxAniJPGrYgJbj3TxAbYmU8VpYq64gP5/R+Jy8VGxUCwSi8VviavEb4tPi+vEfxfLxWfFjeJz4iZxi1gh/kD8obhN3CFWicfFBvFXYqPYJJ4S3xDbxDPiW+JvxQ7Vq/HZ8Tn0O+3xxnhLvDXeHu+ND8ZH6PcL4wvjH4v/Jn2vmf2zgTlCJU4U1WIKsyVLzBPNolP0M4yKs8T54iK0pcyiYvZslbhGXM9s2SxuZaPvFveKB8QasV48hvHbxA7xnHhB7EW7LA6yd2VEvClJUrw0WdJ85k+qlCFlS3rJeuePWwpK+dKcu/4skBZLy6Qixl35mT+rWQtKa6UyaSP7+/afLdI2aSdD+rNHqmYaDzK5WkYdkRqkZqlVamc6V0qd7M3skfrY5JdKLPuTllBUpsiTv0U7WP4Zw1NES0PynwX6BhpDxQ35kEAVOSYpXCIUV6LXLEJlLaGsAhrlDbjpvoU48y3Kr6HhJj1VLUKvhUA7osFRYLxMMVWP4rt0Tiro+wkLiZY2ygkMVxEqShW90MYkhXZCMZP3AuccoXyNkM2C8IDiRzQL6MnHLdzG9eDpEkLlJmgYBfYCtwKPKuiTrFxCRR6h1KxYhluGzvlRcNTKpbCW6ucTiSOcI1q4RMjkiW4neaUfejKg8yT6mhVURc9W7KFTRnEAdtbR51DoexToBV6O2UD0EvStVpTRjQB+MIZ1FGnHNBwgL8GqBqLFPlgyUdAKkiRIRkESxMlbJu8QhP//+3H/z/x+HLthEtYKQkIZaxtZ28LathhvJ2t7WKtm7SDx5MSEDQmbEiq+oJHM9oRdCVUJ+xMOJdQlHP27RrzGhJMJp1k7m9CF1p1wKaH/CxrJDCQMJQwnjCUKf2v4d1XixEQ1aymJ6YlZiXmJ5i9oJONM9CdGE2clzmdtUeJStMLE4sRVrK1JXA+6PHFz4tbEHYm7E/cmHkisSay/q9G/H0tsSjyV2JbY8QXtXOKFxN7Ey4mDidfRRhJvqiV1vHpyrDGa5qbW/K3h31PVGeps1lJjTa+2qt1fopFcUJ2vnqNeoF78d22ZuuiO3rvbSvVq9dq7Wpl645dqW9Tb1DvVe9TV6oP/sNWqj6A1qJvRWtXtX6p1qs+re9R9n2tX1NfQbqhH1eNJ8pdpSROSEpK0SWlomUm5aMYkO5o3KYy/C5LmJS1MWpK0PGlFUklS6efauqQNSZuSKr6wbU/aBR1VSfvRDiXVJR1NavxMO5l0+nPtbFLXZ1p30qUv3fqTBpKGkoY/18Y0gkalmfi5ptak3N0w7y/RNOmaLE2exqxxJq7/h42e+TVRzSzNfNCLNEu/VCvUFGtWadZ8rpGO9ayVazZrtmp2fKm2W7NXc0BTc6fVa47dafS8ibVTmjbQHZpzmguaXs1lzSDG+vt2XTOCv28mS1/UkuOTJydrklPv7p+ckZz9maZPtv59Q193cjA5P3lO8oLkxfh7WXLRP7Tn/9KSVyavTl6bXPa5tjF5S/K25J2fa3uSqz/TDibX3jnb7zqL75yVsTMu+Uhyw+0zKLk5ufXuc+TOHrl7XW+vyW0ftSd33rH5fHLP3TbRWZLcx84T9u4nX+FnQPK12PvL3qvkG0kVdG/Qfk8eZW1cK9/ez9oJ7G82Dj3XJmi12jRtpjZXa9Ta1aN0v2i92jDxaW7aAu087ULtEjpftcu1K+ic1JZoS7XrtBvoDtBu0lbgbGdzpv2u3a7ddft81lZp92sPaeto3tqj2kbyhfak9jSdnaQT7ay2S9utvaTt1w78H/a+B7qq6sr7vvvn5f2975K8l/eHlI8yDKXI0BgoUspCSlNKESlSpDFkkEZMI0bESDGNFBEjQ5HSgIh8NCBmKGJEREwRATGlSClShmYspUgpZRhKMU0pIsNgeO/b+7fPC48kVFyzZq1vrZmctffd2Xfffc7ZZ599zoWzb3Jbcy/kXo5qUXc0EM2Oxti+sCnZkm0Y7UHrpFrPor1p/VF2jvbLLYrmRwezDtwbFh0ZHR0dx+tO+zqbOUZKJ/Sm1xS1FnCbeG2MTowWc9uiU6Nl6XGGPI0dxp7WZV7zuG/Rimgl86JVtIavUsDr9bYOcFjWZV6vsB7zGpxei90KyH/Qt45r7FSB6NxudQxYY9PrqoJoTbdzDOk1EpBeGzPWymvWyPQ6qSC6iNZBXgt57aP1MFqbXcqAZ3idKxdoj1kE0RXROlzroxuim6KN4FP8iG6PNkX3Rg9Em6NHosejp+DHNId5/cC8pXnE8yl6NnouejHaxrEopsc8mBfpeZCOi+RbrIfjXMym2KTmCI8Xxy08r2Jgp7nVcV6p+JJuP3RQ3IyFYwke81jPWJ/251me5lusf6wgNiSGuBMrjI2JjY9N4hiOuER9iJXESmPlsRl47uNikGpXbJaK42l+VYaMajP62jEep/vDcTgN14t114mnsWp1nUfjUHgVOsXJzFjJ8TEdIzPiIctCD8vQPbZBbEFkeGxxbFlsZWwNA+9teLx5TxNbF2sAj2JWbHNsa2xnbHd6/xLbFzsYezd2FHGM9h2xE7HT2E9QTIu1xM7HLsWS6T1B3Iz7OJ5h/ed9A8W6uBPP5TU6nhfvFe8bHxAfFB8aHxEfFR8bnxAvik+JT4tPj8+Mz47Pic/HfkzFS34WezO1b8KeR+1RoEvp4HvxhfElHC+5Xe37uvQ+LHk1BgPSexi192BdvB+LL4+v4v1OfG18ffp5luf+4HeyF/ZZ1Lf4xvgW8HjfmIb0PjETOu4F03u/TFB27bSvSwPvxdLQcU+X3qN1sTeLbxP42L0Z770y91+052rfd2XssbiteJZk0jbpNLdo/sV3xfd0nFfx/fFD6T1W/HD8WPxk/AzHorRcvDV+gf06fjmhsT+1xzGW4TlH/sfXhDsRSGQnYqB7JHon+iXyGTLnW2JwYhjHiMTIxGj2z8S4xMRO+xiCRHFiKgP8kQB7GYpbibJEBa6Viar0HOQ5kZibqEksStS2zz+aV4kViTqeb4n6xIbEpkRjYnuiideeNHB/+R2L7cR9TuxNHEg0J46wbo4fieMJxOC0fOJs4lziYqKtu97d093uHuZYlPGN5iHdh3cv5PWPAXGS9gTdx+A7zSUcj7uXdi9nP+W1sPsMfK0Z32lme6W/1czvCfxFZrYTf6eZ5bvv7r4P32o+2v0E7wE5/qdjc/tXmxlIH68z7Nv8dTi2u/p2cx77WV6vvL5sRx7HvAF5g3BvaN4I1pE3Km8sx/K8CXlFeVMyvtnMX2zm7zWrLzWzfflrzYhj1H/+ZjOu+/MOsT+0f7u5Ne8Cf7E57T+8B+f9B3+/mb/ezN9uBl/FXP6KM3+/mfXzPMn8jnO7r6bfA9JrFNGfKvtUBb71XPmpKubxP67yGRlNM88xdodB/wF0EF+V8IO+BfxXwHlPc5nPu9cxTvL/cz6fVaG53N2Z4+4OTjHuFoMuBF0oNEuaLeC0gNMCTgqcFHOMM0wbZ4Tmu8bL4LzMHCvAtBUQGs+24dk2aGtjjjUCMiOYo5tM66bQkF8G+WXg/AB3fyA07vbF3b6o/R9R7z8KjZaUCgZnJu7ORL1T8NQUpt2/gR1+gxb2Q0v6CY22ZYGTBc5Y0GOFxt2vg/N16PkL9PwF+ntBfy9IlkIGbTCLwC8SWmwFfBptO412noZmaLBEQy/0dBGeXcScrB5MZ/UQGnc/g7ufgYa3oO0toaH/AjgXoK0EmkvQBljbhLWNdyDzDvj3gn8v6EdAPwKZeZCZB3o86PGQmQ+Z+aCrQFeBXg16NdMueJFLvAi+Z8L39OEY0+HQ+Qvo/AX4J8A/ARr20WEf/Rzoc5D/NeR/Dfu7YX839C+F/qWgy0CXgW4A3QB6O+jt0PM29LwN/qvgvwr+n8H/M2iMtYGxNu4CfRfk4ZMmfNK4Av4VtAf9cku/DoB/APQToJ8AfR/o+yD/Och/DjoHQecgyMB/zMWCcXc66Om4+xE0fATLPATLPAT+HvD3iDZ4yJfx1JcxFocxFoch2QTJJvDPgn8W/H8G/59FnjXoedCfBw7qdUm96LUuvZ6GXkxDvfWosR70ENBDQA8DPQzysIwbltH3Q89+1P5p1P5p1PVX1PVXyGyCzCbQ6KOOPuo7Qe/Es/A6A15nbYO3bwMfnmyIJz8H+jnQnwX9WdCITgaik7Uczy4HvRf0XrR/Ldq/FnQz6GY8ewFzbR5jl8TJBmBEKisCDRHxAfBvx7O3Qw9ioIkYaMqIS8RYjWfn4tm5aMnfg/576IHFDFjMsiFpwxqYmzrmpt4HdB/ECi/ihheaT6GWU9DzEvS8BP6t4N8KndBjyRwfCf5I0DZo1OV5iev14FkP+uhBH90GRtaAnq9Cz1fRhtfRhtdBh0GHId9d4jlsuB86n4G2ZyCJOJ+FOG++i9rfhebe0NwbvUAENhCBDYydgbEzi7He/Qb6VSyVmIm6XoPka5DMh+Z8tAfzxY35on8JNvwSNDdCvhHyWBFMWREw3y2Z7+WQKUfLsSplYVVyI267e8j8Qht+CQ2/BAfaDGjTv48av49a3ofM+9DwNDQ8DRoro1tWRviPDv8xKqGnUmIC+vhpzN9N8My/ol7EClNiRSvkW1HXv4L/r6DXgV4HGaw+BlYf4wPQH0B/AeotQHtAu0FbaJuFtpkDoWcgnp2MZyeDhicY8ASjFnQtaPTRQB+NlaBXwpIHYcmD8LQ74Rt3oi7sXizsXizY04I93f+C9vwLnsWIZGFE3HjWjWdN1GVKXYixBmKs8QXQX5DIDxv+CJwfoRasX5bsnT4PDZ8H/UXQXwR9B+g7oOEQnj0Ei/0RFvsj6P8E/Z+QXwD5BWjhPWjhPeB/A/xvoF74qgVftQaDHgw9S6BnCWjMUx3zVMeo6Rg1czb0zAYNC5iwgIF2GtJOjL6B0TcQUQ2JqDtA78Cz9+PZ+0FjXpuY10YcMnG0/0G0/0HQmK1uzNYsyGRBxoQXmfAiqxp9qYY8doxu7BhNRHsT0d7EWmlirTSwfhlYv6wQng1BJhsy2aCxRptYow3ENAMxzUDbDLRNx65Jl10T9gwG9gwW6rJQlzkLemaBfhH0i6A3gN4AeUQnS3ah4BvgG/BAAx5o/RwyPwf/OPjH0V/EUjdiqYE9gIE9gH4ebTuPuhCHTcRhCzKW7BMwLqaMy5ug34QeH/T4oL8O+usgg9hlSuzaBXoX5CdAfgLoBOgEaNjWgG0N7BUN7BXdC6FzIdoJW+liK8wyE7PMfA/0e6CxUpuyG0EMNBEDXdjLubCXcz8GnY+hrkdR16PQfxn6L4OPnYOBnYM5B3rmgD4C+gjkEW10iTbweQM+L6d0tAvaZT6lE2wg/ODHnNIZq92uff2aszr3adO1ihs+sfOOdkA7eM25nTPan7T3rzm9Y7af2OnZflbn7k5ndB7vdDbnjfaTOQfMReZT5rPmSnOb+Yb5trnXPGP+yfzQvMjvftpp6uVprYXqvET1mS4f1ZbrynP1ItzXNcA1SIrWAhjqGuEapcpY1wRXkWuKa5prumsmtWSOa75roWuJazm1Ya1rvWuja4trm2uXKjMBe1z7XYdUOew65jrpOuNqdV1wXdY13a0H9GyiYnoPvbfej6h8fbA+TB+pj24vmj5On6gX61P1MlUq9Eq9iuTmop3ULsjRHdRK9VAv39N/q3EWAp95WcNf/jN6cqa4sRLna3Tm6H8Cfwnz5UwNH6/F+WLmlzC2mhmbA8A5bx7EiTXWMxP83jhfc4ZpdyVkyoBHQ38rtF3AOZcidealt8ZnWI5zq8B5Up2LGaCp0zTahzhxM+bqeRntMk7QhHGaZiNwGZ+yca1jbfohOYMjfEiuAK1DQyvwbOANxhKMv4Y2LOFTPzi9MpHP1+h7cfJlEOhBxuusAfIpnHnJUadvCGt/YBmrABouMTYm4NlCnK8ZyhxXjlnHdsBTuTgv0xcya9T5mo3ts69am8ezT7+JcAHNvmyaeZ+hWVeAWcdzLj3Tpmv30+xaSjNrPc2qVzGreE6lZ9KftLM0exyaN+MxY6ZixszEjEnPk9dd22CDCtJ/9XRj5/ONjdeccex8ylG/5qRjT5x2ZNzfVUB4iGu4q5CL5kouS/HprvGpg/wuArqIR0A/xLTrK6CLcbcQ9Jugj0ByDmgP6KG4+zM8dRn8/wt+b/B/DP5g0P1w1w3626D/STQw7fotJM/ibpXQuJstbQPnZJLPM/WHTDY05AOX4u5hwbibYFqddmzTdYzkP/zveSf3/5TzTjSXPP3Mbp5+nUq+Z7BnmGdkexnNf8saZWKnUuyZyn+5GqXCU0mlijgdy1xPjWcRlVoqK1DqgOv5706rssnT2EXZjucbPU2q7FXlgKeZyhGC412UU56znnPt5SJkpbRJ8eqdisdre8PeRHvp6e2jSv9OpcA7JF2Xd7i30Fvouegd0qmM8Y73TvJOQn0lKKXecsIz+AlVZnWhvb+3Gs/3T1vWO0+VBd7FVJYRjO+irPQ0e9ekCz21rr00SOlsKe9m71Zq0872stu7D+VghiXS5V3vUfKFdOF2nfCe7lBaCM57L6EkvUmfKXyfz+cQzm33lTJPky/P16uL0tc3wDfIN9Q3AmWUb6wqE3xF9PsUKtN8UzL0tBffdO88/gvdqhT5ZqeLsn6Jdwz7t28OPHeqb75vIfuYbwlbwrec/cO3iqi16O1p33rfRrRoI7SLJvIU3xaM0RDfNt8upnx72Pq+/bB0i+8QzZ1h3oM0b8b5DnvafMfIyuW+k6ThjK+VfLnWd4G8vdF32bvOr5EnH/e7/QFvkuptJU/Z6y33Z/tj/h7eNf7e/n7+fGox+/9x/2D0spZGbLNnr3+Yv4enzD/SP5p08ZxFjyApc4VHd6+n0j/O18s7y9PPP5H4zSQ3kmZds7+YqGG+tf6pnnH+Mn+Fv9Jf5Z/rr8FcrpTiX+Tn2VrrX+Gvo1Lv30CztV5mrH+TvxG1UU3+7dQazEv/XtJc5z/gb/Yf8R/30xz0n1Xzj2dgm/+c/wD5Wjn8bR/dvegb4E3627z7AnrAE7B9YwNhGl0aLV9rIBHoGehDljvt60VtOuvdGugfKPAmA0OoDPdeCiTggezBGCuWo0Iew1YKFBKMoZ739BwPjCf+7MCkQElgeKA0QHUHZgRmBaoD8wILaFw2BhazvweWBVYG1gTWBRrg42Uy5oHN5GvTqNat/gOBnVR2B/b5crnQvYOBxYF3yVcH+EbQnaPU+hPsp4SnBE4HWgLnA5f8NYGkd17Q9M0M+vivzHPfgk4wN7CY+jnTN5v7F8zzhoO9gn3JKn2CAzwjyUsT1OKTnuPBQcGhFGfagiMoTvT3XwyOCo4NTvAmgkWBhuCU4DSe175WtlZwenBmcHbAE5wTnE8eSpGDPNKGD7RRrCoQCdK4MLiEdHG0gwdDElEGHtzqLQwu95wNrvLqwbV0Zx3JJag9i4PriQoHtgY3evv45gQWB7cEtwV3BfdwFExHsuB+7zKOdIFlvi2+LcFDwcMU52ZIrAseC57k2rim4BmySCtHM8KLg63BC8HLtma77YCnObBVIhdiV4Nvv50dPOYba8e4JXYPGifyHfq9t92P/UeKr5Xa3d/O55hkDw4Mt4f5hnrK7JHkV6epltPBURQt6uzRvlx7nD2R7hTbU8kzZthltjtYFCyyK3wDPHW+Ed7Fnka70ltqV9lzg1vsGhpFjuz9aU1IeqvtRd7Fdq29IlBo19HsaQ72tet9ReSXJTRiJ+wamsHlFLOmeJrtDfYmu9G7z95uN9l77QOeJm+D3WwfsclS9in7rH3OW25fJK3ldltI904izSXBhfZUb3mwKOQJ2aFwKBHqGepDbRxCuhso1peH+ocKQkM8zaHh3v6hQppLZd7ToTH0zGkan2RovHdfcFRoEo1RKfnIKF+rPcxbEigIlYRKQ5PIDutC5aEZoVmB/qHq0LzQgtDi0LLQylC1bwBd1wTGh9aFGkh6M7W2X2hraKdvdmh3aF/oYOhde693mY/eupITUvT+afbhfaPZJ7ma3gluxR5yi8ZZf0dBz0vu4LcE5hghvKl8KfkCv4WAHg6cpLdwehuDHoex62aW0c8xTe/yLLMS2n6Pu+t4N2s1Q96Fu/Vci6Ez7f4UOBsh74H8m3zXdQF0bRI5A5CZkHyVd8JMW/IWtQS4H3CNcLgl5lxom41+LQc9FP0qBWcDODvRr/fx1NPoUTVq7IW+rEFf9kGyAvxytGQRavfJOxzrtApwdzfwKrR8HegxkD+K9kwHZ5vUi2dzwd8DDkbEdRg2Ga1qjEP/C5zDJH1He05DMoYW/jBJb7HaLsZGT8h0T/G/o8znerUP0c4Z0HZU9Z05M6HnGGROMzaGgz4G/lq8d2xCLXNRyykZBeDBkK9mvtEGzkT0MT/Zhpy6NrYb8CLGrrPAJ8DJg8xp0NngbwPnfXDGAQ8Ffzdj48uwwCCM1160rQq1l6HeE/AcEz3qK/6TurP9HW0LWpXNtCeXcVaR+Crbyh3DU6eZtkZBJgBOsXgvP2vmiQb2N9cC6CxKcl5NBdq5AbQv+U32sSRnquQAj8NTe2HDr4AuZUnXBTyVD/oiJPdCQy3oxeAfRt8PgN8HnA9wdyk4R6FtKTi3QvIvjOkdH/4AC4xGy8eiF39AG07wuLvhjfpy7q/ZwpjsswN92YH5/gJayPJJaBigxnQHNNTjfwh5/oYxIl/D3aHAp+A5zdB5SFlM7MBtLkQvTsBKueAHgYsgWaFqbIM3tsGrz8NDRJIt1oNpih7nEQdYZgpwLTjfhGQCdSUgeRBP7YXMKuVjfPcSvGgeY1dSxbo4+JizGP1hMsclyrEvyRu6estupbdonrmEs/LgUYghxhk8Ow0Ycc/cDPuf43qNDcnfYS6cx1xgX5qoYtF5+LnYmVt+CH0Rr1sEy5yFzCvgV6AXo0HfBv469O4w6I3gj0q+i1GuBz0Tlj/P/0aOGsepyFPA/9KGUWvE6P8SfPRIfwvP7sRYz5ARZxmaNcizQu/k3zTWiA+wDbUVLENRaAd0smSuxGQVt+Po6Q70lHU2wlZhpt29YNXZqKUObauDhglq7rOeEnhgb+CpaEOLiuGMi6D/gMTG5EqMbAHWghVoSQHkNawarLOGZLlV0zBTpvEIpu4gehLG+ixkZkpsRzsXi/X0dzCXd8BLuV9NslZC8jHwJ6KPyxHDJ4DTC6uD2HkDsAd3e6K/I9HT48BLgNuguRCjPwK4F0Yqnc+Wzflswd3Bt7X/zWf7n/PvO7TGOUWay5lCV/JXZ7rZzZniTLshmE4wk2D2dWCOgvkKFt4gLCFY3gWsUrCWYP0NwkaCLQq2KdilYI+67ic4RHCY4FgXcJLgzA1AK8EFgssC3cii3dzXAvrWAboFOkD2J4AYQY8uoHcXehn6dYD8G4TBBMMIRl4HRisYp2DiDUIxwdQuoExBBUHlDUIVwVwFNQoWKahV1xUEdQT1BBu6gE0EjTcA25WOJgV7CQ50gOYu4EgHOP4J4BTB2S7gHMHFLqCtA9TdGGTrBB41P7oAvpdtE4QVnbhB6EnQpwvwKOhPUHCDMIRgeAYUZkBaZoy6jieYRFCSUVcmlKpr+Q3ADIJZHZ6v7gDzugB+dgHBYoJl6rryOu25HqwhWNcFNBBs7gK2doCdGbE7M96mY6WKY9m7nfb4kr3PuTZ+pH0kc1zT9k7b6GBGm9+9tk3t8SQzBqTnr5pbvGakfT776LU+zfXw/ewTBKcJWiRG8PqSfV743KfsSwRJia85poM4meMjcGQNyMlVsZ37S/6ek+e0x+ecXgR9pb85A8QOOYMcxEvWyZAzlGAEwSiCsQQTCIoI0vZV9uRnsU6m17BtGXZmPdNEB9/LIbmcmapdHcepwxi1rynpcUrK2pgzW7VtTsbzZ6Qv+H22rHno23zFm5kBc7qAjuvyqi5gfcb6mrnGpuFwBnRcX9Pr5X9lnYw5166FvZ2ra2DGetceswhyFqorj/lyxaf4kcN2pD1GDvUpZ6Piz5P1A/N2p8ynHNpT5GyTWJSzS82L9DxIx0Vd9CDOFWbMkaTELTyvYmCnudVxXqXjS3puJVX796gx35/xfLnMtxza1+QclnbnkK1zTqoYPk/1gXwjp1U993Hxp2Mc70om3eau4nEaSjLgenV9XDxd3AE6xsnMWNngXI2RmfHQo55dp2IT24BidA7t4XIuC/Dehseb9zRhTfEoZoXJR8PsW2r/EiYfDMdUHKN9R5h9cIPEszD5Ybjf1T1BOF/FsyNq30BxLjxY1ugw7bHCVGd4NAHXyXVRHWGug/ZD4QoVP9PxkuPkYOfqvqnmahyFLqUDbaxU8XJDF3G4Qwxu38OoOMy6eD8WrnKw3wnPzXi+UfUnX+yFfRb1LVyjeMMyYHQX0HEvWNYFKLt22teloT4DNnSA9B7tv7I3O+Vcu/8651zdd2XuscrUs2czbNJhbvH8Cy/qPK/CtVf3WGHap4brJBal5cL14tfhDeJP7XFslcwr9j9caQ8bblQ07VPDTQKZ8y28V2JE+IDyz2an8z6GIHxEwWgBzD2KW+Hj6nrq6hzEnKB+h89lzD+aV+GLMt/CZJ8IxcOIR9aeNKDPJ8VO3OcI7S0jYaWb4kckofqp5CMUfyIUfyK0X4wUSCyKUAyOUHsiLD9G1j8G9Jf2BBHaA0Z4D8j1l4if8loYob1fhOwQmSH2itDeLkL95veEyDyxU2SByEeojxHau0VWOtgDcvxPx+YI9TeyTgHzwuLbkQaxe4TsENkqfhbZKXbkcYzsVvf2KR0HJZZHaN8Uob1PhNtO+5wIzdsI7W8itK+JJMW+uaaKY9T/XJ+6OuIPubS/yaU9TS7tZXL7ZvhPT9kP5NK+Jpf2NLlDFV/F3Fza0+SOEv08T3Jpb5NLe5vcoqu+2v4eoNYopnOniEzuNOEhE20PYR+wZi4EzX/tAVlpmoaTn5ITJJlokoMmeWfINVNZZsgsk5wyySOT3DHJGpNMMckRk7wwlRGGfArJ/5LML8n5UtlekuEluV3I8ZFMLsnhkuwtyduSLC3JzJJsLMnDktwrlXWFTCvJsZLsKsmrUhlVkoEiWVRyplcypyRnCnkrkiclGVKSGyVZUSofSjKhcG5Wsp8k70llPEmuk2Q5Ib9JMpskp0llM0kek5yOhq0ka0nylVSmkuQo4WSv5CWpjCTJQkL+kWQeSc6RZBtJhpHkFklWkeQTSSaRZA9J3pBkDEmukMoSkvwgnO+VnCDJBpI8IMkAUrk/kvUjp9NhMcnxUdk9ktcjGT3iIZLFg/wdlbmDnB3Jx1E5OJJ9I5l6kmuDLBvJr7FwQlvl1CCbRvJoJINGcmcka0byZVSmDJ7y4K7kxUhGjOTCqCwY5L9InotkuEhui2S1qHwWyWTByX/JT5HMFMlJkWwUyUORDBTJPZGsE8k3kRwTyS6RvBLJKFG5JDJrYAHJHJHcEMkKUfkgyARROSA4t6+rXA/UKxmaOHet8jsks0NyOiSbA3kcksEhuRsqawNtk0wNydGQ7AzJy1AZGZKLgfwLybxQOReSbSH5C8iwULkVyKqQfArJpJAcCpU9gbwJlTEhuRKSWSn5Eahd5URINoR4mpy0l9wHjKDkO6hMB4yaZDdIXoNkNEgug8pikFw/zA7JWVDZCpJLKBkK0CZZCZKPIJkIKgdBsg+QXyAZByrXANaT/ALJLJCcAskmkDwCySCQ3AGVNYB8AckUkBwBlR2AvACVESC5AJIFgGgmJ//lzL867S/n/CUCwN/kVL+c55eT/HKGX07vq3P7OLEvZ/XllL4W0Nbz/0YYSU3X4q5zrr9qmutD10VNd112faSZrpROC4Vu6W7No/v1gObTHb2bFtAjeq5m6wm9u+bovfS/07L1vvpntbC+Wl+t5Rqjja9pUavSeliL2z3tm7Xu9kC7UPsH+x67XLvVrrAf0r5iz7K/q91mz7Uf0+6wa+wntW/YS+0d2p32m/YubZ69z35fm2+32hepff//tuwVWld7EPQm6EeQTzCYYFjGdSTBaIJxBBMJigmmEpQRVBBUElQRzCWoIVhEUEuwgqCOoJ5gg4JNBI0E2wmaCPYSHCBoJjhCcJzglKrz7HWu59T1opJv0zRLF77lIbBV286qK/XBChMkCHoKv/3ah6C/tJVPSaT7bA0hGE5QSDBG9FjjpT5rEkEJQanilxPMIJgleq1qgnkECwgWEywjWEmwhmAdQYO6bs64puW3EuxU1zXquZ0Z93cT7CM4SPAuwVGCE1evbBfrNEHLJ7imbXGe4JLY8pNcYZPMK/mJlRT9GCfFR30ZwGcj3L6rV4zlcaWXp4ZDkKvGm/juvKtXdy+CvtorxkxjtjHHmG8sNJYAlhurjLXGemOjscXYZuwy9hj7jUPGYeOYcdI4Y7QaF4zLxmVTM91mwMw2Y2YPs7fZz8w3B5vDzJGA0eY4/D6RSrE5laDMrDArzSpzrrHNrDEOmYvMWnMFoM6sNzeYm8xGc7vZZO41D5jN5hH6/bh5yjxrnjMvmm2Wbnks2wpbCaun1cfqbxVYQ6zhVqE1xhpvTbJKrFKr3JphzcL94Va1Nc9aYC22llkrrTXWOqsBsNnaau3sEnZb+6yDxnLrXVWOUumKPkHltNVinSf6kipJt8ng9lFxqOS689y93H3dAwCD3EM1V3IyvsZczN9STvpB+0CrrzSDHkjRwZUcxN/+J34p+M+mv+GcLLBeBT0atDx7M+jxePZzhAeAP4i/gU16+NkC6C8xBzK2JuN7FNVEh/kr78mw9R3CWyDzHNd7BfSVN9GG+eDfD1q+KT0Q9CBprcLVwA9BhnRe+YN5E+ETqkc34e5ktEq+R/0F9Os+tLycaeMIaA/uanjqRXAewLO3gRMCfSuefQTaQmjJrcAWZAZDpoxwPuh80AXmUPCngx4MDeADD8TdAty9xfwiY+t+tGQoJJkeyBlAJCN2WAxtO6FtNOjnIMn4cxSbWUawfIt7AmSmQf9W6GfLTOa/E5Us5r8dl8RfqU36QN8M+mbQA/mvUSUH8d+mI/5M8BtA3821899sIfpt0K2gW5jOiuHZ7ewP4A/iv95Ael5CLz6EJ3D7S/jr35rGfzcvGea/UJoM819MTW5xV7A/ZD3O/sD0lTeZTs53/5D9Iesc63efYpz1F9Dvsf6sM6A/Ai0ydwAPhOS3gKexh3DbrpyQNrufhXw9aHnqLNp8Afze4DuMs0agdwOA/4L+1uBuI3AW+LdAciTqagF/P3QWgCOeIJzLuDsZ8otQ435Y6TLwY6j9S5CED2exZD7ofNAF7n3gXwJ9E/QIvw9aMgn0Z0HfBT2/YezJAg2f93hwdzI434e2N9hDoOEWaLgZ9M2gB/LfMSP5X4HOBY7gqa+gzQVocylGeTV6+iHuom3u9eDcDfw28AXcjbLfZr0CejN07gItfv4a8NPgN4JuBv0BPPkdtHYhdo80m7QmF0Ue7SZrlPVV66d2D7vA/oo9yv6aPca+zR5r326Pt++wJ9jfsCfad9qT7G/aRfZddrE92S6x77an2t+yS+377On2/Xal/bBdbT9qz7G/Z8+3n7B32m/ZLf+Nmm/iI4YKAgTZCmIKemTQDLTLc/VTNMvlK3qwgmEKaNV20Y7PRSs5nwdzFSvZqUqeeWUZv1eoa6WCqow656rfa6i1x6ic1M5ordoFZNQyvuDSrvnqO4p2rP3r79muYcTHF+BJVr7/Ll+Ad7sq6FrJ45qiyKsZqV+Afpn9Brgg9QLozwJz3MlXd18Erod8NWjBMeCl4Muzm0BvgraNwL8D53egj0CG+QPxV7GMKynQmIH8d6CSN1/5E0tewazmvz9FHI7LA6+8ye0RTvIx4J7AeAoabr6yB5J49grmz5XVoE9B589AHwbdiruITVd+C84foYdiirZI48PII1y2axuVJir7XIf1ZcZxo8V0WyOMFqPFGk37kdHWNHqzqKYy311otLgnUCl2F1sjrBH8FF+tSpGlu8X0/HF+VgpxWQeXafQem35+QrsWGilthHGnUWTcZUw27jYqjWedic49zjSn3KlwHnBmOA86M53ZziNOlfNdp9r5njPXedyZ7zzh1DhPOv/kLHS+7yxynnJ+4Cxxap1lztPOM84KZ7WzxnnOWeu86DQ4LzkbnZedTc4rzmbnNafRed15w9nu7HB2Om86u5y3nCZnt5bnTEsdTB10pqcOpQ459wPPTG1JbXEeSb2Xes+pSr2Wes35XmpVapXzGPjzgOenNqc2O08AL4FMLfQ8jbvPgV4L/AJ0bgL/FeDNwK9B/zbQ26FnB/BO4DeBdwHvZv2aS1rBV60vFd0ph4b1jLX/Y9yZmpqa6tyTOpA64NyLmsuA7wN+AHgG8EPAlcCzgb8LXA38OHAN8JPAS4GXAz8DvAJ4NepaA/w8OPXALwI3AL8EvAW4EfgN4LeAmxhrtzilqe+lvkdtr0vVOdO4d9SDn6Z+Sj1gXK711HpSP5ienmpNtdI4MX4AnBnAD6qeMV0J/DA4s1QvmfOI6ivT1cCPgjNH9Zs5NcBPAteiJUtBL1M2YPoZ4BXAP0LL64BXo/1rgJ/Ds2uBn4dkPfB69OUFtP9FcBqAXwLeiFpeBn5VWY75ryn7Mf0T0FuVLZnzFnATY0037qRVLGA8mzpC0cg0bucWkG98MfVFozK1PrXemagNoDKI7vTQetCdn6d+bhQB38WY7vfR+tAokBSNwsXURRoFxuXg3Af6AeAZwA+mLqQukOWZrgR+GJxZwLPBqdJ8mo8sz3Q18KO4Owf4cXBqgJ8EXgL5WtS4FJxlkFwO+hngFcDPQWYt8PPg1AOvB+dF0A3ALwFvhJ6XgV8F3gJ+I/BPwNkK/AY4bwE3Ae/mVmkushnNSv53ztTrqdc1g36fnppOvz2Xeo6sN5QKjULqZ6mf0W95VOgJ7dNU+MnbU7drPem6PbWdrE6eQlZnXJlqSbWQfFgLk9W5/jLg+4AfAJ6hLM24UlmX8XeBq5UtGdcAPwm8VFmO8TPAK4CfB64HfhG4AfglZRXGjcoSjN8CbmJM/atUvtKbCvfrROoERSbpr+4eyyuMe43Hp0W0HO2/88eg0uEn9VHqo0+sx0+Fn/331L9ruVpuVyK4dyM/AZxzlh8La63G851HuF0XxezUv6X+DfSvUr+6XrtTT6WeSrcn9TIVmsGpN1JvcL95Trff+3Xq17j+PvX79od5leiqHyepkD9fw/ta6ms31Df+obiBuK30X6OrQCvoKNupLR3bRT4PPRyxMtu0P7W/nf4F7eZUXalTqVPpflyviZm27nTvl6lfXu/eNT882zs+yz9/Tv25/XdqS+po6ug1MslUsp3+j9R/4FpPu8tbqLDtaLw5cqTeSiG6cPTQ7qZCKwPPKsizv6TtmqDSVT/+Vv9pz/Fx3cOugq88lh3v0a7kmt/ZXynq/S29qRdpH019AP1jKmqcPk43ftJ+kpZhX7iTSsefrny6w7NaoVZ4ja4PUh9oXipdteUnqZ90xW//yZzLaV0deO33OAbeyI/JZ+Q18S/l+3/rp+NcxU9Xz12nXV3qVPMDuvOp/A2ZLu+9k3rnhupRc4N1cfzENT0neBX9uB9dC9IbwmQK9FOMuzXTmep8W3M79zn3aTa9JVRqIec7zhwtl94NntJ60LvACq2/s9Kp1wY765wfa1+i94DN2pdp99+k3ebsphX8LtI4jN85aI9UbBST9smk3SbtU4i+m+qwqY5v0VpW6pRqBr2P3KNl0TvJNKr7XqdM8zjfphbkoAU51IIKWq/pXYXuPug8qHnpjWUm7VweopblUMu+Q3i2M5v4jziPUFuraCek89uMZjmPUrv91O65WrbzmDOPND/uPE566A1Hc/gdR+vmLHAWkAZ616Fa6G2Hev4U9TNM/fwB4SW0T9KdHzo/pNbW0m7JdJY6S0nPMmcZ1fi08zS1ZLmznDQ84zxDd1eQdbqRdfgd4kdOHfWO3paod/S+RHefJ6t5YLUcstpLxKG3J9KziSzoIwu+Ru1vdBqp5T9xtlLLX3dep5Zvc7bRU284b5D8dmcXtZzeq6gWtrVOZThs7YOt/bB1ALb2w9aBTrZ2Z9g6i94Ey6kOtnWWM925n1rAFu8Gi2fB4h5Y3AuLZzkPO7OIwxbPgsWDGRbPgsU9sLgDi3th8SxY3IbFs+itciHpZ1tbsHU32LrbdWydBVt7YGsv2XoFcTra151h3yxnPe1Ms50XnBeoLxucDaSZbZ0FW3tga6/zqvMq0VucLcRnuwdh9yzY3QO7O7C7F3bPgt1t2D1L2T39paRBtBd1UWsmEA5ZXrLkQ+SVVfQuvYT6Ukt94Pfm5fzmjG8c9dFCBP1pDe+pDdGGExRqY7Tx2iStRCvVyrUZ6a9B6fdyppo+HjRy0fTPM0f7O9Dj+F8wXMifloxqHTnTkvcmudEuyZD+HGNqbS+KiQu0Jmq74XzZuU3TnHHOHdTDu527tSBxHctrUQQnf5kKf7mXRuPbznSyboXzAPnng85D5E0POw8jInyXLPSo86gWoZ4+RtHhcWe+FqcRrtG605z6f+x9D5wUxbVu9b+Z3WV2p6dnprd7VURCEBF5iIiIhCASJEgQV1wREQlRVAREQgghSAjhGuQSJECQiwQJEEKQRxB5PLIirIgEUZHL5RIuQa7yDBIfGlRC0LAz76uveobZZYFFcOPymP6dU6frf1edOnW6q+bUJLz1S0lxqT3HXiSuQJ+8hJYqgrBZK/QckPdaNZD+Rg5Iv176JH2qPlOfo8/XF+vL9JX6Gn2dvlHfom/Td+p79H36Af1D/bD+GZQ2ecKmY3hGQ6OJ0dxoZbQ1OhidjW5GT6M3xsgAY5AxxBiRDR9tjDMmGpONacYsY66xwFhiLDdWGeVGhbHJeN3Ybuwy9hrvGu8bh4wjxjFTN/PMIjNhlpiNzKZmC7O12c7saCw3u5jdzV5mmdnPHGg+aA4zR5pjzPHm4+YUc7rxrjnbnGcuQv1wmUvNFfoyc7W51tyAmJvNreYOc7f5NkL2mwfNj0/mZss5aqYs0yqwbMu1LrYaW82sllYbo5XV3upkdbV6yHytUquP1d+6T59qDbaGW6Ossfo2a4I1yZpqzbTmWPOtxdaybPtVb8dq7ZlxrZXWGmO0tS7TvtZGa4s+wdqWaUdrp7XH2mcdsD5E7Q5bn2XDM+0buCERCoUiISfb3tXaPeSFGoaaGA0zbqbc6u0u2yXUPNQq1DbUIdQ51C3b7idp71DPUO9Q39CAbLsHbsY/6w4KDUHOIzL9YuwNyZqXZ0elGmVPEdscWb8gzf/Kaxyn4k1i/q9XW0pMe2Dil8SN6XMZ6aeJpZ6hpf+N+fN/29p0+j9Bf/6HWDtCPJz+fyHm//jFr4kvZUzaV0irGvJ/8II2D9L/Rdyf+StrChMY+g/i8fR5i/hO+mwjvoP4r8T3Mwf+Yz71bca8nf78r7DgP+aprQT/Oxeq/kn6K6tmtFigTSKmvQfB/9Br6v/WI+hDuwuCz5imXYQULUBUPiPxMf67WvDf1YJ2C9J/Ih7A/A3m8xhD2Vbih/RhWs2nTzHpn5KuZNpDLOVT+r9IfB1DVxBfS8z/Sac7MyZ9KmnxQnuUofyfd5o9EthvYztru+hPiwvKhpy2jvFp6UHZIdD4T2KarZBfjCXNfxiLfyGmPQmd/z7X9hHfTf+3KdWVXTrmqf0vYlqM0NW/k/mfbO1HxKpu32FaZdFB9eCNpFcyvrIH0JD+/Oe3wfoY5CKNfBJYyFDcS77VGhGz1zRyiNhLzLI0ZQ1iFH34j3OtkDTbP81n1G6hzyvEzC1Nftbeoc8O4ruIySc8B1lL03JG6ruM+S36/4G4OzEtiKQbMJQ5a7RoIshR4mt8ipvp/xIx7UOI9fQnn2gz6PNzYqmfk7dES4BDOfBdOZ/aTewr7Jb2tXZb+zq7nX293d7+mn27fXeV+bVnML8WBHm0Qqh8r5C5jDxlLngO5HJzlXTtziCd1Em6n1XqblkdZ5QYS58edaIlyFougUaUe6b1psDqo3Sl3cdN4LRNVU+4lmE823lTcB3SSphKxa9ACPIDz5ZjpFRoLcQmrbWyCSle19ohpry2a93FLq2X1iuwLCnzLsvmXaT1IySQ167MjCCeJVaj+7fELxDTQoz4gJicJjgXpH+Sw42/IR5LTCsIgexV/K/GzlDi+cRK2lNSicuZm5LA9xK/TO5Vcpv8L54npkxLK1rNKeuzXC371+OzfC/oY4kHVOGctkG4Dh27iQ1JCF65Hb12t32PaGRPsadAJz0xbWu48ttZu8+Vug20VY9X+8+VvjnitwpG2qhgTPYIxmQBx2SDGlIlELMEkkilyg2XeFHOk7XDk3XM5l67muXmceqSFp6Dkhae0MO55cwJQruxl3ryzeJ0JdS2FbsHfdcrGM3nJlf5xbuEV2nAkecmX8Wn7c6qNxW3tgd0OutcZD5nk0vboJ06ADqfg3xkTmeTTzsR4prFxWjhi/G2+/lzOpueWnhOemrhOempheeop6rn83l7auE566mFNcwbtc1hTo3zxpmmrj5vnGn6+Yg/Lpg3vg86Fug7UtPRqOlY1HTyqek0oKZTRE0nSk0nQU0nSU3Ho6ZTQk3nIn7rapjVdxZS33lWXGP/T2g916O8qN3UvtxuZje3r7T/h3213ca+we5of93ubPez75HnlbOuRqBtGHhvm4tWqut6nro1z+QZKtBTE3DNC2an+vkUPcmtvQNu/X4tUtd2XhpCTm6Dd56ybPucTa1rW+6wQJq0xbtCnzotuS2lRodat+SJo7c3e6O16HtO6n1i/mWBdGkj+n1BJbTjE3QMpO+ZtULV2bIs4B/5Xfnc1rVqOX2y/CJPBPgiSzr7tllYR22zsM7aZmHOjDAXc0L9nxHmAerzjLABfS5Pr5gPKKnHzyHnnzboiX/O/NMWUNfzz/BA/20HGHWO5pDali1nrtYYvV/szCX784uauY7LuhJIuy+uDJX/feeIN6rL0weCkvqSFyQnDBCDznmvVC2rnwhzh017gFwDPtc9VLW0smBc141ekOmtL7KkvjnjdgD/X/LFlfVFt97COmu9hXXYerIs9RWSK1+B9paJc4eQKw0dMQqWaCHQxfZXc/JvgRJaoYzW9jUspwNLuhFl3ZGVsZnZtb/dX5aJUnXOtAZn2jBn2gacaQs509qcaWOcaV3OtMWcaUs4017MmfYSzrGNuDbRnGsT18oVRHneWA0QClwzcA2AnhOem846SR63maPMseYEwCRQU82Z5hxzPmAxqGXmSnONuQ6wEdQWc5u509wD2AfqgPmhedj8zDxsCStkRSzH8qyGgCagmlutrLZWB0BnUN2snsC9AX0BA6xB1hBrBGA0Yo6Dz0RrMmAaY86y5loLAEtALa+WzrFWWeWACpawyXrd2g7YBWqv9a71vnXIOmIesI6FdKtVKC9UBEjIPEMloUahpoAWoFpXzTPUzhod6gjoEuoe6hUqC/ULDQQ8CGpYaGRoTGh8aIw1AtTjoSmh6aHZgHmhRdb7oaWhFaHVgLWhDaHNoa2hHaHdgLdB7Q8dDH0cOgpIhQ6GTZTSJFwAsPl8Tti1ygF8hvDF4cbhZoCWoNqE21sTw50AXcPtwz2sVuHScJ9wqTmH6Wp9V7XW4f7h+8KDAcNBjULpY8MTAJNUH4WnhmcCVC6bwvPDiwHLVHuGV4bXWEfC61R7hjeGtwC2yZjhneE94X2AAzKX0KLwh+HDgM9krc2VeSIvBIicyC95Tp6X1zDPM/flNclrXpV7gjOi2qrToaryUnAqVF+rSd4gWWueCzUkb7SsS3AS1ER5DpS1K2+uNSBvAWAJQJ7/NCuvnGc8vW6N4+lOewE8ywnc1TbvCOCY5LOq6arxWbW7fD28TJ7udCIPBuc9JeRJT+DWKhypznji2U7yFKcqd6GSPJFfBugn+fOUHDmFJz4NzB+meNBclj8SMEbyYHCa0+OhtfnT82efyIP58wCLaubB/KXhxqHV5EF5J89wWivv8jdI/szfHG6ZvzV/B8N2yzOaMmH5S/MPhlYzrD1PafoYPAIukOc0hTsBuhYUgJPfLbALXOtIwcWyJUSVFUydK/gm96UYan+CWsfkjovgnAq170Xt4vg0eO+U/sou+3jS3BehbWUo10M1rqQbDzGUJypovxfZtcjgfDyeraF9k/4sV/6HUQSrqBpPezBYt2DvhFoz5eqqfiVDuU9Gn8VQ7u4QD5Cmj9p1EKyNch+LxjMidO5jUafqaVfQpxfbIZ+0Wm/l6q06kcPknhb9Ocb/d2Jawde5R0LtC1LrvGrnicGzBNV+Bq1c4hTrpvbpGdyro3OXS5onq4hf0Yf7iMwS0qvpr9q/E/2VbX76aDyNRHyPPqpctaeIK8sad6eo9WWdbWteTZqrxmr/iVp31rk3xuC+Go0nkKidIdrf6c8dEbraSbiNWK01f8RQ7vzR2dpq5VrtJlLr15raN8Ie1P43MXf+qHVtdWqHwdKDvUncw2N8Qp8n6ZOzAq6z3UzuDDHU7o4VDGVPmdylo3MXSrArRp1go/aHcN1c38KYbHODO7I0deKBOs2A+0nUmTY6+91ivxs8y0Xn/h+THG5wN4s6XcRk2+p/JubZAuoUEYP7doTaeUVty+Sqvc7W03lyizqPxVS7fbirx1BPylGTJj9gBG2Hv+L530panVGZVvtY2jJU7czhnh+MIPio/VRq95e2iXHUHoMhktbJCcHpDQvor/bGXClDTe7j0rm3DaNM5sYRraXow11hascURpk8iaJ3EFOe1/FcQH8IrPZfPcLcuMMt2OvF3QhqP5upRgFlgtpHpFFupNUoe4Y1V3ul1M63pdIn/bw4BB9KAHUSjq54j7teEfohuRTY/ApD1Q4fwfjkFp07oAzFIWqvhRFwtSxxb8DPsrU5mgzuQVJnB5lMFaLc0zk6zOkBl8rW+FNAyzpwz1XoesbkDj2TUiI4W4k77sxejM99WZA/srU5CtTuOIPyjSdyGNB1J3B1SklHAbdu9uQY0Mk72DeK3C9Eo0RmR9QP6qgWuqxFUPpMlDk6WKmrm/JP/U6UW7dZcMfgcr+UtZN9VhLULBMi+7Wshv1iP6hVvrmpM+u37T9nei+Hq+Bf2Kpa7dty50yiSozaP7tcQ5Bvu+7nTF+9dleftnZXn2Xtapte7qiVO361oPQxdbp6fbwfe7AucrS6qIH8pqVqk4lTmy+iZ5s+s8syIyV/WEfySbOv4f9lx3AEaGJJnZavizD4JNMyV9il4Jbm9h32HaKF3Rc8cxXb6mpyTutsbU3oh2O5qhlorl/y+sq+HY27xfWgrooTxtQzThhbjzhh3D9plGdmLNXDy+tFD2fqnOnnFfWinzO1zoz7cXXd29RAqsqeuq/D1TkyZXwwu4wJajG2jvm+B3loBSVF7qxRN/X4vDwka22JldDOxuGS+u+yelPvkFgFrXA8r4vhu7ze1FzXQuTVd8mvss6P1VGdv3w7Nw0tTyviiNkvNM6y//+2htTmS8FBkkOayDbR5H/Z95+nrXJuduUYYn+2rc5X/jk3LWWKA+KA1lRKec0M3oovtNXJuOp4S+lotwttdSq+el+8rzWTczDmNR134y+01inmu6ZaiwucdUazoSlHY7bVLkiu2rSZpUal1jIYl9qFUVkrTsttswuyrLa8dlAclJaS5XdpLQ+5HxQTLrTb6bV8vMF61Fp1US7m1WGLnZs92oZYLdbyq8E4xN8o5tejJ1B9cHxtZDufQ+6pHid24anqknu/6L308pkyz6efd09n8gvQDn4DmosUu8W68+r5jJynk/T59nzqH687uaY5D/cTxB5RcV49oYH+253Tg/vOmx6sKkVNcuru7Eg8X5/TCjh2T8Czunj3vOHY6j2a+5xybJ6vT6r+n7hL7BWNhNylZuBuv9hwXj6rHtgXkHrnIrH0S6W11fQfo/pU34WU9/PF4qxeLC12fRlrnMsTmZaunzVfSB5Zm6PBbxCb683IrYnj5TOszWrs9f1plIa+LqsXbBRb6vXzGDlPI+n6/jxKA6/ImeWlXcH6/ETnjzRYeF5Jg4XnmTRYeJ5Jg4XnnTRQPbQOvXK8h17nv0nq1/PUpK2Z5LyN2ZF04bm+7M81gdZ3j4+srWLHefFkOq2cyH96GHD7BLZOHjsHJeZqXRdGcX16LiuYRzZlv5KdL9x+Po/jucEuak0sqMMnOlO7RwbafVHwTUjuWf4y1vR4+85hy5azvrNBja1H31Crt/vY7HNo9fYpTO52z7xRafXoK2/13sh9LxxXb5+j+huhfIeqn09ioD825PRI/XsTrCq1THLYhuxIqe/PYwWcltG2tHr4Zlu9h6pqj+Pr/ROdqDdK/ao+P5O05NYC+U7j+CniSTNXnXDWTKfgpJw6OXNO2goCaIF7KsiN00vrpvXUemt9tQHaIG2INkIbrY3TJmqTtWnaLG2utkBboi3XVmnlvK/QNmmva9u1Xdpe7V3tfe2QdkQ7put6nl6kJ/QSvZHeVG+ht9bb6R31Lnp3vZdepvfTB+oP6sO0vfpIfYw+Xn9cn1IFGunT9dn6PH2RvlRfoa/W1+obEHezvlXfoe/W39b36wf1j/WjrF+mjpl6AvSUYWoTjQLDNlxZR+Nio7HRzGiJ+zasL8Bob3RivYO6G12NHhKQtlTPM/qw7o8b/Y37jMGsO+ttDJf1NkYZY2XdJUiaMMGYJJ/FmGrMFIF9KWVZylDWcXgSmqEsMH1Mmqc2aco61FeIBxCr+LTEY/AULGXtSVMWpHoQpxmnF+PwX8D6V0n/hKG0cGPwjCllFUmn/RtN5a9OyqKlJYOWqPROpP9V4jRzU+ewaa0YSitEOnNTFnq090izRO1V0v+HcXiil6HOleK5Z7o63YsWbpRtGP1WxqG9JZ3/ZDfiEpu0EKOsZBnK/o2yE8NaGeqMrxWMOZE+fAozRn9aRTJpn0ZZ9zHeJla2o2iXyKRVJGM7aZ6LpR8iTYtN+jUMpS2cwBYRLUsp213KepamzqObwTi0cqTTbpbxM/rTTpJ2E33uIU0bQsqWksH21GnxyFBno9GKkkH7SQYtSCmbTybtgem0iGPQco+ynqVLy0PKVoacp5UljnHi+LlVOiWLitEoG+NHwJbdzf6m3d2+xb63WryG2XjjgU27i/0Nu6vdMxtLnZ4pzxTqI2o+3SsTU566JG0Ctc8Bed+pGrSnqwdWFwSfTJ09xhPgUsp6WgQlmogn7ewUZiVpTXK0phM9C4X8T7oEI/h/uoJVdHXS5XyzMfjfdQkV4NdpYhZm1wVwl8BdfhJ3VeCWn8atCNxNJ3GzJyuq8+7S7OW0spulzkXkaE3RGlOKdp4EOSdFu3QGx5cgD+saMfnTtIIW9PCk3Wi/15QcAh7oDtqt8QS0m4KevznLKT0xI97Ls6SHELQAXCEtpQ4RIwgDxGjw4EQxmW03ka0nTy+T/vIEs9pABdKtOt4aKUqPSlq/S1FaVlLiVbakD0/Aq6TFgRTtaVVy7KQoTyppI62SdvLUKXmVg0jTllslrYKlnuc4krZ+lL0YZTPmx+LUp8NlrLucaaqlnyvVs+zBZsBdOAZOFfvkYXJEybYrDUDSskX7B/fSRt7gwH+4kCfGRHgiby9geSpvLzEQuHvu2byKP4NzNdUZbhNIcxZIqzPWKCFTPEExRdtsqebEtLJWSbmdogxPDRcisC3Qjq0kWM6E0zyxDmnQie10E9/GJojZVawCTKijb0SqHieTixr0yrN5tptrSP2TWqfudlapv3lWqbufVepbzir1vTWknljr1F3OKvU3zip117NK3ZOpL6YVgkRO6trwqAi0AKUJ/Iukqr3/VLVAffwtKMJx0E8sPoM0tYvnZGXScXdsQEuJIy2xTg3uhwf0zICeA5gPkNrlMuQk5ddISIfx4nExRUyHtJgHajZ3Ga7gv1s2ZOWbsmWjrJyMJ1Zn6tJGaZpn2wbzNa2EBme00ialmrlS1N9S1CdT1EgrqXunaDGxkqkqO9CHOn/qKuJexMq/4XEJWUlJW/mBUHOWnD/kOWfdWN/HxZnbp1AnnD7K3FzOLzrc7uckP6nRSS6Wul2Pc5JjCZ/VDM5463nWeUqOTTDfJhwbd9ryLAUNM4U0j1lE0DgyFDf8jr2bF+iMIeM2406jjzHUeNQYQ3/Nuhyu4f/OX+E/F4yk43byfirz5riMxZ6MTRPCud95WOjOUGe0yI8n451FMt4l3lvcFC+Ll4neiVcSO8QdiZ2JP4v7k72SpeJ7yd7Ju8To5APJB8S45EPJh8WPkj9O/lZM8Mq918Sz/vP+8+JFf7P/qljn7/Z384T7ZkLqfy1pjc8Q1X7pdrjmpucG9VIgzw0OJQoTLYWWvD55vdDddDHq7+3x9gjNv8u/C3iYLzUA3ZAnUQpjipkQ+TxT+gv9pQenB6d2BVdHXP1w7cD1dnB9iku6Gb8FuBCvcnfl7vQSXJPTk+m/GpeMMzw1PD0yPTI373TrdOts3rKck+SdqRPzvhvXzembs2XuUFd6ADX24/VvmW5ZUw/k3ufWOxVJRaqEod50K1IV2XrPzblsXE1wZe4XB5ekg55Oh9Ih5o2rSj3gnwknRwRtkp4fXHZwzc+5nsQl3Um4pFuSLpFtKuvPe7S3dFlfmZesQ257H8El21zWSaarRV+yz2rqS9neNeWNMmudN3CNeR9IHaiS98bUxrRIi1QbXN1w4T61KLhexCXdabikm+HBJZVL0o/gGpgemBqLS+Y9G5d8HsknuiiIXwMJICgBbEqAyygBGlMCtMZInyY6J6cnF4hSbwPG+3c40odypD8ipTbSY/aNXxu/VoTibeM3gO4Q/xrojvGvg+4U7wT6xviNoDujpDBK6gL8DZSnszyd5Vksz2J5BsqbDjwDpVooFfOi97K3SeR5f0ANTNRgswj5r6IeOushZdsUSMXb8D4KyQg81BgqtFi/WD/gh2KDgYfGpM8jseHAj8XGAY+PjQeWElGDRLxfWM4gZzDk4hBniDAhHYeB/oHzMxF2nnRmAM9yZgHPdmYDz3fmA7/h7BWFzn87h0QDyNFiPNVF8YuAL4k3ApbtasfvjA8B/ZP4VOCn4wuAn42vFEXx5+PloF+L7xWR+Cfxv0MSH40fE5FEOBERYcrBaOLORB/Qdye+LfITAxMPgv5+YhzwTxNPwmdaYhro6YmZwE8lUKvEs4lloiCxPLECeGViJfALifXAsn1jifcSKCXxaeJTxKxMVAKnE2kRTl6ZvFLkU+Ymkh2SHeDTMdkRuFOyE3DnJPos2SWJPkt2TXYF7p7sDvyt5LeAb0veJvRkafIO0H2T/YXDWSKUfBizhJ4cmhyKnIclhyH00eRI4IWYN/KSS5PPCju5LLlGRJK/T64T0eT65Mvw35h8FfSW5H+KZHJn8ojIc29wvy7CbmcXdXC7uKiD28PtAXyreyvwbe7twGXuncB3uXcB3+PeA3yvey/wXHctcpCzSLT48uL2Ill8a/FA4O8XTwR+uniuMIqfKf6dyCt+p/gd0aD4o+JPwGHl3ovCAbe9DPyK9wrwZm8z8BZvC/A2b5to4G33toPe4e0A3untBN7l7QKWc1Xce8t7S7jeu967It/b7+2H/1+8vwB/4H0gHN/2HRHze/o9Rdjv5fcCLvVLgXv7vUXEL/PLRL7fx0e/c86L+g/4D4B+yH8IoQ/7DyN0qD8UPnIujPpr/XWgX/JfApajwva3+K8h5lZ/K2K+6b8Jeru/HfR/+P+BODv9naD/5P8J/nv8vSLPf88/AP+/+h+JvBK/pAQ6g655cn7VemhrRYhf1M5svizHtQIX5DLvVwTXLlwZeYb7muJCb+sKXam1jEv6PlzSlXHLcEHmS7mYjSv9gzyrxN2Kq0e6B+cESct5QJbRUDTM1mEX9WgVF7KQc1Am3bHUsdy8ZT0hY/KoOQlqTmGM+NYiznFzNfSk2yArJe+3oYZ0LTm9HdI4lC0GZMsgyJMHnAchbR6inHkYeWmBnHnEeQRxhjvDQT/qjID/d52RoL/njAL9fZSnszyT5VksT2N5OsvTWJ608lLy+eQga5lHiaZTQhmUQRbLC3OEmywvnyPK4ogq4Igq4Igq4MgxOQZC5F3Lv9+/XxSQUy1/jD8GGq2uvw3e0vUjRk/wVuJMeevc/mRvA7+VfiuLN6Y3ZjF0GDXzKn0HGhBm5SA0qjhY6VYBVql+kP5BDk+KqvRZlxuMHJVDkFtuWowPeDXDJTL6VK3LZT2VZnjSck/9vPKb3Zk/b23KVTkcTB/M+j+VfqpauSc8bw09fobtrFpSdBAdsjmo+qh2ZrlBHEXjbQdjBW/jGA0vQbrKdyMbvkXwLcVYvT15O8ZUb4wmLVmWvBNjqg9iG4hdDh3nBe8FoXtrvbWgX8Ro0r113jqErvfWY2RVeBWgX0K+JvOVo/25sxjtDrWbAmeqM1U0gI4zDfLm587PQU93poOeAa3HdGY6M+HzC+g+uvOU8xRoqQHpzr85c0A/7TwNeq4zF/QvnV+CnufMQ6pnnGfgI7Uk0/mV8yvQC5wFoKV8CVFjkvLzKyKP+lEB9aMC6kcFlD751I8KKIMi1IMKqPsUQOuZLszEjMQM6I0zofuYiV8kfiEaJGYlZoF+KvEU/GdDGzITzyWeg7/UfYoSRxNHQX+a+Az+/0gcQ5zKREo0SIqkANaSGnpCTxqgzaQFOpTEzJcMJ/NAX5NsE8hdm/pRAfWjAupHBdSPCqgfFVA/KqB+VED9qCDZHzpRlHIzTg2oIDk2ORY5Kz3o70nUKvlp8lNwxmfJY6Ark5WgU0lZt3Qyjbdg4Qphupqriwau4aJubshF3dywGwad5+aBznfzQRe4DRA/4hbCp8gtgk/UtUHHXAd03I2DTrjFoK9324O+we0gDPdr7tdAd3Q7gv46tC3L7eR2gs+N0LkM9yb3JtBS8zLcb7hdQd/s3gy6m9sN9Dfdb4Lu7nZHqlvcW+AjtTPL/Zb7LdA93dtAl7qliHM7NDXL7e32hv8d7h2gy9wy+N8J3c1y+7h94H+X2xf03W4/+N/j9ofPAHcA8Lfdb8N/oPsd0Pe50NPdQe4g0A+4g0Gvd9cj/svuy8CvuK8Ab3I3wf9V9zXgN9w3gN903wTe5v47Qne4eNdw/+juAt7tvgUs57NCzmcxzmcxzmcx6oBR6oBR6oBR6oBR6oBh6oBR6oBR6oBR6oBRzn8R6oAx6oBR6oBR6oBR6oBRan8F1P4KqP0VcL6MUNdT82WEml2Bv96vwGiX+l0DanCm/0f/j3jr+W//bdDv+O+A/rO/H/Pre/57iHMA2pzl/8X/izD8j/1PQB/2D3N1QvCrbluhVoHkl0tNRKQ+Aj0EGofUNKRWAW1isNQnIIHGEb8hv85o8iQAW3gUgRpGeVPnOriPQY4MYh4PQZaMcX4IWQI5glG+1XkTo/xt5x2Mcr4hYpz3iQ+MfwcjfWL8ifhkjPW58Wfi8zHal2Gsr8Kb0H/iPego3n8uwhvPQIz2H+I9ZxreaX4n32IwjjclDiQOJj7AKMbYxXgshTSFJMXoehhja2fy/yb/Du5vL/ka7wd3SR7CO8Bz7ovudvTx5ejbp6Hv/6a4onhz8TuQtS+jb99Ab25HL+5E7+1G373lvY1e2+99gD7qhb7pDY28j9/P7+8PQO88BA18qP+o/13/e/I7HOu0M/FHvKfOZCuVsI15OhTgiQstFbRUXrxJ/KvVWksXrtYEuKFoWqW9Es5dF9rtFO1miKnC0+SOz5librbldBF3Qk4B3k0iTlRYTsxxRD7aMomZt9gpEYXOJc5lIuZ8xWkiXLRtU+E5VzlXC9+5xrlWNHSuc9qJy5wbnA7iK05H5+viq87NTjdxuXOL00Nc4fR0bhVXOqXOQHGVf9Q/Jjr6qRJL3CTlg5O40Fun5HJPaw7cRLQQWnCSyhPZdtMc/0LrnaL1qkvUyRdaK2itouyzfSPeFfX5cXKCtwG5bkS+m2qUrpMvSNczbMOaJO3kC5K2HvRcTVJ38gWp+zlaUq3M22IENX/1BXQQeP/BYKVkOEbACAfvtc4oZ7Qo5HdJG08zRDio6Tzu/gufdoVpgejMtSV5znqz5FXJlsmrk62LZxTPLP5F8Szvr95H3ife37y/e596//AqvZSv+bpv+WE/zy/wG/iFftS3/Zjv+HE/6Rf7nn+Rf7F/qX+Z39hv4n81ePdx+GVYcsK/fq7n+CJqpnO3qakN1j4WIfkpova/SqPyaGpManhlz8ouqQPpg+mR6YOVPVNj0i3T16QHpxanm6XL0+3S406WPrX3xJiVXSqXpBql3JReuRY5jUuXpMchd65igpbfyHucMuYOrrVmYg5mzCGV21L9UqWpQajvaq4Iz60ckpotv7CnO3NNYBJiy70AV5EXi+NevCR+SfzS+GVSI4g3jV8evyLeIt4y3io7WsqSd8rvZsmFyV8nf1P8UfHHxZ8UHy7+W/GR4mPFlcWp4rRXjrGx1nvRW+et9yq8l7hOKVfoNOQOnkQJ0CxQyiXwuTR+KfBl8cvg0yTeFPTl8ctBXxG/ArhFHDIEpbcEbhVvxdWuzDc8g9/wLPUND7VZiNBfJ38N/Jvkb4SOmh0RGuqU5he+l/jF7iLJRUKTfISwGcWzRAR89Fe8aX/kfSTC4Ce5CvU372+iAHz1d5EP3vpU6OCvfyBOpVcpLC/lpURI8prQwG0W3vvBccIEzxXgvb+B30AUgPcKRRz8FxWS++KiEByYhE+xXyxscKInYpIb4XOpf6lISJ4UUXBlE1HEcd+amlfvYMzIHVOFlJRSTg7GiBnqDEveJuUWV9J0YZ04yjGyp4vGHNlyf1YiM25qMWIz5XcLyv/Zacs3KFMEZYrNleNGZ1im+kJSkv1CMjW7PyU/mCEGOw8HJT8gNVb0W5VxXyWPJszjyeN7XDAffCch04W9Q95n3jEv7Ru+6YeyO6paShnDVNNk7rIcufIDTn4RXPxS9puM7v0VfWsE+3saBy30c/lFAi0kUz3CFSNNmEHNPGozrYMzQTNycLr895GneaC9B7zHkPuPvBnCK0mUFIurWM407+fM5XgNcnNUmrnGr98qv9OnObEWM05bi8e8H51BLWacNo2uHZI7yvWQvlhEMbfV4peezuvVgHpDYvpvDMJXZFc0s27N+ZyAJ9UQPiCHRv3Sq+SaJK7pkNRw4fNThpVXX2mB3yMnrz/XNiQVrIJwDXRjpiS422oovx1TDeC1MbtO80wQZ9fxmMfbQ4bJNJn0ak0lCLtN0WinjWo153grMvwJwFLW7Ils61Zfx7KJb5Cx1DptTtgKrhNlnm9jep+UDbE1sQohYhtiW0S+f43fXq5yixL4rhFa7Pex3ws9Vh4rR7wXYi8IM7Y2tlZYsRdjL4pQbF1snQjH1sfWi7xYBXLJRy4bkOrl2MtItTG2Ealeib2CVJtim0RB7A+xP4gGsc2xzSISezX2KlJtCUq9Ruh+G78NJPS1/rWQ1m39tpDK1/nXQX6389uJsH+9f70o8tujfnIn4CWfs34vxV5CPU5VywasZYS1LMytZey12GuYO2quaxHrGsmpa1TV1b/Bv4G7FSOQYYZoYwyT8wHekjpBw7rZuU/c4OleB3GX19G7W8z0j5bExcpgv+NWIYzOAUDWGz3pakbv4P446Ebf09K5fjX5V40/IEvL8k4E6IfGkJy0I6qlH11jXWpTz9PFO1ndhQGNypiYcz85x51WDWReswBzg3bt+SVt49y01dt4QT1q45raofNJylhyEv/TpVuepbVgJ7mc8z4jnkVMe32fVpD+HfF99OmX1eNaq5jarULuJwed/kjGBJ5FTUT6vEX8XpCnOl9jD/E6oekPWAmJUxGJ00048rtizD9o4G0K2lLm+0hTSIGrIAUaUQq0gRQIiVIvz2ss7vSugEQYQYnwOCXCIikzYsNiwyCnH409Kteo5S5guYlb/6O/1v8vfZeADC/aE8A+wIHArQpa0YenpXP9avKvGv9wDv3Z8ThyM35uvGioxjJrU5/TxTtZHUUUb5BRJ+feO+5GG1YFmVcUvRVtHrRdpv3+Ge2Y+wzV27FVPWrHmp53z0nKaFuz/2nTdcjQ+pFIp0jXSI9IaaRPpH/kvsjgyPDIKMDgyFjABN5PikyFOxMwBzA/sjiyDLAysgawOLIOsJH3WxBvcWQbYCdgT2Rf5EDkw8hhwB7AZ5EPC4WkC0ORA4WRQoe0V9hQuYAmiLsPbnOENy9sVdgWdIfCzgzvUNgtsq+wZ2Hvwr6FAwoHAXoChgBGkB4N/3GFE0lPLpxGdxZgLuL2hrsA4QsKlxQuB72qsJzhFYWbEPZ64fbCXbjfC3gd8C7gfdKH4H+k8Jiki/SiPLpFgATibodbUrirqKSoUVFT0C2KWjO8XVHHwu1FXYq6F/UqKivqB+gCGAh4kPQw+I8sGiPpwuZF4+n3OGAK4naHOx3h04tmF80DvahoKcMXFa1A2OqitYQNgM2ArcG9hB059Iai3UVv59xL2B+40v9g0ceAo0WpoqNRE1AA+mDUBrjRi0k3BjQrSkUbR1vyvg2gPaBTtCvve8D/42hptE+0FOn7A+4DDAaURocDRkXHkp4AaB/tD3cS76cCZgLmROfzfnF0EvJYFl1JWANYB9gY3EvYkkOviW6L7sy5l7AncKX/vuiB6IeAw4B90c+i+2wRPWwLOyTv7YjtRA/YHqAhoImMZzeHfytAW7uD3dnuBugJ6GD3BvQF3dcewPtB9hC4IwCjAeMAE+3J8J8GmGXPtRfYSwDLAasAc+1yQAVgE93X4bcdsCsbvsDeC3gX8D7vD9lH4B6L6bE8QBEgEdNxXwJoBGgq3VgL+LcGtMuG67GOgC6A7rzvFSsD3S82sNbwIObHkYAxsfGgHwctYXxsCvymA2YD5gEWAZbGVsRWA9YifCnirSaMx3vBCuj9K2JbATsAuwFvx/bXGvrFDtYIH8eOxlKAjx3TKZC0Y4N2pb9zceDfWNKB/0nycZo5LZ02gPaB28np6vQAlAZuJ6cP3D6478P76vH7O/c5gwHDA3cUYCxgAkCGTUK6qYCZdOc48+EuBiwDTHJWOmucdc5GwBa625ydcPcA9gHWOAecD53DzmfO4bgI3BAgAnBwj7C4F29YK2gSbx5vRWgLum28A+nO8W50ewJ6w6+tLDveV0J8gLMnPiA+iPSQ+Ai6owHj4oPgPzE+uVYwLT4rPhewALAEMC2+PL4qqEs5oAKwCvXZFJT7OmA7YBPK2BXfG38X8D7gEGBX/Ej8WEJP5AGKEjrohKThliQaJZoCWgRuLrSuwa8doCPpLvHmie6AXoAuibJEP7oDA7eM4VXjPMj7YQGMlG5iDGB84nHQU5w+ie6AXoApiemJfnRnB+50hleNM4/3wwIYKd3EIsDSxOOgVyT+H3XfAl7FVa695h7J3js7+5LMppRyEFNKU0REmiKlHMQYIydimqZIaZpipByKMSKlKU0ppSkiRYw0RkSKGC5GjCkipZGDFGkPPyKlyI/9ESPSSDEiBUpprJjsnPd7Z5KGSEv/x8t5fPK833rnW9+6X2bNWrMn22I7gN3A5the8s2xA7HDsaPAcd/tjZOX0Z0GzpO/GUvGzXi/eDjejzwjPqAPBvfwofHh8VHAGGA8MDSeS51gElAITAFKeF1GnWBWvKIP5vXwqvii+BJA3OVAbXxVfC1QG98Yb4S7Jd4c3wlsiT8f3wf3YPyleAsgbivQFj8DXIhfjJ/JUMIz7IwA3UiGC93A+Bncx0uBIrqzyRfwvo/7e8aQYGnGsGBpaBBxSFy5p8Nt530c9+uMEbAZDYzNmADkZRTALSKfmlFKd0bGbLhzgMqMBRnVwNKMmow6uKsjOzPqIzuDBRkNGU3gWzO2E7sy9mTsh3so40jGsYwTdE/BPZfRntHhAzxTB1IyjmSGgFhGTWZ/xAvbzEGZWZnZwEggx+eCccBEIN/nk33/YmAaMN23m5lZnjk3c37mQmAxsMznghXASmCNz9cDm4DNwDZgh2+3O3Nv5oHMw5lHM49nnvRxGjhAnM980+eiT7om0M8NZx53M0TvDnAHw+Zk5vlggTsUa6tSrLOasO5qwhqsieu1gmCTO9xz6SfrNrSbOwr6MXLtjke4Jq7T9ru5WEuVhkZifXUEOCbrLK6xstxJnks/WaehXd1C6KfItVsSGgc/tLNb5s5yK9x5bhWwCFgClBHL3VqfV9GdRawCX8vrjQi33G10l0t53S3QNbs73eeBfe5B9yW3xW0FF7Qh72eAC0jvYigrodwWwk4EEpGEmxgYaE0MxPoWa+HEkGARsDQxLDEiMTp4KDE6pCfGgk8I5ScmBIcl8kLFiYJwfaIoXeecLnP5VH8uljkWczznb8yZMj6k/0v/lv6bmJp5PlEabErMQB5mu8sv/xzf+wn+7/Psrt7Q5T/yvcETtxv1EyK7cpSm5dtfgSxRN0NT6fQDj5K3WN+G7Eo+INyW84xNdpv4Jn9LzU8o/5NyFuUzDDuS8QxhDC/Qvpq+T0sMjk7NKWoqKPHErx83b1Ga8Vjys+R4WjQKur4l3HqA8iuUpbSJ0DeNmnJqQuSfIqem801qLGrug/xCciI1BqWcGrSY8vXolmQu87leZNdXmJ8gNcyh1Ukbm77p9NWpSaHvK+QBSmmpls526p+mpphyOjV3kT9Mvlmk0UwNa888Tv03KOdSfom+CaZ7NTXLqLmK/PPk11B6lu9hPK+Rs72Sj1HzB/IVDDVGym68zjq5lfX8MmvyMdYJa96aQHkb67BdfJOd1EylvJn6DsYwjfwk4zlPzWdYzznU/IL2qCXdNL8M+eHOQuFsTVPqTTftkZSp6A/nfN+ZlOhjepYpua1NnhUp7aJnWXmUSyj30beL8g5q1pHfSXk3NTeSf4KySmTnceqfoaaGqeQy/n7UF1N+nfII9f1pOY+aH5JXkn+UfAblNxjzX6j/b2q+z1L/iKX+Iku0mPI8y3sLpYtSX/B976N8A5pR5n7I+q5Nwq3XRdroP9qvkqcpP0l9q9gkP0rfr1M+TvkIZIXUnlbf+WfafEpCdSJmPc36MLic+Wj6Dfb1orG/TU1EpLSdfoPVIfrkF2nzFOUGym9RDmWoH9GGXPoz5Hsh7zQx1rTm5FdZD7dS7qYsF33nWfrOk9mm02tB6WkR9oSI9RPKX1I+K7723bRny9rSi26R37pAcz1bbSnlnyk3MP799I0y/knUS09LkZGuR2Q+QYoB8nbylbT/EDlbxPgB5JzkKGlBEyNO/zl7Xa1VRI2U5efJ+ZTXUJ9NOZHyIOUgWm4UafxfxvAg9R+inv3TClK+j5I9ytLo+yXmYSrzEKNEKEM3PwZZ0TWDXGbFiuRPhEuNgf+AspC+56n/L6WZCRMzjHFzV5Vwaz7lRcmPuUPK65dL+mStjZlNOysabag3+jqlnofaGZTNlDplE6X0zHzzWyKlpXDvuEpiSC6jpomadMog9R+AfERqQ2tmKo+wHz5iPcH6f5B8GOWXKR+jHjWp1ZnZzM8s4dYNlHspsyh/QvlT2HzPXMN5TEZKVHqL9gjTilpDhSc3UF9Hnk++iPxpSrkDPmI+yXRrhdsJ8pvIvV69nvJapnUt05LR94LMw2ipp4Sba6lZSPlH6F/qZLrWX5higPI7LGM55cOMP41h1zAe+b/zLxi/oIZxWjL/nO2U/rPS/J3ILpmL7rakD99t/zvki8l0ynWcQyYwb3dxHk4X2dlFXkyZxhQHMifPiXSuZ7lcan5H/hClTcsm2pRS8yhlBjX76duf7etSPkTJvkTLs2KJu8CLIrumSb3JrKV/zx6OnGTK3RNyFfM8jnn+NHOYwjy3k/8HJeLUh5lYsZg7pT9rURNtYXzXa1+zHvIu05GZNtnO+XYJ79GO+Pp386mUt4p0ruba4xbeDV+n/g7KIvqyZmQ0aXfJXRJxfkpkh9TMOlPujw/LukVbZ0nrrGM/LxVL7QDzU2p9QnjyGfJX6buHvvdSM5i+95HvQmzpxgHG+Qfh1vWUX2e7y9z44a4QS9TB/vAA9T9krvLID9P3nHD7QWr+m2WZw9JdJDfI72MMkxmWddU5gj3tM9Q/S80c8lbyoYztG9S8LD3NPIY6t7sWSU8zvy/jzvie+HbtEL31I/ZneWf7rClf0N2QvF24zOfQ3M9R9kWZEwzOEnIvhi/nGVn5aHVSe8b3zZEixdJolRpQr1kyZiu65J2Y12x5I+Q1U2Kos6OUJcznLcznbsbZxF5azXQnUPNlygOUd4rkSDwr9x3ImZQPUB6h/BVb/5j0zOQ91PD+lbQYp07Nx3nXeJx8AOV+yg20OUdeTOnZf4NyFfuqzpiLJE6T/TD5Oa7TXueokW8qbzB/INJCe6ly9qV8s4b282g/jjV8P22uphxIzTbIr5ns1Ulv9f41yqOUv+bqdCZ9x1KTQ8lVq6z94MsS6dJvSzqbGZvMGGc7Zb26wdhJuYI5lC8xlouNlq//iZqbKMcw7DO0XMfYzrK3fI7z213CTWmFu/Q61oNorjN+znHh+T7C/PyO8gTlbErEoD1gtMsINWT9s6Lr/zD1EyK7uOa0OJatP7E+5Y4zx5sBZE6G5lnafIzzEteBdojtiBWgVmQ9x/HyXto3sh0xUvyzzflG1d90tpkSvyc+S6n4F+R3+vHGzIvqZvcu9y59WaIg8Rn9K4nPJir1dYn5iQf1ZxJHE3/Sf8zTzlIfM4DZvnsptNCcK/LeusvpL7Wv7MUX9LKp7mO39LJpvpv8XMnu7fKoQjVAXa/r1b3c+j6QuBqAJr/uuuvvf6Mee6NvPW79F6rHy5W39G3S2P42+iuF29XN9f+X+nzqvtSDqS+ltgCtQFvqmdQLQFvqxYBKPROwA4FABLADbkAFAqltgYGBIYFhgRHA6MDYwIRAXqAAKApMDZQCMwKzA3OASmABMCNQDSwFaoC6wGro6oGGHv/ZgSZgK7Cd17sCe+DuDxwKHAGOASd8LjgFnAPafd4ROBTUgRQgBMQ8u2D/4CAgK5gNjAzmwB2H64lAfnBysNjHNB/e9fTgzGA5MD04F5gPLAwuxvUyYEVwJbDGd9cHNwU3A9uCO4K7g3uDB4KHg0dT24LHA6ODJ4Ong+eBN303GTJD/YBwKCO4Eljju+tDA4KbgW2hwcHzocGhoZ4L++GhUcCY4OHQeCA3NClUCHcKUAKUhWZRXwF9RWheqAp8kSC0JDQe1wLa+37LQ7WhKthWIZxcE6KTuGm3Ctdreb0RcVRJuFAjsIW6ZmAnwj8Pdx9wEHgJcYm+BfoW2LeCtwFnEL4Z1wLa+34XkF4rbFsRTq4vAq2ik7jFLk3heq1cp9mIo1XCIQ+tyENrWiAtArhpA9OGwB0GjABGp42lfgL0E9Ly0grAi4CpaaXQ5xGevec3I2023IHAWF7PAQqok7jFrhJ8Aa+rEUcBwy0FaoC6tNVAfVpDWlPaVqAO2A7sIt8D/f60Q+RH0o7RPQGcgm093HPwP5fWHlwD3oH44B/Wwynwawdv993t5PsZB2zDobSmcIy2/WHblFaD8A3AVsYDPWwGeS79JB8IG86CPluuwyPDKXAlLl8XzgmPC09MawptQdw5QD4wWXi4ODwxPC08nXxmuJzuXGB+aAvC5IQXwn9heHF4GfiK8Er6rwmvh99i8MW+m08+jXGI7SZcb6bttvB6uCuhmxhehjiXMf0cuNN9dyXjLmbYHeC7eb0XaSxjXL4urS40HshNqwkVwp0ClABlaVupr0hrANpDVeCLUAcHwinQtxOevee3HOGrYFuFcHLtoYZurtiFMU7C2bzeiDiqJFw4q0fXDOyE/fNw9wEHgZcQl+hbEG8L7FvB24AzCN+Ma4Fn7/ldQPhW2LYinFxfBFqpk7hhh/RakR6u02zE0SrhunWovwjgoj2HwB0GjABGo21FPwH6CWiTAvAiYCrqP4JrgWfv+c1AWxbAtgDh5HoOUECdxC12O8B387oacRQwnK8Lng4fDR8HTgKnw+fDb4aPQpf03fPi39smeDptj1ynmz76hY+GzPQwkJE+ANeDgaHAcOHpo9LH0B3vu6Pof6lNLq8n+UB86YXpU4CS9AHpZaGMQF76LKAikBfKSJ+XXkV3ke/OE/8+NkuoG+Ahfbm46bXAqvS1uN6Y3pi+BWgGNqbvTH+e7j7f3Un/S20O8volHy10W4G29DPpF0KS94vhoxGFehgcPh+x6SZ997z4X2qTtoe64R5Yf8NRf8O9+osEgAjgCk8fFRlId7zvjqL/pTa5ct0nvilACeMbEhkGjPDd3hh9Gd1YYAJ5XqQAKPLd3ph6GV0pMIN8dmROpBJY4KM6sjRSA9QBq4H6SAPQFNka2Q7sCh6O7AH2hyZFDsE9EpoXOQQcAz/h45iP/eKfpiLHQms9XagR2BI5lhaInALOpQ2MtMPtSMuDmxfVqQuI283hVwm+wNctBWqAugjm3cj+tIbIIbiYu+G2I966yAkfx3zsF/9wVuRYONvTdfNwTuQUcC48MdIOtyO8GO7iqE5djrjdHH47wHf7Op9HU6IhHzGgv49BQFY0OzoSCPmIAf19DALEPyfYPzoumB2dCORHJ0eLo9Oi04GZ0fLo3Oj8KNZD0YXRxdFl0RXRldE10fXRTdHN0W3RHdHd0b10BQeih6NHo8ejJ6Ono+ejb0aTMTPWLxaOZcQG0B2M68HgQ2PDY6NiY2Lj4ebGJvXoxUZQGJsSK4mVxWbFKmLzYlWxRbElseWx2tiq2NrYxlhjbEusme5OXO8Efz62L3Yw9lKsJdYaa4ud6dGLjeBCYLas7cKbQ+OBKbGLmMM3h5qBfeAX4yotAgyL25j7NqfVA0figXgkNC+tKe7inlmOe1t5eGZ8YFzmzqb4ENyH/Lji7ltxgV/EfTMCDIsPSZuj/lknji32N1XPaSL3HB/h6WD32eFApRlzjV/Kvk/XQ8LNP3IP6LBw6zP03SOy6/P0/b1Izzc5hDsUGncojoo0dnGXJC6nEclSPsPLzou373zWWsPdq7ncyXpU9h8tniL45wq30n4p5Z8pvXOFl+k7lHwueQ59Zc/oF9z9+bXsyyP+AHk7ec/pAvh44f4u0m3MoU7Nx+n7OPkASp5hcBepmbtIzdxFarY8e5aFu0jeKdG9yVcoK1X3KdHV1F+dXC56ngCN4gnQvTyh4S65/kvZJdeneHvlsj+u6vz9cTnRLOuU885PyPmZ2pt8n+reN/d2sbl3rDZ0/qD7dFOLdp5Q/k6x2iBnkNC80b0Dq1SnnPd4O6TZspPln7kqiVk/I+2oB71UrLPcUZK9ra91foepfFCkLSemeZ111E+g5W9U98nxBovpeva2nHreSMsNYqlu5BntjZ3rVPf5bnnX+5mr6ygHU96muk98VecTqvvsVnV+mfnkOTHPa2/sXKN6znHtvJ49NdXxtT47VuU8US7nmXF5l0OeQhmgLGNJ28mLKadTPkx5M2Vez85dubdnx9Picp4Wl3unwjwzLu/yYr6K8hpKngfzLLm816lwOU+Fy3kqXP7WeTA4dwN5TlyevLfPnmC57An23oOD5WPK3+HtOTv/pnrr7Nw7n36T8qTqe3YeVm+dnXs7lX99dr5J9Zya++fl3kzC+rcnqLf2N89QtlHynNurK+5FtiSZovV+yp9SPkWbvcyPt9P3K2r2ke8gP8CwDMU90BYZv9D8G+UN1IwmH656zum9tx+8ncdOb9fyh5RbqPkk+9JBWnLUsK422C9IDTsxWso+aVROU1S5vZf8IdqzVzgfYIqsYTlZgWYdx8KrjOdn1KRxb92l5jnyhyhZ//ZC6hdS8xXKDO6ceq3GUktOvNMgaPaqS06D4DtdXXIOBM0hicH6veo+QYxKTrQoc3LWP1V6Tl16PhSVkeufKvU6K4LmUPfZJGpA2vpG+xVK6V0buD+7wV5L31covdMj60onXrAJXemE6TI71NyJvmSf+i7uU79gvEHp9VV5P6au86uU3J3n+y7ZooEUTRnlQ513su2eoOWd1D9GSb0X1uNd8n8LLvr6x5T/JoTxZBL1ZtwksyW4yGpPdvLEXd5jMArlbABSTsV+JWlpv+qUs596ia3nDYAJb539i6+eRl//hJsanlVrjzCsfzJKfkFOo7Vvy9g3PiKnF2ZM3tExPiIzPDhy2zlPztE7I3KODj6VHP3K2CZ3H7O/3HfArwWfJGeoRrWJ8hptcoZqVBvbyPvDV5PzTlPjeecOnms+yVZukzNFo030COtIbMavGUpWBdv0M8LlLmYUmv1F6lPoi7oyMyXP1tWSZzNT8gyOPFu65M3KlbyBI29WpeTNukHyZuVK3qwbJG/g/UVK3mA/T0oheTN/JnmD/YsiqW+VvFkxyZtVKXmzYpI3q1LyZm42GY/ozc2SQyvW2cD1AGdU/xyC5xZyGnHpeYb9SWp+T98OJacUA5WustREcCcSjIQiWOpFEpEPulgLKZ3fOXeU4u+kPcgvzntfy3/gGKAGK+836N5aTs44S6TUWoms6LQaQ07Ea7i6885F5hrz/qZzEfm2cIlS8bvjd6sgv5UQcrcnslQkUZV4Uj2caE78WH2HX6ZeJyci/d70kVQq1fTcPtBS+12R99ZdTn+JfWq4F894yyZ1QB+7wZdN893k50p2b5dHlYq2Sx3e63rUW27qmEvBuHAnS8316q67/v436vGSMvStx0n/OvV4ufJ298+/SqPw8vorhpvSwzdok7RirVSbpc3VFmhLtBXaaq1J26Ed0Fq0M7rS++kxfaA+VB+pj9Vz9cn6VL1ML9cr9UX6Mr1OX6tv0rfqO/W9+iG9RT+pn9MvGqYRMlxjsJFtjDbGG/lGkVFizDTmGFXGYqPGWGWsN5qMZmO3sd94yThunDIuGEkzxYyYA8wsc4Q5xpxoFphTzOnmbHOeudBcataaa8wGc4u5w9xjHjSPmifMM+ablm4FrAxrkDXMGmWNs/KsQmuaNcOqsOZb1dZya6VVbzVa26xd1j7rsHXMarPOWx22bYft/vYQe7idY0+wJ9nFdqk9y55rL7CX2Cvs1fZGe7O93X7ePmAfsVvt03a7o5x+TswZ6Ax1RjpjnVxnsjPVKXPKnUpnkbPMqXPWOpucrc5OZ69zyDmhdCfsZDgDnMFgthNAOBesvzPIyXKye3wxL9ptzhBnmDMC7Bj8s50ssPNIZbhj0neg+CtTwiHlHGecM9HJdyYrw4sLuonOOPhLKhHHRd68+AxnBHTDqBsIf4lxlDPGGY+8T3IKoaHrTHFKUI5ZTgVSm28vtBc7ZWAVqIFGZyrYDHu2PccpBpuGmlnpTAIrtKfYJViT6vYwLz8oUa490c7H6lN3Jkj6zmjxRa0ivHwOwx4nqcN3NGob4cFGIvQgKW93zsDGInSeUwCGMkrcYJJLL6z4sa68OpBcoVWkLgvBUE6nwCny61lqxavnMc6ov4q52JkG5pcdbIYzG+1ZCjYTbTrZmQtW4cxzqpxFYAucaoQX34XOYrT2CrDlTi3qFLXh1KD1K50FYCuclegj/cFqnVWSM7A6Z7VT7wwBW+Ost9vtDrC1zkankb4NTg36VxvYeoTeRN+NzhJnrX2eMdc7dfY+hl3pLLN3ga1CWxXahxlzqZNHX0l3HH1rka9R9jY/V8PsRs8X/brayxX6+PyeXDUw3U3SSky3CuNgmpeutBLTnevMdxYy3bVOP/oipH3QHuXHvMce5pcXpQJDrBI7Y16DMbGCMTdilCxheZv8utrkbEZNSz03Olv8VpCwXisgV377bkS8uaxnz3dCj29Oj+9w37eJ9Swxj2QrNMJ/qF/PTegdNn3XOzG/nhsxss/Tt76nFSZjxB9jG+Vi9B/2yus0sJ6lrrazniXsZtYzYpax4qWLmaPeK5GMFbAmzAmz7eV+nqezFTba5QgtrdBgVyG0jLxKew7aCK1gL7aXea1g19qrvFaw6xDvBDsPIRbZ650ltvTsanujs5StsNhe7SxkK3i+g+jbiHQzpMfa9Ug3gFjW25sw52EiR37X2mE8Q6O32w1ONp5zdafMXuMMtmTmKrUnOa51FGyaPcEJWQdlpMC3xNoDNhXpluJZVrfr7QbMrFu8mDHLNjDmRsy4a8Aa7CbMvrVgm1BTM62lCIuxi5lbZkJ/LgPzZySwPBm9Mudg3BdzjtM5P8EfDD4yF4Jh7DrTnZmSZ5m3HKwRnTnoVd7Yl/4KfzAZvQgPhh7nj330Zfuc3Q6Gke3PKjK6l3J+Xowe6c1I6K12UmZg+C2QmRWsHGFP2ecYdp593D7JmPPsl+wWpjvO3m8f8uYNezeebyVXs+1meyfDIl/2Ai9X9g57t5cre4vd7OVK5hWwJc5ye7KNtStyVGrn4hlUYl5sj7VrmCvMWHaKl2d7qD3cm5HsgfYQP88xe6Yfcz+7BHP8/O4ZSwtpMa0/NJjf1ClnvhZTHZqupah/0k6tMcMeDblPcTfIlp28pLwrrp5CXeBJS3xNm77PWfKma5Jvv2eJjTm8q5WhYKNP75J37QbbZ/mEJ/pDYq8vFb2z20YmU+R5RbMuyrMOakH2gF90vgD7FciLps2E6//nanA88ZipVgKWloWnsZRq4xmlvec6idkuMh9FnLd24dnIvE52ds3fdIUlb8L167uelmcs+S2DfUG9DHmt+R1odoqN8aqNJzyzuGs47O83ZVdmsRe2M0iZJU+NLO9WfvEiRUpqVMvulDGDe1SH+PuC2VIu6FmHIs1UMwfyY3zLOmjczv2SJ+XJT94qt56jfowxiPpC0cvb0dA/yBJdB7lb3vdGiSSez9L+ej+eL1OO4/vwXgyQ1lA+TZZxD+YF4+t8z1N2AmrlnVWzXt4M1GYaV1EfgCZs4GneSu2SnY/18r6f/mH5vYw5l/rPi94aLrsO9o3SCgilUzNZNFKr2npJHfr3Sa3K25L2U13Pks8nf5AxH2TMeOp1UmTnwPlQ10rya8hRRvsVeSPdrpE4wWvJpcV3mb+R2Py0dOYN+bQWdV3HJ/u/SNuxNkL6b8FflV0K46D0QHVI/ylb5DfybJ38ruwckA+RXm0Okd1N84i8oW2eFl9w0eRxP+C6pDzZ5xgvskXuhX6jeRr8j8zVs9a3wL/W9Q3mqpo1gDzYP5J3XO05si9idsj7sfbj8har2SE9xPqmvPVqh+StV/Oz8vayM48t9bL0c2Oe/I5GbdTkHdo64fpZec72fl+jvy45UZPE17hXWtlMFb35hFEvvZ18s+TESghHT/gg5G2ys2UukNMP8zraLODby1PkvX2jmjEvlV5nXEWeL/WprzMXQHYyP6WSoj6F5zODZFdYuyB1CE1/7kLdK31Sdv70pfa13MtnnFKT+i9lZxdS+Dr+2ugmxjmLcf6W5zn30v7n8r6xUSixGf/B3ywU8ldF2+Rtf2Mb+U1ynmO82CG/4LjHlNmmlWE/KrWn2lkzH5IaU62Mv0HKqFaQ75EyqgXki1nG30oZ1SZqdkjp9Nks1xmvFJJn4yrJP2QZ6192qVczlfdLztUB4fbjco5hr+d7zvdLu2gl0qYdVbLH03FBRl/ysNR51wEZfR2udoH694lGRpnaK6MM+u+JnudX2aJRD/Ed2u/JuFNlMuI0jg5tN99JniKjDKF+zdgC1M+n/kHqf8LYzkjpZMTpf5ARB34NuczYBTLitAsSJ3gtuewqKRlx2v2iRw5lX/llGWvJeqm3rtXSz/+yVdJVn5Cx1nWNjLWuR0WfPMwzGSWjKfmq8K5ZMta6ZvEkISFjTX1CfMGh6XqatVonY+0vJ6UGVJ30c9SAnD8kZMRpH2WuBsqIUxdlxHW4sk+GUsuvySJ8q/zXPIUo4xvpF2TEqTIZcVo23zPfzd983SItpX+cloq/HUiXmFOq5bzrPUOknu2QfycCN37neP+jVU7kTA3Ph0p38eiilPteV3bHNDUnvTz9C7Kn1uvrwZ+PVPA/aXzR/45wVaQ58uPI9sh/ed8SjhpRM2rxG6fyXVP/m7v8pnBl9AF+U/jr0Tp+U/i70QZ+U/i56PPRn0f3R1+I/iF6KvrH6OvRC9E3YnrMiJkxJ/aR2O2xqbE7YhWx+2OPxr4Uq499P/YMvzO8q/s76v7Xhs/Gr4pfEx8UHxy/if/j4574TO//fMRnxz8Xr4h/IX5ffH78Qfn6r3x5Pd6Y+a3MJ10l+4Va29vgjJqjvaS1aK1am3ZGu6Bd1PkIqQeAiA/XR1/dQGAIMMznfa9H+JC/0T7GAhN85PkoAIp6uVOvgNI+6M5fd75m+PnodrsxG5jju5W9sMBHtY+lPiS+GqAOWA3UAw1Ak6+XtLYC23u5u/pgTx9E9L+u1+687/dxyMcRHxLPMb9+CvyynPBdPy60oZyd+V8M41fCbuwqVf5/HlY3JmVvmSsAzBFyXnOBq4Fa0ev8v9JaPi1buBJtYdgW6ov4u+IihiqSlZOWT17gSdrcR3masob6Go9L/FrUi4fyEU/S5hH6Ps609lITZT5bqP+A/LZZ+0BSzt93e3nr4u8cqL+W8VzLUPm0z5dzCvg+z1M50S/0fSWGomRH91ygxqlpfzUX6MrydrDl28Mq6G5396g0d797Rg3grvUtMor08W+DXPXvqlotVTVYka9W9apBNamtWIvvUQfVEdWq2tQZdUFdxJRjawEtornaQG2INkwboY3WxmoTtDytQCvSpmql2gxttjZHq9QWaNXaUq1Gq9NWa/Vag9akbdW2a7u0Pdp+7ZB2RDumndBOaee0dq1D1/UUPaTLF1E3aZsh11Nu1rb1aFZoeELWlmmbIFdqa3yNqa2BrVgYWqO2RdsIzTL4bIaFoa2CrhYa+MNK4irRyiCnaCWQhRqe9rQxGp4XtVwNz5TacG0MNeMhB2vDqcEzs5YhMy9C4dlRm6dVQVaQT9EqGM8syFnkFb1sqsirqJ9Hm3lMvYKpVzD1WVohpaRexpyUMfXxzImX2zLal4m9WkP7KWKPVUUuUxf7SbSfxNzmMue56k3K85Sne8o4SR2nPCqpqMNMaxT5XsrdUgNqB2ptjMpXM6ExtRFqvCrRRl86OuWLieCV/P1+Je9W1b6mlJqh8oQlGusifV/0nqFkBNgWNbtEmqmU14lMYQy2N86SHCsv87SK8WshGQcWv6+rWTxh88a9KaeRZtgbYeRzme5wxsZx5qSQv8K0mK5RSPu9tH+VmoP05V3YPELJrz5bOeQbKZ/1UzksK21qOqjhLIU1lpRim1dSSO+rwCPgv9S3qpUxHEmPxCKZETeSiGS5QTfsRt2YG3flHZDrL3cf77lXd9+LX+fd17v3yn1X7rl97rjxqfE74tPid8ZLOPo1ZWO2eK87xH2fm+Ve6+dMWmq3nzM8qakhkUgkHukfGSH/CyJye2RK5NORqZE7ItMid0ZKIndFSiN3R6a7ITfdzXCz3XHuLW6B+0l3svspt9C91S1yb3OL3dvdKa78b4/3X3ZFIusRrEX+ISXyvuksa+rjvcr0TrX9r1xeuRcMVbYahzuVfLn6HncZ7gVfdVeoLLfW/bEaxi9XT5avDssvu5SSX3apDPlllxom31M3yv5hMN6V3SygApgHYMY0FhFaHzvTWPIOWH4F/78HapUF1yJf1aPvW55srGyK+DcVa7oZPXw2VmwerwQW+LwaWOrzmj68zuergXqfNwBNPt8KbPf5LmCPz/cDh7DeEn4MOOHrT1F/rkcvf+2+fTcXmw7v2tCNFCPk85jR3xhElmXokNnkI40cyHFvpWtMfCstI9+Y3J0WeHEPn+bHOd2YaZT38LnGfJ8vBBb7fBmwwucrgTU+Xw9s8vlmYJuxg3w3sNfXH6D+cLee7lHPnvy4b3PSvz5tnDfe9HnSNM1+wsywmQE5gHywORRy+Fvp9nDEY44yx3SnBT6+m3MGapQnT/UwpI0VlvCHIMPcy7tgFNNmJeWXuHM6snsv1WjkPgLvK8axrp9xB3Av9Q657LpeNMbJc7JK43PmID4zyxtQF+RNCT1L9Pa1sq9hj5eY7U/Ljoz9OO9qm2T3wVzA/bVNxhPCuWekib2pdR0RvdUiOwuyD2i8KBqjTZ6HjTbh0PcXacgXH1407uUbNddQviYafZ1w2ROEPCbP1fpS3In/TeJXT2FFjLzJMzx8b5cdK3mb0X5cpFUpb1jZ1xodknOR5iqpDXO/1IN1g9QDNI7sv8h+cYoucaZcJWUERxlTRvGuv0fKaJ2UMjrPSBmtk5KWlSv2Vq6UwpktZUyZIWU0/8JS38BdthuEQ48ypqyUMqY8LNK6S0qKOK+hfE00UlLEPIiSJZXSvedjTKVSLNFadZJDKa8Vk72SlBlSUmeMlDTlKiljig4p9+Vc/heG0f49rM7/nxbFSvH/WAxxd2NlPzqxN/Ez9eHE0cRRdTOfBWrdrZj/n8HML28H6omixH/ynrgI98TJslPQK76/4cvIf0NOctQUJe/q5f1/luwedzniq8Gdbeg7xG+quVhduQptpKr/aWV9N3nzntoslaVV0qb7f0z8mE9tGv8ji5I7sh4D+v/DoL0ru0FAFpANjFS6nkP0tjF8eNfjlKlPfAfkX8H/74HJQLHPp/XoU1QErTIONTtLLURfaERtn8dfUp3XTKCfXGnyX7FbVAuapEWebcnxfKvkvGsP/44Ax8hOMIbN/DuKVaa4J+XpSq3CXyvQCLTxqhnaavwdAZoQXvgJtQvaw6qcfwuBHWTLoH0eo0P+FqktdJvlWQH3i7p3fR/Z+zZ3E9VzT6nnXL1NuHZBTpK03d6JEfXV3Dmp4x7raf6WoYa+hTxn2mXIl7AiEgr3INmr4XdwYDmJu+Ri8wTPomRd6qiR2hJ/XboCvb3W/ZHKdp9Gn5/Edemn2PPlP/IodRt60cp3hH4F/3eC8a7s1gDrgU3A5ivaa/q2t4X5Dn5/D1iA3XO9o0ffN4/9MNeOwmxYoZaj9+xTbejdQ9Cri7VpwHTImVq5Nlebry0EWyz7JvCVq/laPmQ+/qiFu1L2Wbj/Mh3IhszG3wqGz2aYxT1hQ5Ah/OVrk5FOCOlMx7OwztRmqnNauToHma2N1HLgjtMmavm9c6UOeflSh3r+dMYxTW3VpqutkPBXHXDnyhV9J8K3TpuIsVLH1I7BLZYr+EouJqtKXFdCIl26OSLhK+mPU1MRdiok8ky3v8grjrvusSYjq8McjvXDB2X1Za4W7u8IPIqZRtOzjTu4l/g/7H0NYFTF8fi83XchhK/j3bu7d5sY+UwB+TIiIgIiBGoRERAREDTFiEgREfkhpRiRIlJKIyIiYkQEpIj8EBGDIiAiUkSkiIqUUlBEpPwQKeVPUUPuPzPv3eVyueQCXIi2fZPdzO3n7O7s7Oy+fbt5vEpJ52rtDNJpYgOod2vfBklL2Se7kk33l+AMYCKHp9N/mtNKijge7EjvSOj9NIbvwuEbc8gxqCMNl/T+ch7ljvhoxv9BmhVT1YepWsv4C0xPD6ZnBdHj+oLz/cLJtwe7N8MS1aQc0dfOpTO718WU7+W8nue87uW8nqe8aNbCYdqwBGiA43ETbTLNPlECvIYSgPr+jdz3aYTWrO2AY6s2utKMVqFwOPfUJqKZjGZaBcLnIc/MLsfMi+N/4UaG8QVht1Jl5xverodeOPYNgmwYBiNhTAX4OXoEYd7WP+Y3+g+wnUL7G1zXafQ9xXf0ftHmc62I3oNqp3jNjrSdatBcm+5oSG8CcLvfzL8/tI4DBDICGcgjtwK4NlaaERUKtwXNdjS70OwB6drPJuSvR4V30VdVdBpnmeZEHP9EmNOQhP+TGC8Mu0eXrSFywDDUOhai1rEfCjWltUNZOJbXx3dox0SKaCK6ixwxWSwQG8Q+8b20ZFvZT46RM+UKuV0e1ZP1DD0LhD5YH6oP10cxjNUn6JP0qYzP0Eehr+3Sm2Equs3S5zI+X++Nvv05dibDVCc+4ZN01C75txmG3pwSYUN1E30xT3k6BHY+jE2Vp+24ck8IMI7SsxjLkHtsmuXaEDD1YxmbINeiL5ZH5odhj9yvJzN2VOajb2+9v8wNgd4cqW3HWCeZi76dMJ/sEOg9ODThK2Q2+2bILmE4wXERwzhd0BfTko3CkC2HoS9hYySOzXo9jJsUhhNY0uaEIW1J6IslFEdCQGH15oTJtuKI47stBHI8lrQeY9PFNvRNlvvFcrFcr002xqbQhH0vUCvWhdwo8kSenkw2xjktCxnbJ1DeISecEKPFaHmabLFcFmJa9HuMGI2+W+Qu0Vf0ldvJFnlyP6ZFv/uJvuw7TLRBvzYEciSWczrjk0Ub9F0trxc+uVb4CGQv5L2RjOcIH/oulAu1M3KpdoZAtqYaJkx0187QbUdyirZX5mt7CaSBdTyTMNFE24u+U+R0bV0YzmhF6IuYSNHWoe94mYsajQMUFn0JP0ZvluR41GDCIEYg1bmM79Amoe8w1DDCwCUaz1guaifkm1UMoiWVmfFZqGEI2U/LKAbhxjI3YnysloG+zbTkCDhJZWasP85EhEyHo8UgTmFvBcKQM46iXN0eCVqBtg7dCVNoC5x/RABpc2Iy44VoBMyMBNLiRA7j+4FWlseUgBVYw8sZ21iBEYVnJsHVZc5MSHOaz/vCHqbvxPSThDua0zdiJI4oJq0ZicW8y+w47/iow741abXLlR3sQ3uj+FumbAhy+Lsx5Cb6BlUeoTAQoPCubNSjNFcufZWddB2tnWEY0mymU/roTitNTWidBFNYxL63su86zpF2/D1Au5ySZhDNSS9K1JCSVpM7hu/F4QWHH0A5km5UrTrtIql2DdUJ4s8xTutxG/QaZPOoaVJ4jFsz9G1Y0gb5L06BtLcvaRcSUvUQp5yBLnNp3uV6mffLDKBdPPI3FAZr70lO7X6uK/qGeROVSy/UG2H4zRz+OKUg/857zV6lNTIMSaelzqSQ8lGauenDiDZMDVtT3+aEQZ1Pb0wnOOo30iwR8VsIt+ucVtb0Qp491mMK/8K+heSrv8rU/pzPw1tHvq6WVA+u07yHyBRDuOx1uezsq7/PdNIXaC35JDz+Sg3D0EmTx53WfIDrkHZ+HeFY+fxdXD6vWgoOY78XySTdKGL++SY0DzQJNIW+rIv04/nnt4HG2A4DAKoNrzQjKhRuFJqxaCagmQSy2lQ2IX89KrxWbUY5ZlYc/0SYueDC/y7G50e4L+bf0eW7Cmeh02ExbIA9cFKriRKvszYIpV6etlTbpO3TTqMsbCayxO1ivJiFo9IW8TnKN1O2lNfLoXIiyvqVcps8JIt0C8fTnsink/R5+mp9h37EJVxprrau3q4Rrimu+a43XLtcx1Dz2+Pa7zrkOopwwnWa/zOgz0HXEddx106EU67v+T8D+hx2HXMVOHAyjBWgD6WV78DRMIaagmu3a59rsgMHwxjOe1w7XJ+4hjuwNYwNJ63UtcXVy4EVYawX+ixxLXe1cWB2GMORkvbJu5QDi8OYQp+ZWG5wYE4YA/SZ7JqmH7bB1SCE6YfRZ6x+SN9ugys5hOk4UriyXcP0VTa4RoYwfRX6DHDdjnodg6tvCNPnok8PfY6eq+e6eqPpT5gN6NNFn6jn6Dmu69F0IMwG9PHpx1Bz6uFKQ9OAMBvQp7ZL6a311i4TTTJhNqBPkp6i+1w1dR9CDtsMqL+cQV2pUC9CzaRQ70G2DehzVF8qD+on5EG0W5NtA/rs0/PkVv2g3Iq2j2wb0GcHao4rHDgaxnCkxDn0RjnbBj09hEmUM/pyOSEE+qpiHH3mR+iKc4tx9Jkuu4dAzy3Gcaxvro+TzW3AGgzj6GMUA5Y0jIMQZ4pBb12MYz5t+K3gfrFfby+O0n8b0CdD7EMdcrPYrGei3N0cAkxtL/bAZQ4cDmPL0OcQpjHTgRNhDDUF1EWPi3EO7A5j45zUBjtwOIwNxvIUYHpdHMgNY11I+xOdcX5iQ04Ya4I+eWKTqO3A1jBWG30miLXaKRvEihCG4yTpZSdZO1yOZpWtMxKgT19tj7ZR2ygWo5lLmA1I9RhxvbZEWyLGo8klzAb0GSFaajO0GWI0mhzCbMDUUrRh2hjp1sYgbGSbAeMUaj21AZJ27wzAVAaEAH2OC13rJE5pnRBmsM2APp9rR7VG4rDWCGEM2wzos0vboKU40D2MpaDPBpFGK2y8yjYhhCEIkQy7Q4C1FcZBaN/DuhBgbYVx9DmMs0cHsLbCOI6e07RdMM0GbU8IA1rzHVUMWFvFvy7ofSgaWrV+l/eOv1b0PNprirVF8XvtGsRXag+iXnAZvRWVyRRGHmB8pEZrU91ZYxpJ7wHlo+QLd1F41BpQU9NT2eV92gGsb+O3mV+Si/aEqMU6DumbXnJxZfObxJcJ17uyxjSY4/7AcbuyBveDNpO0J51OCmrP1K7n9fMxpK+J3Rw+l3IXr5GOJr7lMJ3p3gXZnjQvpI1OlN7nWk1loVwwHVp5fopPz19Pq3ZiEWlb4gPWkXdz3Grs/ne+M6MavSEVi0nnksl8msFIrpP69KUK1tVMqgfKSxekeek1SBfD8tbHWD/jev6WalXeTHWo1+WanE81KYqoXOJbLtEK3itfi0sxk2jAUqwmX6JT1md6zjI9rVjTTGM6f0nu8mp2v5XpLGI6RxKdYQ1uSpydLRp/m8/vzlw1K83ICoUz0Fho0tFgD3U1Y6NFhdNdrcsxbeP4J8J0ABf+dzHeJeweXZ4G0B2yYQLMxhniVjgIhZpPa6310HK0XJw/rtK2a4cFCIUz+V5iOM7m80WB2CmOSl2my3ayL7bjVLkA5eFKWUB7NOQmHFt3MF4gP5F7eWWA1lu2y120+sL4IbmWVl/kTjkZYbfchyP1EcaPy1Oc2udyOMI6eVgew9QIx7Qk6lSYRi+G/WhWM3ZIbpS9OLU2DLvRjGNsH9JHqw9bpWLYgeYTxvZiDopXPPiFNdIGchhjRCPqVHIbjl8IcieaBYwtkcsF6lRyndhOIDehyWRssVwmUKeSK8QqArkajcXYWjlToE4ll4i5BHIe2kWMLZDj6H2XnIWjIYKci/YhxubjaIs6lZyOoyECppAjtjE2R3bBGbuQk0UPAjkNjc5YnnSLHjwutiaQk9Cew9hUWVugTkWrF7z2kov2TsamiH28+jJajtMKtUI5USsUQxkbIfZqqFPJTnK4dlA7KIdqB0U+Y6PEUg11KtlBdtG2alvl9dpWMZmxfiJPo52lK7QVsjOa7toKMZx/9RRjNdSpZDtttuyEprk2W/TSZiOWKQbR3E020ybI1mjwv2ijTUB7p+iMY5qQaVq2bIDGrWULpWWjXSAyNNSpZG2U8gjSRHs5Y0p7g3bKyiR+Z9Vc1uQ3V4QZIkVDnUoUaUYYxpMtde2ERjrVCTgTAnGa7UIpaGctzkv3h0DLIhvH73X4H8ds2BwCrRnZokBbCKRTrYVlIdDcZIuN2jQgnWpV8fqLyGN7tpjHqy/jImAf2WI+HAE66WRwBGwiG6XrDhh8YaOs5qGZtTOmztYv42+J+L4UOAla4UxaD7G/KCpcQXP/om94DM7kr4vyaQ0HbqB1m+/yaHQpqkkrNsHXeWfS7TSX1xrQio3mobUaDNONvtohX/uro+DXHPIaDvM4rKZ9M3yO3kxasTk7hL/OeYXWanBs7E1n+tDYLNJoZUZcS/Rjmg9SvjTS2N8kiV60ViPuprUadOevds5uoRUJGvWxPNcx/hzjdEJTBo21mC7Q90a8PpNhr8nQOIf5Yk2efYdWHgBo/NM8tJpxdinpFkVvUZjgH2g15qxBpYMcGhe15hSmqBPFCvbhL5CAxt3gDqoxLNeD/K3SMqoryh3dn+Qcr6Aykm8wn9ZYsIYp5b2czggaO4P5/A4mh/YjQyaFgXRyh0x2z+T39FtpBQbLTjTPoJJq3Ziehewyh8b+s/8k+mEOrbpgHZ7i8Iu4DidwnSBXBNtReOSQnmwfZKrqESVo090e1Pq0cymfOehpOscnvPemDg6QdQ0Dqhum4YUaht9QUMu4xKgPdY2GRiMMmWFkgGW0MC6HgHGFcSWkG1cZ7aC+cY3RARoanYxroTHt0oWfGTcYPaGp0cu4CS4z+hpDoQVqCA9BJ+th1BBuCZwJFMI9gSLlglGsJ4zjt425bO9gOmmHVm8+ZWhPmNKydwk9Yj0Cfa1HrUfhZtY++vEq0oTAGcxh4o+1jBr18faIbQJL6x0upausUnJp+v5oSiPAf5HooNbtxK17LbduZ27dYUzTcKbp3lJ12xxxC7EFWprm+5HxugDPxaGD8+7EeXd1asje//YmANdhRrjGBCxmWU51Nf9HVl/lUy5hCUIBt7cGC35StGuwmOtcoIbx46x1tAO5vEtyYWAp88lh+Bx/kxyyYO+/n2wuWVrtdo3eFnVAfDMore9/pXRipHRULbfRaDeWQnyhlk77Vn5UPeFHJq9L1B1Jv3U/PelXogw6LEXYAG8wD9g66k+tFPaZmhKaQw/Eq1kjrLHWg9gnfos9gk57dWEe91n3W49Z04BOeO4UNsAmC00PzKMTuHCm1w6hE9tZbLdDv95o9y+eO6JdwDbXlvZNaEaIf6+y/RbN2/h8nxuKCB+hdabZG52GgLQaaNP5nVQ22uMuraes56zFnEptLEdtnCWo8Bw0EHyE7Xy27ZEr2xm5ssAXDuc13IbH8BmpRprRwGhsZBptjauN9kZHo7PxC6OHcaPR2+hj3GnkBOjU8Jr8Hd4IY6RxrzHKHGreaeaYd5l3m8NpRdHe12++Zx7mff0fQHfe19+bx6AucDvPY+xd08+cY86YOuY8AvlqpDEKpLevdyAk8Q7/2k7OWZzzp2Bwzg0x563QgnsbldYu+cXOG0tN+0LDpZ53zvV9h/G4MdN4wphlPGnMMeYaC/iLR78n1XOJJ91zqaee51PPbs9fPH/1nPF85/ne84OZaqaZl5iXmvXNhmYjs7GZYTYxm5rNzMvMlpHtZf7GnGjmmjPNWeaT5tPmXPMtc5253txgvm1+Z541g75rfB18HX2dfNf6uviyfD19N/n6+Pr6+vtu9Q30DfHd4Qv6wa/5pd/lr+ZP9lf3p/hr+mv5a/vr+I3AO4E/Bz4OfB04Erd+bocuEfXz7Lm3TJmpYy/xXs15jCiRR/4555Fk3G3cja1/v3E/aJyf4PxMzq8x50dnibvMB83x5q/NCdaHDsdnR+T73Dm3fS3jc+ML46DxpXHYOGoc97zmWe153bPG84bnzfh8V6K3zU8ox0tPN+7nu7GfG4H3sYc3jNnPLkau0T3s+f/AHlZWzQwowfcLzrk1YqVb3KtKpv5CglIvvw8tTHAfil1zGn0NAN3BXnUDWERvxIwPjf2IozSI7HfeR7wLoSH3vm7c+27ib9hoZchr1bTqWIbltywr3apvtbQyrSutttbVVgers3WdlWX93LreGmTdpmpwnqaTp71jfHGFc0LaPC97VnENnVueVLs9I2r3xXNuQ824zxjPtZJq5Bl52HNnG0+h69PG0yCNZ4x52KPzjedRgr5gLIIU4yVjGbbIcmM51KE7lMBtFBhrwG8+YT4BAXO2OQeUOc+cB5eYz5nPQ7p5xjwD9c3vzUJoYBaZRdDYC97qkOGt4a0Frb11vHXgCm9dbwDaeK/wtoWO3n/52sF1gbcDG+G3gU2Bd+HRwGeBPfBYYF/gEPwuLKN6Rciof/8yCzhSoqcuOecS/xTKie1i3mPeB8CtfBTbNyuilf/9y6w5bayxjgnwx3OWlM2wxPOMZ435xkJjkfGKsdJ4zViDJZmDJXgeaf7BLDSLkF7Nq3td3mreZKS6prcWUl3Xa3i9Xp/X8gaQ7jbeK71tkeZNTCvOwDzSg7znedezDWcwkZT2YkqXnjOluvGUsQxr97lyUx/Kqb90zqnX5vNGhofmOHzmyBhjrDHOeBD7vQbVrW+t76wfrKKAFnAFqgWSAyncyzpr5ItzNG2JLYvPKdd5JbSQBcZi40VjifFHY6nxsvG6M4YdNo4bJ41/GqeMMx7wDPXc6RnuucczwvMrz72eUZ4HPGM9/+MZ53nes8DzgmeRZ7HnRR7t3vKsczSYA57PPV86WsxZT5EniJpMSINparYyrzLbmVeb7c2OrMXcjbw1whyFWszDrMOQBvOM+ay5wHzBfMVcSTqMN8Vbu4QWY+swIQ1mpO9e3yjffb7Rvgd8D/km+Sb7HvNN80335aFmE9Joavk9/lR/mv8Sf7q/vv9n/lb+1v7L/Zn+K/3X+Lv6s/zd/N39v/Df5L/VP8A/0D/IP8R/p/9X/pH+e/2j/PdjrVfDMbILtn+Wpx+4Pf1xNK+P4+Un2L92m19BJo+aXXjUzOHZ/yWRPKJNYB5Z9t/WuiitRX3nhPW9VWgFAxCQgaRA9ZLt4Xwbeu7tkeLo7Jegvk6nAdGdgrQ6meT01bPUV8MrIKaT4/nkVMvbwtvSe7k3M4YUwPkLzlluBvDe4r0VhHcgzl9cPH9JYgnhY5lEKy9ZFz13jU/LopLbt7+8jHYyrcvRyUyW26pLpy+hmzAut2jurIfOqeS4tKpU21mr0pHa21DHpHV1Ya4xN2IIsCUf6832SleJUMbV1pW8ZpjG61dU95lIbxq05/B005xWl/gjCSkaiPHcSI0dM8O4ivO5x0tnQQnkRQ9TZHGO9ui+guIbtLqXRKdhWrusj61PrE+ds7gaMV3FIaWdhxOHvlbYhWGhVKqvhEO4KFWs10u99fg7y49At3Zbf0Vu/tz6GurEyOeVGPlIjgkc08Uxa5TKc2W4JJp5pJTvq8W+3lQn13rcOrb/Kq7HUeFQutkK++s1/jtZJ6K7f2i9b1ZU6CpbKS9Fo46ltbAOWzOX2lS+FuaN4voMcUUyS1WSpr/zTPc87plZRhqry0ljMGo9tixf5EjxAyy//0Gym6UzyeZIyfwZS+YvoiRzK5TC9zjS9xmUuK+Zr/Msv4ikLupIu73/h9pcTZ/la+Fr70jhm1ju3u77lSN7J7G0fdyX73vVt9/3T+J1lLHXoDy90/+8/4/+lf41/i/8f/d/5//euqMUd7wertO6xrDoU2i9V9PZrzgOvmtttt6ztnBs4tg0CM1yC7hWfJbB/1MtP7fOWRwzhvjyIvo436gIa7i31sW2HmLVsjpZ/Tj3MaXCvRErnHd4qXBvxkxvNNPZzKGxEYdcW0ZIdMVW+hRHzjO0ShMj5ltl0Eyr2sQD2P7cet95U7hFsD04lZZxU5GkMXrvZrmJtW5uMT/jmM3jxhQUkyVcKE5FaLZjvGfujhFjXZmlTI6sn7AkLRl7fZm1Ww1jH/AcRJ3kLHI8hMeFJmEO2hDOyYUhQ+HoPYWdEkmsRk5t2jz7drl1WRu5uBFyMPKvc3Lf1VEcXLJlykvNPhVlC4BDRbMIKjaWWccu7EWNPW2cmqZ4zSPivRO7PZl2+xxojhuj3JtiUorzDC/l2gllEsmjkrKIZN0wlnb3h+QdyiWSSiST9rJMOoQyqYilEEkgkj4ke1Z5V0fJn46O3BkVljfrfbtI5rBciS5nLGqFMZppLa/nRJf63XJLrYekbYwW2lwmT+vIz196fjAhBt2xYgknN4nabLp/UIy83iszr2rcf/ZQ/8Hec9M5xdWxR2B/4D4XTWesWILqpVw6t5yXNItO5U9l9vdoaRGrvGXHrhYpK5xSt+N+Goq7NUbc0nmGRgsBbePGjs7Tjhs62zmL34iUjCMgKYbO/KH1Oc4cDloHQVmHrCOQCnShSVpMUw+12ejzQMZDbowzn9einNkC22EX7IH9cAiOwgk4DYVIA52AJdB3Y9heiyDsU3j4e/KLZdtfINGb/Yrb1BpzwnfL8B0yzp0kfAOJc98I3zTi3C5i3yXCt4g4d4bwbSHOPSF8Q4h9N4h9H4hzE0jE7R/2vR8lbvyw7/qw7/fgmz3sOz3s2zz47o5ojeP9MqV3dMhtZYwPpXvyB+VJHONx7I/fVTiWLV+F50sz1pgVK47N7UnYb1JQc0xHvXFQhXOzRy3N46toXjw+yjLHxu3l1IRmzIwxeseKUTw6aEascSFWHFsGCpQiP1SYrlDpG1c4j+Hh8NFaXuwchjs5XBFD5yo7h5BWGF2KD8vlmOKSt4kTJyl0nrJ3uP85jrsg5vgbK64WZ3yKHWd4mMuiayF2+GFMlTdmvZWTg/OOsiRFOypQiujW/HN5/MK5RPNxrBjFOq3m6XaOuZQ1M9hZZumrh2Z/4ROv7do4qdVGXzev4wicp1+cfVp0GmgnK9mqAV2Rztrwc1ptgl9YHssHN1gB6xK4ybrUqgf9rAZWA+hvNbVawK1WK+tyGGxdYbWBO6yrrHbwS6u9dQ3cSWeFw11WF6sr3G11s7rDPdYvrIHwK15bmBgoUinwiKqpPJBH62HhE0EfQu3/YetJsHh3GK1vWYF+gVsC/QO3BgYGbgsMDgwJDA3cGbgrMCxwT2BE4FeBkYFRgdGB+wNjAg8GxvPZ3rSGcgpOaW6w59z/rcNkrjuqM6oru47A4TDi0I/+A2qIuGIq2KeJ2lxBb9IquKZb0bf1gbOqRrltUXqfo878jbzMPX84jA/3/MqjrzwaIvliV6XRQLr+KdC03XoHpCcjwbx3ndEVeY84sBlzYHPmwJbMga2ZA69jDuzOHNiDObAnc2Av5sC+zIG3MgcOZA4cxBx4B3PgUObAHObAYcyBw5kDRzAHjmQOHMUc+DBz4BTmwCf+A/rYM6gAz3bMPDQLnP+JMkuc/8sj3FZF4G8kOL+Q2YBmc8TvbRH/d0aZULkXROCVUQeRJrIOdldhuStq9p0HLQfD+BxtsjYNIU+brc1DWKAt0Zaj2wI0q7Q3tA3aZm0bYgu0nei+m/32obt9P9qG0A1p2gZRUxjC0pYLQN83RHoIMPxk0Ug0Q7u1aCs6iC5anrieb7dozXdbZGOOFHuYGEnfa6PLGEyBsPEiV0xBv+mIzyQMUx8k5iCeLxai71KxQtsnVovx6L5WbETXdDEHw+aLfKRzOdpvYGpbtO8xh+8xzTykNB3p3S52Ib4HzX4+fwZ/Ib5LO073WmirxGmMVUj3ViC9SJ9oK2tr06QpxrMcL31jbQ7bM6BCd9VCqftp+bxostexzaegarvJprNxEeeT8fgsOBB8ay5/XQuC3yNqizH9PeSLtp1OGuOrGB/HNu85Efz+lb+x5S9tERfsvpMotFOjL50x7rXsO4VdRjLOO/jpHBPmWHJfxDh/901neaCdR7aexLabwxhs89fNNj10Cgna/dieSXlpRzlHuyyd2V7B9ia2j3LcSUSzU+qhRC3VD8bi2hD8bZfkvf2yDdv89RN9mxx8XdI6YyaVJfg13zgKfO4fiE/Jl25YhUyxlH2rsfv9HOZBHlVHoL2Jd7i0KGfkzjK6Gd0vaPyuHL2gBZajZiUY1Pg0qxLSS2fTDEbBWDQTYBLqmBMQZsAsNHNhProvxt905sEsWAkF/D3RJuyFO+ATPkH/cziMMY9huJPoTmcOncGQRbxXmt9PR90UzX2ZTqVHux3bxL1N+Pv3OrYLn0IAdK8X+tIu+ibs3sRx569ZzjIH8o3QEBzB9lgO2Z/T2cwuuWzzDgxOH4L8HinYk23+gqXoJNs12X4L7DVcCZ15h0gSajGXG1ejltHCupL0St7H4HPumLrduJP3MxjOfVK3WIOAyjIRS0nfLk6OwKehTjrWqd8ZaBPMwvolfD7WsO2yjGvYxtdxLU/ieg6Fp/qexPcV2C4nsa5D4YsiZOQrIUlZ9KW9U8KWZ6QVo8uMkPwrKuAzHv5F39QVfclfRbOkKSoQZ9l9ItpXk0ZfNJjaE+NCSJYg3jskEYv+BSdC8hLdV4fkXFGh+DunM5xSQPfSOwnoRl3NMCH0RrlG+D1y9FtkiXT7Suwr+LgKdxRUhOLovRrEgSX3amjgL/0GvXgtJXSLatS7SJLwlpPmp5RS3Udo10fdr+sGcU7ULXAjBAJrAmugQXi3t3IMwO444QWGMyPa57O46dMYkMZ7bNI4xp64OaQ5cTQnxl/ixJCcth3HpmpvXKqaQPF+hb+WEQ7TUFapGt3HaQ/hODvqHsY4HQJZGKcgUOCkHRn6bxw6u4Kh93PoX5YTumRrHYhLS8nwn8elpmT4L+LQE80NB+PQEx3+yzj0RIc/FLd+orntq7g1FB3jcNw6io7xddxaiuboI3HrKTrG3+PWVHSMo3GoKt1r/i8OVaVjHItDVekY38RtQYslokST7uziOx63DUvH+TZuK5aOcyJuO6Y7sUQ4zj/itmTpOCfjtmXpOP+M25rp4Vih3Y+n4rZn6Tj/L26Llo5zOg5tulPHdiybD/4Vh7ZYcc7EoS1WnO/KpU1ouzAWiCYyDQJQHWI+wZXBP7OeGfq9o4Qvuxd1PLsUdc4HI93JJ/hYyXCRv4I7ImOxf06JjHNK5VXiVxku7WxT0qUkPaViXROdCn9RXvLpzXZmCbfMUjTzU9QR9WU4e6ZsKiNivVPC/eGo1Mt7SudOp5w1VakqTV2q6qsGqpFqrDJUc9VSZaor1FWqnWqvOqiO6lrVVWWp7up61UPdoHqqG1UvdZPqrfqovupmNVDdpu5Q2Wqoukvdo0Yq2pnaBFNNRX0gTaHkx9QvBYk51Ee7gWoAOubUCFyYW2NIwhwzoBrm2hztlqolumeqTAxzhboCkpGKq6A6UtIOfdur9pCCFHWAGkhVRwx5rboWaiJ1XaEWUpgFtZHK7lAHKb0e80JqwY309kT8RnUj1EW6e4GBtN+ELr1Vb/BgGfpgOn1VX3S5Wd0MJpZnIIa8Td0GXizXHeierbLBh+UbipTcpe5C33vUPeDHso5E31FYYgvLnCxvkbdgmYkawdRI1U11w5IQTS41WA3G0g5RQ7Ak49V4SAbR4hT1p5ajWy+EgdAlTvtd1Ce4OXgsjK9B8xWaA87vD4Iv0W/E9gT3hENNS2D2OZAT/Cq4DeedEFyLcAzho+BCm6rgNjT7Me+PMMT+4H4n/234+6Pgat49nCAaMNX3HBp2Obnssksc/MD5dQDpOBCKEtxANYJ+bRNDQnCHLQuCpxOT3gVQsit42Ckz2sFsansu79hwiA/C2GaslQP0n+IljIKvgo8Hl+D/N4MrmIYU5MP1zI2X2bmieST4EeMHUH4vCq7H/yuhvs2rCaCgtFyuyJOamNyLH6fvUY/E0gbvdVz3Bxc6ARLVA8qjITuYy2P9Sq53P7bCWuaS8CiE9W/zy4Hg77H/rLdbKGH558cPczEe7O0Hq5QAklEfcV/cE+0V5odKfs6zXySSAltbW8k8SOPFS6TH4YiwEv+vDw4Lh9vMPeYYttpCNAWO1PgogZRMCuahvYQkFWp2QWybtUxDs3CIAkdGfYXUrE1knwDS6HLCtYE280U+9s01zCXcZ4hbqF7C9CxiWtZA18SQgPXerlz/cmq7NA+fJw0jgiNK/P7K1mIYPxCmoHcZsRPIDxGpHosfpnIeHBVD/YK4Pwvbfy27DwyHKJ6t/RlD7U68fEVeJ55cn9hUzyH/ipQnxtwsgRRE8WTVPaRNVx0/hnTaCobuU4mU3Mvjw0pbGhb9E6XgZywLW4dDFPeLrShHaV3jxYTlPqK0nAyG5/N2D8XnvkTlVwYVO0L6ZFU9F9IvEtUa8casn84THM32qPDviL5WkX6XCF0uuIDt/lGue0pjMZ9461jx8yfpNofRVhGuBznntiz3uuLYb5abRiLqYSPbN55n9AuuB859bfwwlU7DxkSkkognWMnSNE7uO9keFSdY5dLw9gXRkBh+iJ4xl9sTK+dx+maVtgXUYxoStFZ4fo+9enreMioxNGxku0r7pv0ErzrPiAnpF+U+F6mPOG1RqTOhuDSMZntA+HfETCVRKwRxaZhUjl/8mVNi5OTOMjxSKhQ9MTxZLyGpXNDj6JPPxvSL/2ak8vtmxdrjwh96S1/V48VGtnueZ/TE9IvRUb+r4u1YPc75fMeLBD5VrMO0Zho+Dv8+J+5MzJsDhyfPty0ucKwLjg2u5XX2zTjXqh3cETwWXBRcifPMzcGDxJk8WrSCVuiesHehZTz1mJ5fV3IuFaFhQlWS4IwX57vWXPnjRQWexL1TC7YJo63KCVZJj9MWo2P6XaSxu0w96iI+joxaXqU0rGR7X1XSYD82V1Ttc946TGJyX1D1NFT0cd4W7g9+aY/zVfHmyH5PzruKqmxHlEPD7tAs9OLXA++imRf81Pn1p6rceRFcDc6OwCrhB5snd1y8FYEYNHC5g0vDWFXUg53zrqp7n8v5V8qOiXPIP/QGs1m5wSqbCl7XDr5XcoU7OKKK96oN+RHsPRh/ru/9K+eJ9c79Ij8CTDVRPQygHlG/BV09qqZDNTVD/QFqqcfVLKijZqtnwKOeVfMhoBaoF+AStVjtgEvVR+oz6KH2qr3QR32lDkNf9Y36BvqpE+ok3JIqU3UYkFortRYMSvWn+uG21Pqp9WFwasPUhjAktUlqE7gd8x6CeU8ETT2kHgKhclUuSPUwUqMjNY+AS01WkyFJ/RYpq4aUPQrJaqqaCtXVY+oxSFHT1DSooX6nfgc11XSkuxbSPQNqqz8g9XWQ+sfBrWaqmVBXPaGeAEPNwvJ4sDyzMeRT6iks+Rw1B7zqafU0+NRcNRf86hksrYWlfRZLm6/yQann1HOQquZj+dOw/Auw/C9gLaRjLSzGWnhRvQj11BK1BOqrP6o/QgO1VC2Fhuol9RI0UsvUMmisXlYvQ4ZarpbDz9T/qv+FJmqFWgFN1SvqFWimVqqVcJl6Vb0KzdUqtQpaqNfUa9BSrVaroZV6Xb0OrVWBKoDL1Rq1BjLVG+oNTPlN9SZcodaqtdBGvaXegivVOrUO2qr1aj1cpTaoDdBOva3ehqvVRrUR2qt31DtwjdqkNkEH9a56FzqqzWozdFLvqffgWrVFbYHO6k9qK1yn3lfvQxe1TW2DruoD9QFkqe1qO+b4ofoQuqkd2Pbdse0/gp+rXWoXXK8+Vh/DL9Qn6hPkhk/Vp3CD2q12Q0/1GfLHjcwfvZA/voKb1GHkkt7MJX2QS04gx/xD/QNuVieRY/oxx1zHHHMLc0x/5phbmWMGMMfUQo7pY3/VIAfIAcgxxD2SuUdn7nEx9ySpSWoScgzxUDLzUHXmoRQ1RU1BjiFOqsmcVIu5pzZzTx31e/V75BjiobrMPQZzj4e5x1RPqieRV4h7fMw3fuYbizkmwByjmGNCvPK8eh55hTgmnTnmUrVILUJeIb6pz3zTgDmmIXNJI+aSxswlGcwlP2MuacJc0pC5pClzSQZzSTPmkobMH02ZPy5j/mjO/NGCOaMJc0ZL5owM5oymyBlvI0480Yp5ojXzxOXME5nMDS2ZGy5DbvgTcthW5Ik2zBMNmScymCeaMk9cyTyRwTzRlrmhKXNDBnPDVdz27dTf1N+QCw+qg8iFX6uvkQuPqCPIhcQBHZkDOqlT6hRy4Vl1FjqnpqSmwHVAX+o34DOx6OxS6e7qvgHA3cvdC6q773DfAXRPgdtV3VUdXbPd2aC5h7rvAuG+2z0Cktwj3fdCivs+9/1Q0/2A+wGo4/4f96/B7f6N+zfgdT/kfhh87kfckyHgnuKeAqnuqe5pkOb+g3sOXOqe514MTd1L3O9AG6iBAtINIsLQby3KCOd/bz7BxTm/xT69RaTTSS2hc1qcU1rojJZhYqQYw+extBVTxHQx03GfwyexLBUrxGo+gWULna0i9jjnqpwQp+1zVGRtaUol68kM2Vxmynayk8ySPWRv2V8OlkPlcDlKjpUT5CQ5VU7FFNpijBlylpwr58vFcplcKQvkuhi2ndomuVXukJ/Ivej2uTwsj8mT8ows0nXZQ0/R3bpPT9MbaEdkgd5Eb6m30dvrnfXuTnkjSx1Zdrb1nnpffYBdD/rteo4+wi410tVfH62P0yfqkx13ux7Y1qfpefpsp04iakafJ2ZiWNvmlCNrRvx/9r4DLoqj/X9m9ygCwnkF9hCkKqiASxNs2BEriIgFO12kiKjYARWxo1HBjr0LiC1WFDVYogQVjcaOHVGxK+U38+xRYojtjcn7/v9hP/tl9pnZ2SlPnb272UdqTBGtF20V7VCOzB/GRLRXdEh0TDkygAJFiadEOaI85YjpM49Ewu/LIKJ9YD8oZipFXAbpi4DtgHII0msA4VvqeBak4XvQeDog/JIZcwTSjwD9gPIUcABQLgOuAKxJEU2D9A3A3kDJhvZguCsCMA+wPZQ5DDgcSvpThLeYmOkC9P2AjkCpDekZgK2gTjWgjwLKM0g/BxwElCtQ216KpXQVCZesBPotQA944ikoXwwYAvS7kE4GhPpxLKRrQPkSqFN41m7AulAGakbdILcNPFFo81DI/RWwB7QZRoDtB9gCykDbmHpA0YT0WCj/EtIzIf0eMArKDAZ6DmAnoDyB9AlIw4wzwr1hgLcBu0MNp6FMB0jfhPRyQC0oE09RZA+UVYBioMOYM/mA0Av8M6RfAQJX4OuQVoX0SBgN4BOsA3SYC6YjULIAJ0OZ0TBiMEqMMCMMpAX+tIaSG6AlMONMKmB9oADfMjA7+AOgF9SgBd/oj4ZfP2GIVu7wt+hh2u6tcHpU+yvYZyp/BxszWB1rYxnWx8a4HrbCdtgZu+B2uJPykGEP7I374SHoMg4iqTAy8zuhRlpnJh6LTuAYdAbH41nkfz7Kx/NJ3aR2nEyOsVD7CryW1E7r3ozTSO0uBNPwbvKUA+U6QgRzw54FXAYoBRT47AGMbxIgyDkLXMieq5RYFmSYhZkTQZ3so0qpE2adBS5h51VKEZtaKS2sL0WVIZAGuRU1BhQBZQqk+wJqAE4E+lVILwJcApRrgIXwFNB3rBHg+UpuU8oG6BF2DyBoGVETQJA91k/JQ/RXM0ah8fTb3eIufwsH0VnZCNzz330ouafM8b9gpCrl7IRS2uh/KnEniMyd+L3M0Twqd1CaHs+wPtwllM8kOaQ+bIz24XrkyopImVIyiaw5w+/Vk7pxJyKVHsR+CL9sT+v2rqhbm0gtPWWkrsvlI4W2AIJOQ5sAwa6hYYCgveFb6hhthpEVdCPIEALtB7/ihElfKeYAghVDYPtQKGAK4DrAg4AWUBvoajQQUNC9PSEN/I4yAJ2gpJAG6w+feiyfXRsYczq7hCL2JbMZROZypHiUeLl4hXgNmZWNYvilN2RM7jBG9ZAVOeshO5KmO8W3I6ddxWiAzCGwraglIMi3YFXh0/sYTVU+ne7gPhYlkDQrrituLm79t/AX8Xyof0BO6id4YDfcDXvhvngQDsDDcCSOxhPxFDwDJ5KzPL0IL6u4Xo034u14J9D34Uygn8BncC6+jK/jfPwIP8OvcTHDMOqMNiODcuQ+Rp8xZuoxVnBd9ST3MHaMc8WzqtZP76P3lLevvI3l7Sy/h5yMC9OOtoXpxHjQ9sJ1eZnydivrZryZfvSE9pe3XdluaPvH7f74JG2CdpG6qshBEWAhSEMRYCHIRBFgIUhGEWAhyEcRYCFISREgTQdC+ogSC0FuigALQXqKAAtBhooAC0GSigALQZ6KAAtBqooAC0G2igALQcKKAAtBzooAC0HaigALQeaKAAtB8ooAC0H+igBp+ixNE5krBGkrAiwEaSsCLPyDz0I4/b/NZyEasBqvhWhCF+WhDf6L0m8hXgv4LMRT2Uc8lEzwVOYT34R4JUSrJoPPshk9wmlEB+8mRxTUfgAfxdkVHlH5cRZfwFfKeYiBGIFxAD0GPgUGfwGD98s0rNSoGPZEE7xKwbvG4HULvjoWvFlvwFZAsYI0+KiMHlDeAEJMgTcC3oRcIWICrcucgbTg3wrRBDxFiJsYIQpoClgAKERV9wDbKXuRC73IhV4QZGyVfcmt0NXA/Rh0I/ZX9oKWVEBJGBn8TtlaSu+l7Dut4a1Sl1IO42EfQoHDPqXLaZXmcH5Wn2OwSsq2gbXCRwEd4OmXIP2kGl/B/h/zFf5/4O87/2P8nVstf3Nfwd9VPRX7v8JTweAPYYiihZ2OsbAaYg/PhVUMXKB8Ot0ZoxN4KjriemILsaW4gbihuJHYVuwgbiZ2EbcUtxH3E/cXz/pky2hE1vubz8/3aBtgEGAKoLDCYg09yoH0vSr6otwi9RD7/LdZpC+PogkV5JVIa9UoOoZIajyReyq58SCxycooegU5YqD2ThVRtDOJo6ke2AzxdDu8u0JiIeJlwK9nYD0DC1GosJIkeNyRgL8ARViHA0+fxOI0bQxpoTxEtsxxmANYUcO7gAJzw0DEwMA6h7Aqg4Q1PBdAIUoHHcHWAgqswzHg+7MgqyKgs32ADitYLETyIpAoFlZuGCF6P1lF8gU53A4UaJuwUsjAL6Gysioy3/L/Oe5R8g7hl6rcE0+4ZxbhHqr1ZwH3rFByz1pyxEPtlFPKuWc3cA+1BQfIU46Wc49yPbARjB2sLjLC6gusSbDCihloOEag+ADyqNImgGZiJgEd1gbZzpXcwzQDimAHigBh5VZY2VNyzzGggEfEdgWEVR/Wv5KPWdATIqCwwFVsc0CIbVmwJKIxkIa1OBY4knWHGgYBxgBFsGzAqQx4DsKaMAscxgprOcOqyMC/nPSlnARzwAoyDetmjDATwlpzTiWXMJlAgXVhYR1M4CQW1ltZWL8WVv/Y3CqcBF6dcp1tTBVOSqrkJIHzROBRsJ6Qht9JZAsq51UE9YtAf4gCgA46kn0NFFjfEwHHiOKADnzACu8M7kNarZIjBU5iR1fhJPB/RCaQfgHYRclJ9Dd5Z8Gv72uJzcX1xTZiR3FjsZPYWdxE3FTc4m/jLrrafuGrzv8dLhR4whDm4zEgrO0KdpCFdSbBwxC8QEHDscAlGHQVswBwU6X+EHRhGXCDcu0fPEvmJtwFK7xMKcyxYKd2AAe0RhXaUVj5ZeHdBQPlWaF+eOvFwgoZ2wBQ4Ju7ldzPPgQE71n5xgZWrplooJhCG0BrMvAORLDjLLwJYRMAYX2Lyaiiz8rjMGtxq89w4+/jMOrd2RG/rh54dlbE4/So8EMEn16wFfD2DwtvYGAtkJkDaeG9nBAhfOf2sGaAospREvSR4FcIml7JIWBDhBjm+7VHxAOC/yMCeytSr9QsIuEtE4weC/4Pe0bZHhpRJMMvT0s+8uztxPbg3Tf/nX//d2gQGqEV/CXnXxgZE12h1C8kMo4ikfFY6mVXxsZEw8wHzbKWRMabSWn6RioMat8NsfHHkXE2Piv8rj+qsC2s4HcK+h5+81l4fyr4u0pdoA0UiJuVbzbB5ghvw1l4a6T0XoDnhHj3dz4YWDnmUqXkCG9XGUG6hDe5oGWUtjQNULCcAifVrtQgjKBBIiq1DGl/LrQ/F9pPkNVT9iK33GcjfSkiaYiPmc7K9tOS8A5X6W3fULYzt1w3sRBnf7TS8ve8Af0fe39VSt9jMoQ/VNCR0rHCUeZNjn2fOb6kDD3O/kPH0H8POL5kHj6es3+6zeXHXz3/y6o5PipLdEStWnNrJSIk8ZeEIEYSKomG/VXbILm0ndQLtZV6S72Rl+y47ALqKcuT3UX+cg+5Jxop95L3QdHyQHkgmigPloegSfJY+SYUx+3jTqMtigxFBjqoyFacRIcUVxRXYNdvYyJ1CDVHfnQvRVT17z3sz6MlCZQESUJgx96RklHkOd1JzUNJ3QxSpXkIk9wQgsPprra0DMK0FEHaAqL1OLpnLv08Cf0sjwiloDSSNkV/zd890vb3aBaxfVbYFJtCq++h9ziI/G9OYoz3woGtylMVxz1AuocYI6kncaL9h31hsMSJXNH2DiTj749EkgBJMFKRjJGMIz2eI0lEapKfJefIyNyQ3EI16Z4tSJ3u2IJ0pb2kvZFCOkTqi/Slk6VTkJ50unQG4qRLpctQbelKaQoykG6RbkWMNEO6E7HS09LTZGYvSi8iDekL6QuSfit9izRkajI1pC2rLauNdGQ+Mh9USzZENgRJZKNlo5FUNk42Dslk02TTkFyWKCPtkW2RbUGGslRZKsH9sv1IU3ZYdpjgcdkJVEf2QPYAGckKZE8IvpO9I+VLZKVITd5E3oTMkqe8JzIGnlGRh5AZU5EPlw9HMnmePI+UeSx/TPCN/A1S09XS1SLYVLc5QXddd4J9dPsQ7K87gOAy3WUE03XTCR7UPUgwVzeXYJluGdLRs9CzQGI9dz13gkv1liIVvZV6K5Ga3ga9DQQz9TIJZutlE7ylR0aV28/tR8ZcFpeF9Lnj3HHEcT8TPjLhcrgckpvL5RL6Be4CoedxeciAu8xdRix3hbtCyvzG/YZ0uGvcNSTmbnI3CSWfy0cy7h53DxlyT7gnyETRTdENqSo8FB5IofBUeCI9hZfCC9VQeCu8CfZW9Ebain6KfqiWYoBiAJIrBikGISNFoCKQ3BWsCCZlQhQhBEMVoaTkcMVwUnKEYgQpOVIxEhl9H27HHGpOOFngdi9yWJGDI6fA7Ycon//JQUtZgUT/y+3/cvtfz+2ZwO0vcW+Cul/H1SVsyYlSl1LHko0lG0t3l6WVdSnbV8KWupUWlzH01w2JhZxfZk7+kzipeGXJkJIrJb+UtiNlPUlJ1TLv4jMl+aXJpStKL8Av2NuUZpaJy2ZV1lsaQfL/UC99ckW9DFIn3B9ALG6QhNhfyTBJBJGBSEkU0pCMIta3Jlg0MeGbYUhCZnQF7JogBolhiMQEIJbcSW1hMLmfJfcPI+lQSRhJh0vCSZkIUiNLaqQ2cgSplyX1EkspGU1qZ5X2MlAeRNLB5BkYnkGl0lBuLbchebZyO0L9QW8R0uKeck+JKnjOPUdq3AvuBVLnXnGvkAb3hnuDanDvuHeI4T5wH0iZEq4EqXClXCmZR6xgEFaoKFSQpkJNoY5ECg2FBmIVmgpNpKGoqaiJpAodhQ6SKMQKCZlZqUKKairkCjmh6yn0kFjBKTgy77UVBoRipDBCMoWJwhTpKMwV5oQr6irqIjlpsQdwQhiJZUVI/Y+zDR7PMTLq1B8sEH6/smwQzFwUnTUhH0rSfIxq0pkho0tGlowrGVPigQTKQ8gILSNP0/iSOSB3COMbSNJU6jHcTce3Jowphv6z0H8G+q8G/Weh/yz0XwT9V4H+s9B/Veg/A/1noP9qX9B/G+A6G3JE0f6XrgaOpf0HrhXyoWTU/2T/BY+yHrL52KPEQXT3P3KwypM+n6V9I+0cStoptBB/qg4yrmF/qIMh9sIXYVmgLBAohLdhV1iGe6qg3wMSk2tK6UwOShdxpVQaFFxF3iWUSo5L1eb5Ecva/KP76DMY2N1QlVPjzDhzri5Xj7MQ6NDLP9Jx2Rgk7Fe+EyFuD/cjMhHoeCWh6/5N+2nTfdxduEncfNQTdjIMhp0Mw2BPd7pbLdEIqDPstCn/0l1RFSVCv0tdvuUu2PPz6+8y+qa7Zn/DXfib7mJgV9KvH8PVf99dZT5ffRfhjrLZsGPrV9+HRpTtovd96R66sDMvvW8R7On6dffRMYn4pt7t+obefStnMUQffctsf33Pvk3OhNFPo/fDbrd9JH1hl1sPrruyTrrProjU50NmxlM5gkagB4QoQ2gv3e1U2OOU1ugHLam4xgNKXvzuelPJkYprdfhOSpVc4htMrlI7pfh8TCH+XrsqNTCCLZDU5vSQsKcvRssQ/dSIKtGzHST9uZqcC0f3xHYh8c48yRrJehLr3JTckjyXFEle0PhGGiANlYZJh9P4RjpXmkjimf3SA9I86SXpFelN6S1pvvSdtJREKpNIVJJB4w25tlxHvkO+k8QVj+VvSCzB6VqTWKIFjR50Q3TDdOfoziUxRDqJHXJ1r+u+4AYi+p4qudrTBU35Bw+6Skv3Eo4W7ft3/L59/LCViuzf8fsP+C8bxo9qhGPVjB2lL6uGTjWEP+wNXl3OoD/NwZDDVtCEeauHWlVTHnxY4rnSETSt9mSRNpIpd9pdRD8xprKZfiqTShSTr+JaUb8pal5N/Zh4yLTuOtWetL3l9bZT0aioyxy5VFMXiRSULTWu9mSUb6yqtjNfZdZnRyBCEikP+rYRYLWqjMB/Uj89lPWL0kBbqcN3EaudYexVdvlPckbDrvDV5ZwBT6uaHKZ3mbianD/vE4nFuaMcfZdJ+9Su2lMF5oIjc0ziK3KaK3eJZQiNxicSctD50qoY1d4q0f/AUw1ULJWWtjrupfToP6Hv/BP6tOrpdHf6aiU/rdqxLySzr8HSNxt1/6boiuFUSXSlzmmitqQd2qgD9ZdQR07K6aLOJHw2RO6cEWeMvDhTzhR5c/U5a9SLa8TZon6cPeeABnJOnDMazDXlmiFf0o+WyJ9rw7VFgVx7zhUFcx25PigE4rbxJG7TQLH6WvpSNIf0UMRhjswHie8SyBzP5H5AZhDTWZEZQswB5XmUnNnK/3/VeVb5/0IV2pUq6Zt/4bPukbOgynVRlf9vPzrL+5pdJf09+l31rNrv0n+w31940s8EfW1bWI2KNE+8mAPkOIqy0Vl0AV0heBPdA1oBKkJvCZait1iENbAY62IDcphiS5Kipw12wE1xK+yKu5DDhhyegDa4Nx6A/fBQHAEa5n2FB4DgbR0Cfx4hapPsBDp2J6hD02XPUSogpcuUd8UBCr/IcAjKJ9Iy+AFFhuiOsvs4meBZIQ14lrEB+ilITyR4jZlPUVmSps/iYqgtGXK7AOUUUB5AmS5QG7UliNZGcD4gUNi+UHIK9VtwAPVvVNXot+UY+FY4K4OSkGYKAXMA80Gz0RGIwtT2N/jSiO5L42dFCYmghXWqHxFSWCrqE0tCPytT/Nec9EskWP2vrw9rw2mJhpIjAj5xM5TM/FCUQPTjArQEpaD1aCs516MdaC/hg2PoFMEclEc4Iw/dRg+IvXhJ/tPjPbpN3C5VrIUFK0d56hrw130lT1Gu1CnrTVBRmkjTgGaAMmX6KJSZAWXOQJkzQId02QIoSdOyMh4oFBWAstKXUJ4igqcgKI/KaGSLlHTw00qDAK2oNJTAZ2qgTlQ2BJBHf4yJ4bp4fJVrlXdJJUtg5/T7tcrIrLdXdEUKxR7FHuJZgYUt/flPc8nd7099892frftDySfq1kJqH+qVXPlECdq3/JLEP9kVHvLfxHwmf8cn8mn7s79LLu27wadb9nbvZ/IffTq/2Osz+Rr/WX5p9mfyx/6H+dlMxCfbN+gz+fM/kf/9ZvZ/Mff7ciP9w3DQ/8iQfi5auWuMYRIfZ/iDao0G8W7xb2piNSYlznAKIcUwGNtq8jVUVRpqs4y+CuIHq2o0VCXORpwTg0UpPfjuvFUVisHqOjEG8CqnOXJHQ9AIFI6GIX8URU4XevAmVSoTydawE7Zc9Nrp/cHo8KJmqRt8u3ubT0iJ43rycaIsPo7dksIymGGk9Dd6TkTHNMYj9YMjocEn+JoVrcUqpF2joZlsT5GqlOnZw1bK16IX6lKNXoNHBAWHBUaFh9mKeW1KVJOqefr7hYaH+dnW4Q0oRUMq7xrsGxk+IjwgyrhteGREeOTgqGByhwlvRPNZKVeZ7xUc6m/dI2pwaISxR9vWfB29mraN+Sa8k62To7OjfV9y6Vzlko/N+C4tq8lr0nxNqairu4enrQVfV7isE9Y2OCLIP9K4XY/2xu17dGvq6mjnbG3v5ORk7dzaqbFtXd5M6JFBtT3q4R85KtjXn4/DplVHGKsgNg7rIELXYOIwRts0zWpvPJVgKWt8Jyuov+oUy5Gtp0k2LtvkwAxatc11t0bNrevO13Rt/yB1hcGLEQPKwot3J1svfF3bLOF194z7S3t5l3Q9vdrxx7uDTwfKGL12b6fLO6RYa8xFqaenZXbyO+l86Nasho+y4u13N8zUT3tnsUSVj3C+cUB6LOZcp0HJw+/cygrfk9i0w22x5pbIhH4Tzdtq523eYOKQcGXr6MS7t3TG/6AXbzZbcf6n4SfWvU7zsFrZ90zfNPzTgrhj+IOc8S8IO6SHrKepzJsxYLbTrBorDwXcDAu9eDOl09XrC1aMnfCrbkAmbtDI3eJ937tvnxs+1ha9DmlfRzYh02/R1Zwfy1zPDj08wohhiRyticM1yIio8IZkSA21Rboi2YXDr+3SEmx17ikWPHc5bPveh9GpATxkaCbieN0YmZnD2189XSM0nrT6MOpDRsO0LMcMHd6LFjASdeU78x1TOqS0j28bFBUV0bRRI9/IYTah5fNk4xse2igiJJhSG0VEhvuN9I0a0ahiGukswiQSrrQhRfjequpEMFVU1DAWdeE78W7l1zwT31z5gNGjR1f3AP/IT9QcxUtpe+uKtHiN8ipZ9Y8EkqVckuyDfnu6xm1mvkeTwAXmmeFzD7W60WS9VdfpVhv7uNhpDD1T3E9PlMy755ZprZ56ve5RUVP1N93yccb1sLb+3W62sGkfUX9krnuwu250xtlxLk8VW7umbx9p52mukpR42e3Kg3YfEgfr9hnwc3rDngtXevY7kslbqBXmdbEYk5H1ppNjTUXXNbbHfzuvbzrbooZDK6ezK9wMZoyc0Xb55fpeOzc6DZOtyI4etkexeVr0Gie/Q3h+wbVWkwbWEnstUOl7ZVKGZWfJCoe4mY0sBzmJnwfqX4gbcfWG3Ycb9mvutHI0OeDkYxcUfvpywwd4sO+8pIR7j56lManv3vQrvhGb5TBxZ/drtY0KPAve83GqmKixh1XU2LGH09+OjfV4WAZq7FjVUdMkamzid1EWlnw9QeiNqub7+Rv3CA4MI7VSRWZsx9vagjZz4p1tbe14cjgI2qzyko/6Lu1T5rN/kv9ZbZQwY695ltrcJTFj5MX1BhVHJli9f7kmKWGR6541pwdOb9TU3qbOvOj34zcZxeFdY0/rH2BPuT4+vvjNB5Fh0VSNMtOwVUWBLY5bcHctjV6JFrT2LbizTz7riXSJ43XnCK/wZgXb2tfgOx45NJdfrHV61Mk3Ixbqjv5l5v4FP6lPNX5SZ6Pj8+FHb0ahzjNyf5v3OC+6dPb7bYMSWhz80Wj7kKTDx6ekJ27PS2143uuD45Wfh8+/V6esYHjI6Unqo6Juiru7XXiOst26rFFzvNunZsn4Zdn3+t6Z+ipviY7RnPX5U/SO5J1aaYh/KnHbIJ1vn2TiZvf2qPlqtONQj1OTw+r7xD51Dot5sb9Aqvm4XBvFkBEZL6ibulTdVFjmLuq4QlLZKurqdN6QKecGNXlUFni0X272/i17sqTJvCfNriUiumhtB779x5bGgbejlyrShnb2PG9r19DXmXcY4ug/2NqhyRAHawc7e2drZ/vGdtZ+zo62AYPt7BwdAnx/pwLdwvzueqicj9us5+Rkuit046mRzMI/V4HVaqjwiBGgBQm7ED4mXEwYmPLvQArWvJM17wwqcHAVFdiTJ95KFRXY/rMPKNeCn3hEFK9FGy7FuEzE8OgjcWbjGIxUdY2u9jrqkW3mvrp79KUnb0t+Pngx8/m72t5PemQHd1C5eOx0we3ixT4LB9ZytsxUaS+9uWRMwoGALVf3P2Z6mu1pYRbdOnT72+eo74LFMwzO1FiYs8SgHb9pne5P+zr4vGroMHPl3N5OWd0MUk1PiX++HCfe5Phsu2n2XPP1sTNvWBjkBxhOd7Ep68V2PRI2OcXu8c6MRh7e/VXT5bOyDX33jNC6kze2nk6DRe032E12WeTSq+Nos+ml6eKfZtxVl3c/3rCvrU+ToYs2rk0IWWQZ/vzY9kcH2+udGdItdpeXfoc5yetCM8MsTry1MMp+YrxJM/35Wc0lC24PXR48eVXjS6HGpVMvlmXtTWpco7SF7EiybFNm/JmncUe29DRvy+1ymxodn/Mud3lLxa+y6fdnrwwyTwhqtumnmG717qubdPEtWfaDvKv9Lu9B7pc6/eg8p8zmWvrAtW1DTkafS98fMnfysGmRmx+t+7Dymn5ek2K/k6Eu6nfHT07fdmDNvnHnFnmvHdv7tKTDkFyTp8XNj9lqvmnk4rfOKXyQR8s97RLdUzRnHprY+/VPgdMGX12RfCx71unwDrcybRY8SX+dxocWDO248eGiUdkH1Y+VNnu1fYST6g7vc4oL+18tODXNoChmKHbfXTt2RMZ5H9OWTXtzNxIKA4913NDot7ozWwzIKXBoN8/wwDytUXEuT49dtl4lYua4vXt6jTnHriZGQI0YgaeCEdAYrBskbLhj8LELOxDUqUaN+fWm/1Bk5YcVuizhRlsFr/c7Yo0KZiVs2FDQm+aVetMzPJwoT8K6wQHBvoOj/I1bj4wKCo8MjhpDlTvvxDvw9rZ2jvZ8E6Lc7Wzh0p6nl/+cD/05/b5y1bD0G1fd5jcYH2KjuHXw9p3ji7ubeWw7e43rZq5T+MuGX7psi+KNaz1Wu+i1UN5xQe0287cn9+PrXUEhD8YdLJiupvNGW5T8bPoZo9P25tOWF70MNLAqHnc/wfDR/W5rVh0x63Fq9vv252rkDEjNSWsjWv1u/bAfAi9Z/ubaIy0+566lq43F1nj3np5a+azVh6GJiXzYtBd9+OXvJ+YlZTwwSZr4Nlf6Qn1Pj1DPne0TV7qhTh0CalnUD9iYlH9eNbbT6ndTNtTqIKsRt3LKk57RpXiJoYf6VCTmXZ/suW7muv+YtdfK1DrRrW1Hn1l6o9nkH1YNZnYZ1kwvfrN0Bz5r2tmr7J1K1lFjzXL9voWMyAZep0LjqPAs+VdFn1frXVL1bagjEhH+i+fFqjWUNkGOKQXxscmCbo5N5GNnx8i0t8YNauVtkXS3rrS4wS2NHgv75K9d5bt28HdnzzjxmG26qzqlrNvWZUTvl2pSG3/eQzAKHXlih1LaprSOb/nlfnFFdiR5IlXlYBC8qhgEN96Vb1fFIDh/jU9M+9FWqPUL/WEy1uKkGVn92HaNrz3cuW301bNjunfF6TZRw31CtaRbzh4aN3evzQXJ6lmhQ/b2Yk53M5Z6LL42ttXtXvtTey8xuGWI47fujy6amVPQDBfePjRXQyV7ttvtZz3k19y3zM+/P3voxZgj9xYUqTaayj6c18DcNOLD6+L86MU2Nd+o3Y44wHVbPidEI3Lh3lVNlgVaH++u/WhIv5a6yTONW95W07d7d8a20yjbFg0jNbMfRbQom6ohvXFUY/CcZ5f26j3uNnPScceGA9YcfnxggmabcRd6RJoU8qf2R/v388F6GjLt3Cuy5FfNfwzonWHd6P67qfFnuns/WB6xYNjWJl0uvB5zeDM3dkj9p6uX1ndQHa0/5GSLOqFGcc80f7Laf65txt13BRN23Vm7Mcpxb7fjw80k9UZpNvecNbyva1vZgYyMtK6B2SvblMWMMYlZIecDHrSRDNDPXmFqktP2YcOH+1+6nbG6cNkupku9Bm7mA/s+8n66/vri5aeahh+MtYhSrVU4yuTw0rgjFl6704e2mL5q1OCdYauk6w9v7vBMEl4yw27YjtIb3bNnmZ0MOLjccJrEj2lhndpn7t58k7u70k757oz2UrnQ2sZj64K0ddFbMlIWjdT/df406UjTRnYb1cNSfGbVPZzydMopk7zHddxPLinsePMN9g+frjkhOzj7XtijDUlnbeuXaR/36Xe5a+1Vl983WtHSpqduyEnpmhI+Tm0sH6cypNwUaCfmgilgPw4DYhO+iyq243lBIOt/iUBWRgS2xGw42/GOTQSj0RgubXl6+Y9HLHHMH20HQ20HQ2wHkbktz95Hig1stl0O2xwn7uqwr2h3b5OVbWo3CHnY12PzXlVnfVHHfZOytOpccwo5Ibms+cz56GLVtOwmF7HMts356TXH+E2buGCQ+bDUFR2XPQwakHtjaY8dGlZZqb9uarh9bI3US4v6nBqkr/IwYNQDO896kkb3t6h7nMtot6f/5WM27MgtQS9Oh75o2m+V7kvXfTed/baG+TlGr0/x1bE+3+qHt3euq9W82G/Muo7179c8lCIdfWhBi6cf7jTsKzbq6m25emzkTUnTPR0HXH7ypO28yb+O2zEuvvavLumz+j+Y7j5Fv2hVoz75ic2st9v3Pr7HpdTufAbbIn1H6nznibnLY6xedfOeZ+JYN6tJmN+kHvuW6WxTmE05/XIfGz/7zcBnOZ6HZy2YdiDTJKruQM5y9xkLS+e6yU06NT43Pn3+dgOzDZsCCgYbDb1l2XH5wITbdfufN+ns4nlsV6+W5uyzX8b6NLpodieiv05319EZb9GtA1uZuIFXM+UZB2tf6Nn5fpNVOg/NOh7g9rYb3z7/SFbk2JuR981vHHZdfPzpUYNeVyfPLujakd+wZc6NAp+VqcXX0gJuH0mKHfck70nn+x3rb5Bart8wITDm3owh0QN3NJpyqdeyfodHW1o+fxKaZTnXam4rJ/cjt6a2m36sRpfjF9a1bRS18E3Y22jj3lbS/oMWLnFxt59yJS1B7/qKbi8XpR1wTRmWnHszL2FWhe18Qmznw2rMX6XxrDYuUVTcIGNEWnU0UA80Eg1BbVHr39vVPxjlqhFPpHVTxjax7Y8ylW63Hm34yfYXs+kOfF/BuNElVPeUrimd4zt+1aIPkVsitURYK4KSgbz9QDs7MHMDqpg5T96D71bFzLX5MjP3ifqj+NiVtPHGotgkPnYBHzuvYpBsWD52Mt+y/HEM1rX/XJjlF+47gvQsOHRw5BjfiBE2QVGhfKuKChjeoY6dsSHqgvxRIBqMhqGBKAJWlYORLxpDrkagKEKnK8yh5AwjKRtjw+oCscCi+HXJN73G6NucvxwVaLpUc1GtW77zF7dZNCF3jFbiEf+BNlYub7MifwmdXHqo5QONU80Od9i05kXwVd/Dpo7rkvr7T0mcMNPVo+dlrfnjc/U7G7xo3mamZ05aScgdFzWb+kvvtai97sIuw9ELmtx+6HeyXYvosWYvpBPWJ0ZNnv3ydD3GtcHRGeL9azepaC19EvQ+yGZhSoOWDUJ6d/Q1qhEc1jd5Uf7kl5lzX7g2vF7cLOeg49Owutvvplo8ybn2Qjt1sWVSclftFppF6tPzjLLsuNvPjluf9Vmxs2MTjRMaR09s2353x69X5Qnd2/d2thtuoT8p/aXF2+tWTY2Dk3f0mR4UFr5hT1RWKxXV9biBpUtcS2nXAM3MjK6vbs2dZBAun9B+w6i7rRr4r8nq7zkkPsvQt3FS/I0rL94W6a5aYnHr53VJOYX9fVvf8VFbNs1FdbTqL6rpI41khwYP3vXstxO1RYdutP5J27Lwun+jgqTXq/otuozyVrke7PMiaV2Nzm7ixTFGOaj+8fSl61q2H13H8UTu6tUrx441fe+20GjLhw5mMa9WvD0csqdz0u3HI6P1Cx45LR7DdS7LyzALGnkv9X3xzMeaMY+Cm6UW809EXebcuDEy1Hdei1+We3dzPxzTy3RVdC07k7FPW2ukt/yw8cza/kdWJSztNdy7m1v7zDYnl47y0YhxCykZs/LIwdDQoSc9R0hrjvX42TZOlMbHibYyGPOxC/9pw1X9cmDly5GU2GNU+SiZuAZrq1X1zQtpReWVpq32/80AWVbUQBmhkcUQWLT9neKyvO/Tx2uNQvc19+ZOaNn2WuqeQQqSFh7DMIOQBVoNGgy+4IxVBMxioMmbNGB2UmAIAWY0UKZLB4onAlkZDJUL1RpUcObskMqC/PSixIKMSgW0upmliZEh2L1vWfO2eflR6my3DeOC9HdvDmS3N+STrVpX7h4Ss9/chN9c4HJwmkoo262giaIvZswSyyyK1lm3+YmepoAqnxvX78z2Se45xyaleN8+1MVyP+O9Ydv1e1tOrZ34tndZYH1+xUpGlj1/92zfeeLl279H2xluPd89N2XxJevjOcfjf7/8vUv0wnSLnLfabJ/eu7cLVlyQ/R9uffZRhFzYi+MdHEKHluXMnPP09wHN1B82NsxrPLYoOVYpLt/zTOTMBOff0dJv/cskHFf9XenB32UduiPr0J5lRneTBfaZRfSx6tnLTIhd1Pv8hVTniykzzlZ+s3stk93El8V4ak+YWsYSXvn7aiE3vHWiFbsWNjFpAJsnKog4YjNsYhIFCgmCk2bfgHXEsc+0IaXJWAMJ5CTJjZgxZARaDpdhNeQHDxybGZoaGYJAFEaKdH7ZYj0vQOP4a7Ue0bwrBzJkZ2+rROsygdKKoZ9wPVNnOLNMpNf0ktdczV6axlKax2M/33r86V3N6imzlV8YpQu95nl062qvn2qW2uL7sxriZupeMotLFVl58/H6OrHcV47iF0ru/s9/z7nQad4nr8J6raCoefLvmDbrek5xUbzy7ic3e+Lr0Mo6jsq66QXC8QtSozVY5dOObzqRNvfKu8R7jmXu2//eu/X0b9O/p8mR53c93jSdN/PIpcKpH7+Wuex8cKTy4r9zS3ZwzzdkDX7qs2P3TvnQ2IWfW15Oute7ZwN342vhuXZmWdlzzsQ6Xny55OrtxZtf3LrNUyscccNJ50re7uua1i2vnXgPNLMHPrT6vDrSZ1NXGeP79Yc0P5Uu7TK0vNPrwgAAh8DNlw0KZW5kc3RyZWFtDQplbmRvYmoNCjE5IDAgb2JqDQo8PC9UeXBlL1hSZWYvU2l6ZSAxOS9XWyAxIDQgMl0gL1Jvb3QgMSAwIFIvSW5mbyA5IDAgUi9JRFs8QThGQkJEMkIwRDc5QTQ0RkJBNDEwODYwQTY3Qjk3OTQ+PEE4RkJCRDJCMEQ3OUE0NEZCQTQxMDg2MEE2N0I5Nzk0Pl0gL0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggNzY+Pg0Kc3RyZWFtDQp4nGNgAIL//xmBpCADA4iqhVBbwRTjYTDF1AWmmI3AFIsihAqDUN1AeaAGAQYmCMUMoVggFCOEgiphBWpgbQLrY2eCUKcZGACLmAe+DQplbmRzdHJlYW0NCmVuZG9iag0KeHJlZg0KMCAyMA0KMDAwMDAwMDAxMCA2NTUzNSBmDQowMDAwMDAwMDE3IDAwMDAwIG4NCjAwMDAwMDAxMjUgMDAwMDAgbg0KMDAwMDAwMDE4MSAwMDAwMCBuDQowMDAwMDAwNDUxIDAwMDAwIG4NCjAwMDAwMDA2NTAgMDAwMDAgbg0KMDAwMDAwMDgxOCAwMDAwMCBuDQowMDAwMDAxMDU3IDAwMDAwIG4NCjAwMDAwMDExMTAgMDAwMDAgbg0KMDAwMDAwMTE2MyAwMDAwMCBuDQowMDAwMDAwMDExIDY1NTM1IGYNCjAwMDAwMDAwMTIgNjU1MzUgZg0KMDAwMDAwMDAxMyA2NTUzNSBmDQowMDAwMDAwMDE0IDY1NTM1IGYNCjAwMDAwMDAwMTUgNjU1MzUgZg0KMDAwMDAwMDAxNiA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDE3OTQgMDAwMDAgbg0KMDAwMDAwMTk5NSAwMDAwMCBuDQowMDAwMTgwOTEzIDAwMDAwIG4NCnRyYWlsZXINCjw8L1NpemUgMjAvUm9vdCAxIDAgUi9JbmZvIDkgMCBSL0lEWzxBOEZCQkQyQjBENzlBNDRGQkE0MTA4NjBBNjdCOTc5ND48QThGQkJEMkIwRDc5QTQ0RkJBNDEwODYwQTY3Qjk3OTQ+XSA+Pg0Kc3RhcnR4cmVmDQoxODExODgNCiUlRU9GDQp4cmVmDQowIDANCnRyYWlsZXINCjw8L1NpemUgMjAvUm9vdCAxIDAgUi9JbmZvIDkgMCBSL0lEWzxBOEZCQkQyQjBENzlBNDRGQkE0MTA4NjBBNjdCOTc5ND48QThGQkJEMkIwRDc5QTQ0RkJBNDEwODYwQTY3Qjk3OTQ+XSAvUHJldiAxODExODgvWFJlZlN0bSAxODA5MTM+Pg0Kc3RhcnR4cmVmDQoxODE3NDUNCiUlRU9G</content> - <contentType>application/pdf</contentType> - <id>assistants.3F4C5F9B9737333933B9356E49AA35EB3D9272B9</id> - <name>test.pdf</name> - </attachments> - <attachments> - <attributes> - <key>X-IntelliForm-Signed</key> - <value>false</value> - </attributes> - <content>JVBERi0xLjUNCiW1tbW1DQoxIDAgb2JqDQo8PC9UeXBlL0NhdGFsb2cvUGFnZXMgMiAwIFIvTGFuZyhkZS1ERSkgL1N0cnVjdFRyZWVSb290IDEwIDAgUi9NYXJrSW5mbzw8L01hcmtlZCB0cnVlPj4+Pg0KZW5kb2JqDQoyIDAgb2JqDQo8PC9UeXBlL1BhZ2VzL0NvdW50IDEvS2lkc1sgMyAwIFJdID4+DQplbmRvYmoNCjMgMCBvYmoNCjw8L1R5cGUvUGFnZS9QYXJlbnQgMiAwIFIvUmVzb3VyY2VzPDwvRm9udDw8L0YxIDUgMCBSPj4vRXh0R1N0YXRlPDwvR1M3IDcgMCBSL0dTOCA4IDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0L0ltYWdlQi9JbWFnZUMvSW1hZ2VJXSA+Pi9NZWRpYUJveFsgMCAwIDU5NS4zMiA4NDEuOTJdIC9Db250ZW50cyA0IDAgUi9Hcm91cDw8L1R5cGUvR3JvdXAvUy9UcmFuc3BhcmVuY3kvQ1MvRGV2aWNlUkdCPj4vVGFicy9TL1N0cnVjdFBhcmVudHMgMD4+DQplbmRvYmoNCjQgMCBvYmoNCjw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMTI1Pj4NCnN0cmVhbQ0KeJxT0A9QsLHR93X2dFEwsLNTcHJxVnAK4eXSdzNUMDTQs7RQCEnj5TJUMABCQwVzAz0LMwVzMwM9MyOFkFygMvdgc4X0Yl4uA4V0MM8CynPn5YrWKEktLtGMVQjx4uVyBZoJMhdmkoWFnoEJsknRGgpIShVcfZ0VAKkCHzkNCmVuZHN0cmVhbQ0KZW5kb2JqDQo1IDAgb2JqDQo8PC9UeXBlL0ZvbnQvU3VidHlwZS9UcnVlVHlwZS9OYW1lL0YxL0Jhc2VGb250L0FCQ0RFRStDYWxpYnJpL0VuY29kaW5nL1dpbkFuc2lFbmNvZGluZy9Gb250RGVzY3JpcHRvciA2IDAgUi9GaXJzdENoYXIgMzIvTGFzdENoYXIgMTE2L1dpZHRocyAxNyAwIFI+Pg0KZW5kb2JqDQo2IDAgb2JqDQo8PC9UeXBlL0ZvbnREZXNjcmlwdG9yL0ZvbnROYW1lL0FCQ0RFRStDYWxpYnJpL0ZsYWdzIDMyL0l0YWxpY0FuZ2xlIDAvQXNj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</content> - <contentType>application/pdf</contentType> - <id>assistants.7C9AC0743CE065A74E0DC2D85F9682BFC49035BB</id> - <name>test (1).pdf</name> - </attachments> - <attachments> - <attributes> - <key>X-IntelliForm-Signed</key> - <value>false</value> - </attributes> - <content>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ZW5kb2JqDQozNCAwIG9iag0KPDwNCi9PcGVuQWN0aW9uIFsgMSAwIFIgL1hZWiBudWxsIG51bGwgMSBdDQovVHlwZSAvQ2F0YWxvZw0KL0xhbmcgKGRlLURFKQ0KL1BhZ2VzIDE2IDAgUg0KPj4NCmVuZG9iag0KMzUgMCBvYmoNCjw8DQovQ3JlYXRvciA8ZmVmZjAwNTcwMDcyMDA2OTAwNzQwMDY1MDA3Mj4NCi9DcmVhdGlvbkRhdGUgKEQ6MjAyMTA0MTQwOTAxNDUrMDInMDAnKQ0KL1Byb2R1Y2VyIChjaXQgcGRmc3VpdGUgXCh3d3cuY2l0LmRlXCkpDQovQXV0aG9yIDxmZWZmMDA0YjAwNmMwMDYxMDA3NTAwNzMwMDIwMDA1NzAwNjEwMDZlMDA2ZTAwNjUwMDcyPg0KPj4NCmVuZG9iag0KeHJlZg0KMCAzNiANCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDA2OCAwMDAwMCBuDQowMDAwMDAwMjU1IDAwMDAwIG4NCjAwMDAwMTI3MjYgMDAwMDAgbg0KMDAwMDAxMjc1MCAwMDAwMCBuDQowMDAwMDQ0MzE5IDAwMDAwIG4NCjAwMDAwNTQxODMgMDAwMDAgbg0KMDAwMDA1NDIwNiAwMDAwMCBuDQowMDAwMDU0MzkzIDAwMDAwIG4NCjAwMDAwNjU3NTEgMDAwMDAgbg0KMDAwMDA2NTc3NSAwMDAwMCBuDQowMDAwMDY1OTY0IDAwMDAwIG4NCjAwMDAwNzc4NTkgMDAwMDAgbg0KMDAwMDA3Nzg4NCAwMDAwMCBuDQowMDAwMDc4MDczIDAwMDAwIG4NCjAwMDAwODkwNTkgMDAwMDAgbg0KMDAwMDA4OTA4NCAwMDAwMCBuDQowMDAwMDg5MjE3IDAwMDAwIG4NCjAwMDAwOTEyNjAgMDAwMDAgbg0KMDAwMDA5MTI4NCAwMDAwMCBuDQowMDAwMDkxNDk3IDAwMDAwIG4NCjAwMDAwOTE4MDYgMDAwMDAgbg0KMDAwMDA5MTk5MCAwMDAwMCBuDQowMDAwMTAwNDEyIDAwMDAwIG4NCjAwMDAxMDA0MzYgMDAwMDAgbg0KMDAwMDEwMDY1OCAwMDAwMCBuDQowMDAwMTAxMjA5IDAwMDAwIG4NCjAwMDAxMDE2MjMgMDAwMDAgbg0KMDAwMDExMDE3MCAwMDAwMCBuDQowMDAwMTEwMTk0IDAwMDAwIG4NCjAwMDAxMTA0MTMgMDAwMDAgbg0KMDAwMDExMDk5MiAwMDAwMCBuDQowMDAwMTExNDI4IDAwMDAwIG4NCjAwMDAxMTE0OTAgMDAwMDAgbg0KMDAwMDExMTYwOCAwMDAwMCBuDQowMDAwMTExNzIwIDAwMDAwIG4NCnRyYWlsZXINCjw8DQovSW5mbyAzNSAwIFINCi9JRCBbIDw4YmVlYWQzNmY0ODliNDBkNzk2NWZhNDQ5ODVjOWFmNT4gPDAxMDJlNWRhZGQwNTgzMzQ4YTMzN2NiOTc3ZjE0MzQ5PiBdDQovUm9vdCAzNCAwIFINCi9TaXplIDM2DQovRG9jQ2hlY2tzdW0gLzA1NjMzRjY4QUU3RkI1MUU5MzA1QTBDNDdEMTI3MjlGDQo+Pg0Kc3RhcnR4cmVmDQoxMTE5MzMNCiUlRU9GDQo=</content> - <contentType>application/pdf</contentType> - <id>myForm-pdf</id> - <name>Eingliederungshilfe-Antrag.pdf</name> - </attachments> - <attachments> - <attributes> - <key>X-IntelliForm-Signed</key> - <value>false</value> - </attributes> - <content>PGh0bWwgeG1sbnM6dD0iaHR0cDovL3htbG5zLmNpdC5kZS9pbnRlbGxpZm9ybS90cmFuc2FjdGlvbiI+CjxoZWFkPgo8TUVUQSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KPC9oZWFkPgo8Ym9keSBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmE7IGZvbnQtc2l6ZTogMTFwdDsiPgogICAgICAgICAgICBTZWhyIGdlZWhydGUvciBBbnRyYWdzdGVsbGVyKmluLCA8YnI+Cjxicj4KSWhyIEFudHJhZyB3dXJkZSBlcmZvbGdyZWljaCAmdXVtbDtiZXJtaXR0ZWx0Ljxicj4KPGJyPgpCaXR0ZSBiZWFjaHRlbiBTaWUsIGRhc3MgZGllIEJlYXJiZWl0dW5nc3plaXQgbmFjaCBFaW5nYW5nIGFsbGVyIFVudGVybGFnZW4gMiBXb2NoZW4gYmlzIDIgTW9uYXRlIGJldHImYXVtbDtndC4gU2llIGVyaGFsdGVuIHVuYXVmZ2Vmb3JkZXJ0IGVpbmUgUiZ1dW1sO2NrbWVsZHVuZyB6dSBJaHJlbSBBbnRyYWcuPGJyPgo8YnI+IApJaHJlIFZvcmdhbmdzbnVtbWVyIGxhdXRldDogCjUxLzUxLjIwLzIwMjEwNDE0MzI0MTIwMDkwMjA3LgpCaXR0ZSBnZWJlbiBTaWUgZGllc2UgVm9yZ2FuZ3NudW1tZXIgYmVpIGFsbGVuIEFuZnJhZ2VuIHp1IElocmVtIEFudHJhZyBhbi48YnI+Cjxicj4KPGJyPgpNaXQgZnJlbmRsaWNoZW4gR3ImdXVtbDsmc3psaWc7ZW48YnI+CklociBLcmVpcyBTZWdlYmVyZzxicj4KPGJyPgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08YnI+Cjxicj4KPHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hOyBmb250LXNpemU6IDlwdDsiPktyZWlzIFNlZ2ViZXJnIDxicj4KRWluZ2xpZWRlcnVuZ3NoaWxmZSBmJnV1bWw7ciBNaW5kZXJqJmF1bWw7aHJpZ2U8YnI+Cjxicj4KUG9zdGFuc2NocmlmdDo8YnI+CkhhbWJ1cmdlciBTdHIuIDMwPGJyPgoyMzc5NSBCYWQgU2VnZWJlcmc8YnI+Cjxicj4KQmVzdWNoZXJhbnNjaHJpZnQ6PGJyPgpCdXJnZmVsZHN0ci4gNDFhIDxicj4KMjM3OTUgQmFkIFNlZ2ViZXJnIDxicj4KPGJyPgpGYXg6ICs0OTQ1NTEvOTUxLTk1NjUgPGJyPgpFLU1haWw6IDxhIGhlcmY9Im1haWx0bzppbnRlZ3JhdGlvbi5raW5kZXJAc2VnZWJlcmcuZGUgIj5pbnRlZ3JhdGlvbi5raW5kZXJAc2VnZWJlcmcuZGUgPC9hPgo8YnI+CkludGVybmV0OiA8YSBocmVmPSJ3d3cuc2VnZWJlcmcuZGUiPnd3dy5zZWdlYmVyZy5kZTwvYT48L3NwYW4+Cjxicj4KPC9ib2R5Pgo8L2h0bWw+Cg==</content> - <contentType>text/xml</contentType> - <id>EmailBodyTemplate</id> - <name>EmailBodyTemplate.xml</name> - </attachments> - <caller/> - <client>Schleswig-Holstein</client> - <clientId>land</clientId> - <customParameters> - <key>AbsenderBehoerdenkennung</key> - <value>afmsh:afm_eEingliederungshilfe</value> - </customParameters> - <customParameters> - <key>EmailAdresseSachbearbeitung</key> - <value>noreply@ozg-sh.de</value> - </customParameters> - <customParameters> - <key>EmailSubjectTemplate</key> - <value>EGH Stage Deposit Prüfung</value> - </customParameters> - <customParameters> - <key>EmpfaengerBehoerdenkennung</key> - <value>afmsh:12345_eEingliederungshilfe</value> - </customParameters> - <customParameters> - <key>mailboxguid</key> - <value>c5a446b7-d6b0-4c61-9ad2-aae600857982</value> - </customParameters> - <customParameters> - <key>PostfachAttachmentIds</key> - <value>myForm-pdf</value> - </customParameters> - <customParameters> - <key>PostfachBodyTemplate</key> - <value>Sehr geehrte/r Antragsteller*in, <br/><br/>Ihr Antrag wurde erfolgreich übermittelt.<br/><br/>Bitte beachten Sie, dass die Bearbeitungszeit nach Eingang aller Unterlagen 2 Wochen bis 2 Monate beträgt. Sie erhalten unaufgefordert eine Rückmeldung zu Ihrem Antrag.<br/><br/>Ihre Vorgangsnummer finden Sie im angehängten Dokument. <br/>Bitte geben Sie diese Vorgangsnummer bei allen Anfragen zu Ihrem Antrag an.<br/><br/><br/>Mit frendlichen Grüßen<br/>Ihr Kreis Segeberg<br/><br/>---------------------------------------------------<br/><br/>Kreis Segeberg <br/>Eingliederungshilfe für Minderjährige<br/><br/>Postanschrift:<br/>Hamburger Str. 30<br/>23795 Bad Segeberg<br/><br/>Besucheranschrift:<br/>Burgfeldstr. 41a <br/>23795 Bad Segeberg <br/><br/>Fax: +494551/951-9565 <br/>E-Mail: <a herf="mailto:integration.kinder@segeberg.de">integration.kinder@segeberg.de</a><br/>Internet: <a href="www.segeberg.de">www.segeberg.de</a><br/></value> - </customParameters> - <customParameters> - <key>PostfachIsHtml</key> - <value>true</value> - </customParameters> - <customParameters> - <key>PostfachSubjectTemplate</key> - <value>Ihr Antrag auf Eingliederungshilfe für Minderjährige</value> - </customParameters> - <customer>Kreis Segeberg</customer> - <customerId>kreis-segeberg/kreis-segeberg</customerId> - <form>Eingliederungshilfe Minderjährige</form> - <formId>pfm_postfachmitteilung</formId> - <id>20210414324120090207</id> - <primaryDataAttachmentId>myForm-xml</primaryDataAttachmentId> - <primaryFormAttachmentId>myForm-pdf</primaryFormAttachmentId> - <sender>stage.afm.schleswig-holstein.de</sender> - <timestamp>2021-04-14T09:01:49.030+02:00</timestamp> - <username>de937a17-b156-4aaf-9476-2658bc872659</username> - </data> - </ns2:deposit> - </soap:Body> -</soap:Envelope> diff --git a/intelliform-adapter/src/main/scripts/vorgang-GewerbeAnmeldung.xml b/intelliform-adapter/src/main/scripts/vorgang-GewerbeAnmeldung.xml deleted file mode 100644 index cc000e05..00000000 --- a/intelliform-adapter/src/main/scripts/vorgang-GewerbeAnmeldung.xml +++ /dev/null @@ -1,30 +0,0 @@ -<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> - <soap:Body> - <ns2:deposit xmlns:ns2="http://xmlns.cit.de/intelliform/2009/webservices/backend"> - <data> - <attachments> - <attributes> - <key>X-IntelliForm-Signed</key> - <value>false</value> - </attributes> - <content>PG15Rm9ybSB4bWxuczpwZGY9Imh0dHA6Ly94bWxucy5jaXQuZGUvYXNzaXN0YW50cy9wZGYiDQoJeG1sbnM6dD0iaHR0cDovL3htbG5zLmNpdC5kZS9pbnRlbGxpZm9ybS90cmFuc2FjdGlvbiINCgl0OmlkPSIyMDIwMTIwMjU3NTIzMDQ0MzAwNCIgdDp0aW1lc3RhbXA9IjIwMjAtMTItMDJUMTQ6NTg6NDMuNzkwWiINCgl0OnNlbmRlcj0iYWZtLnNjaGxlc3dpZy1ob2xzdGVpbi5kZSIgdDpmb3JtPSJHZXdlcmJlYW5tZWxkdW5nIg0KCXQ6Zm9ybS1pZD0iZUdld2VyYmUvZUdld2VyYmVBbm1lbGR1bmciDQoJdDpjdXN0b21lcj0iRWluaGVpdGxpY2hlciBBbnNwcmVjaHBhcnRuZXIiIHQ6Y3VzdG9tZXItaWQ9ImVhLXNoIg0KCXQ6Y2xpZW50PSJTY2hsZXN3aWctSG9sc3RlaW4iIHQ6Y2xpZW50LWlkPSJsYW5kIj4NCgk8R3VlbHRpZ0FiPjIwMjAtMTEtMDI8L0d1ZWx0aWdBYj4NCgk8R3J1bmRBbm1lbGR1bmdTY2hsdWVzc2VsPjAxPC9HcnVuZEFubWVsZHVuZ1NjaGx1ZXNzZWw+DQoJPEFubGllZ2VuSUQ+ODkzODYzNDwvQW5saWVnZW5JRD4NCgk8TmllZGVybGFzc3VuZ0FydD4xPC9OaWVkZXJsYXNzdW5nQXJ0Pg0KCTxJc3RSZWlzZWdld2VyYmU+ZmFsc2U8L0lzdFJlaXNlZ2V3ZXJiZT4NCgk8QmV0cmllYkFydEluZHVzdHJpZT5mYWxzZTwvQmV0cmllYkFydEluZHVzdHJpZT4NCgk8QmV0cmllYkFydEhhbmR3ZXJrPmZhbHNlPC9CZXRyaWViQXJ0SGFuZHdlcms+DQoJPEJldHJpZWJBcnRIYW5kZWw+ZmFsc2U8L0JldHJpZWJBcnRIYW5kZWw+DQoJPEJldHJpZWJBcnRTb25zdGlnZXM+dHJ1ZTwvQmV0cmllYkFydFNvbnN0aWdlcz4NCgk8cmVjaHRzZm9ybT5uaWNodCBlaW5nZXRyYWdlbmVzIEVpbnplbHVudGVybmVobWVuPC9yZWNodHNmb3JtPg0KCTxyZm0+MTgwPC9yZm0+DQoJPHJlZ2lzdGVyYXJ0IC8+DQoJPG1pbjJnZXNlbGxzY2hhZnRlcj5mYWxzZTwvbWluMmdlc2VsbHNjaGFmdGVyPg0KCTxnZXNldHpsaWNoZXJ2ZXJ0cmV0ZXI+SW5oYWJlcjwvZ2VzZXR6bGljaGVydmVydHJldGVyPg0KCTxCZXRyaWViPg0KCQk8SUQ+OTEwODM4PC9JRD4NCgkJPGdlc2NoYWVmdHNiZXplaWNobnVuZz5PWkctQ29uc3VsdGluZzwvZ2VzY2hhZWZ0c2JlemVpY2hudW5nPg0KCQk8RWludHJhZ3VuZ1BMWiAvPg0KCQk8RWludHJhZ3VuZ09ydCAvPg0KCQk8R2VyaWNodFNjaGx1ZXNzZWwgLz4NCgk8L0JldHJpZWI+DQoJPHNoX3N0cmFzc2U+UmV2ZW50bG91YWxsZTwvc2hfc3RyYXNzZT4NCgk8c2hfenVzYXR6IC8+DQoJPHNoX2hhdXNudW1tZXI+Njwvc2hfaGF1c251bW1lcj4NCgk8c2hfcGx6PjI0MTA1PC9zaF9wbHo+DQoJPG9ydF9hdXN3YWhsPjkwMDY0MDIkMDEwMDIwMDA8L29ydF9hdXN3YWhsPg0KCTxzaF9vcnRzdGVpbCAvPg0KCTxvcnQ+S2llbDwvb3J0Pg0KCTxHZWJpZXRJRD45MDA2NDAyPC9HZWJpZXRJRD4NCgk8R2ViaWV0QkVaRUlDSE5VTkc+S2llbDwvR2ViaWV0QkVaRUlDSE5VTkc+DQoJPEdlYmlldEdOUjk0X0dOUj4wMTAwMjAwMDwvR2ViaWV0R05SOTRfR05SPg0KCTxzdGFhdD4wMDA8L3N0YWF0Pg0KCTxpc28zMTY2bnVtZXJpc2NoPjI3NjwvaXNvMzE2Nm51bWVyaXNjaD4NCgk8a29udF90ZWxlZm9ubnVtbWVyPjA0MzEgMTIzPC9rb250X3RlbGVmb25udW1tZXI+DQoJPGtvbnRfdGVsZWZheG51bW1lcj4rIDQ5IDQ2MjEgOTY1NDwva29udF90ZWxlZmF4bnVtbWVyPg0KCTxrb250X2VtYWlsPm1heC50ZXN0ZXJtYW5uQGdteC5kZTwva29udF9lbWFpbD4NCgk8a29udF9kZW1haWw+bWF4LnRlc3Rlcm1hbm5AZ214LmRlLW1haWwuZGU8L2tvbnRfZGVtYWlsPg0KCTxrb250X2hvbWVwYWdlPmh0dHA6Ly93d3cubWF4LXRlc3Rlci5kZTwva29udF9ob21lcGFnZT4NCgk8Yl9rb250X3ZvcndhaGxfdGVsZWZvbj4wNDMxPC9iX2tvbnRfdm9yd2FobF90ZWxlZm9uPg0KCTxiX2tvbnRfdGVsZWZvbj4xMjM8L2Jfa29udF90ZWxlZm9uPg0KCTxiX2tvbnRfdm9yd2FobF90ZWxlZmF4PisgNDkgNDYyMTwvYl9rb250X3ZvcndhaGxfdGVsZWZheD4NCgk8Yl9rb250X3RlbGVmYXg+OTY1NDwvYl9rb250X3RlbGVmYXg+DQoJPFRhZXRpZ2tlaXRlbkdlc2FtdD4NCgkJPFRhZXRpZ2tlaXRlbkdlc2FtdC1pdGVtPg0KCQkJPGF1c3dhaGxfb2JlcmJlZ3JpZmY+UzwvYXVzd2FobF9vYmVyYmVncmlmZj4NCgkJCTxhdXN3YWhsX2thdGVnb3JpZT45NjwvYXVzd2FobF9rYXRlZ29yaWU+DQoJCQk8Y2hlY2tfdGFldGlna2VpdHNzY2h3ZXJwdW5rdD50cnVlPC9jaGVja190YWV0aWdrZWl0c3NjaHdlcnB1bmt0Pg0KCQkJPGFfdGFldGlna2VpdD5PWkctRW50d2lja2x1bmc8L2FfdGFldGlna2VpdD4NCgkJCTxiX29iZXJiZWdyaWZmPlMgRXJicmluZ3VuZyB2b24gc29uc3RpZ2VuIERpZW5zdGxlaXN0dW5nZW48L2Jfb2JlcmJlZ3JpZmY+DQoJCQk8Yl9rYXRlZ29yaWU+OTYgRXJicmluZ3VuZyB2b24gc29uc3RpZ2VuIMO8YmVyd2llZ2VuZCBwZXJzw7ZubGljaGVuDQoJCQkJRGllbnN0bGVpc3R1bmdlbjwvYl9rYXRlZ29yaWU+DQoJCQk8Yl91bnRlcmtsYXNzZT45Ni4wOS4wIEVyYnJpbmd1bmcgdm9uIHNvbnN0aWdlbiBEaWVuc3RsZWlzdHVuZ2VuIGEuDQoJCQkJbi4gZy48L2JfdW50ZXJrbGFzc2U+DQoJCQk8Yl91bnRlcmtsYXNzZV9zY2hsdWVzc2VsPjk2LjA5LjA8L2JfdW50ZXJrbGFzc2Vfc2NobHVlc3NlbD4NCgkJCTxiX2lua2w+LSBUw6R0aWdrZWl0ZW4gdm9uIEFzdHJvbG9naW5uZW4sIEFzdHJvbG9nZW4gU3Bpcml0aXN0aW5uZW51bmQNCgkJCQlTcGlyaXRpc3RlbiAtIEVyYnJpbmd1bmcgcGVyc8O2bmxpY2hlciBEaWVuc3RsZWlzdHVuZ2VuIHdpZQ0KCQkJCUJlZ2xlaXRkaWVuc3RlLCBIZWlyYXRzLSB1bmQgUGFydG5lcnZlcm1pdHRsdW5nIC0gQmV0cmV1dW5nIHZvbg0KCQkJCUhhdXN0aWVyZW4gd2llIFVudGVyYnJpbmd1bmcsIFBmbGVnZSwgQmVhdWZzaWNodGlndW5nIHVuZCBEcmVzc3VyIC0NCgkJCQlUw6R0aWdrZWl0ZW4gdm9uIEFobmVuZm9yc2NodW5nc2luc3RpdHV0ZW4gLSBUw6R0aWdrZWl0ZW4gdm9uDQoJCQkJVMOkdG93aWVydW5ncy0gdW5kIFBpZXJjaW5nc3R1ZGlvcyAtIFTDpHRpZ2tlaXRlbiB2b24gU2NodWhwdXR6ZXJpbm5lbg0KCQkJCXVuZCBTY2h1aHB1dHplcm4sIFRyw6RnZXJpbm5lbiB1bmQgVHLDpGdlcm4sIFBhcmtwbGF0enp1d2Vpc2VyaW5uZW4NCgkJCQl1bmQgLXp1d2Vpc2VybiB1c3cuIC0gQmV0cmllYiB2b24gbcO8bnpiZXRyaWViZW5lbiBHZXLDpHRlbiBmw7xyDQoJCQkJcGVyc8O2bmxpY2hlIERpZW5zdGxlaXN0dW5nZW4gd2llIEZvdG9hdXRvbWF0ZW4sIFdhYWdlbiwNCgkJCQlCbHV0ZHJ1Y2ttZXNzZXJuLCBTY2hsaWXDn2bDpGNoZXJuIHVzdy48L2JfaW5rbD4NCgkJPC9UYWV0aWdrZWl0ZW5HZXNhbXQtaXRlbT4NCgk8L1RhZXRpZ2tlaXRlbkdlc2FtdD4NCgk8SXN0TmViZW5lcndlcmI+ZmFsc2U8L0lzdE5lYmVuZXJ3ZXJiPg0KCTxBbnphaGxWb2xsemVpdEJlc2NoYWVmdGlndGU+MTwvQW56YWhsVm9sbHplaXRCZXNjaGFlZnRpZ3RlPg0KCTxBbnphaGxUZWlsemVpdEJlc2NoYWVmdGlndGU+MDwvQW56YWhsVGVpbHplaXRCZXNjaGFlZnRpZ3RlPg0KCTxCZXRlaWxpZ3RlUGVyc29uPg0KCQk8QmV0ZWlsaWd0ZVBlcnNvbi1pdGVtPg0KCQkJPHBlcnNvbkZ1bmt0aW9uPjE8L3BlcnNvbkZ1bmt0aW9uPg0KCQkJPHBlcnNvbkZ1bmt0aW9uVGV4dD5FaW56ZWxnZXdlcmJldHJlaWJlbmRlcjwvcGVyc29uRnVua3Rpb25UZXh0Pg0KCQkJPGRva3RvcmdyYWRTY2hsdWVzc2VsIC8+DQoJCQk8ZG9rdG9yZ3JhZCAvPg0KCQkJPGZhbWlsaWVubmFtZT5UZXN0ZXJtYW5uPC9mYW1pbGllbm5hbWU+DQoJCQk8dm9ybmFtZT5NYXg8L3Zvcm5hbWU+DQoJCQk8Z2VzY2hsZWNodFRleHQ+bcOkbm5saWNoPC9nZXNjaGxlY2h0VGV4dD4NCgkJCTxnZXNjaGxlY2h0PjE8L2dlc2NobGVjaHQ+DQoJCQk8Z2VidXJ0c25hbWU+TWF4IFRlc3Rlcm1hbm48L2dlYnVydHNuYW1lPg0KCQkJPGdlYnVydHNkYXR1bT4xOTk1LTAzLTIxPC9nZWJ1cnRzZGF0dW0+DQoJCQk8Z2VidXJ0c29ydD5GbGVuc2J1cmc8L2dlYnVydHNvcnQ+DQoJCQk8Z2VidXJ0c2xhbmQ+RGV1dHNjaGxhbmQ8L2dlYnVydHNsYW5kPg0KCQkJPGdlYnVydHNsYW5kU2NobHVlc2VsPjAwMDwvZ2VidXJ0c2xhbmRTY2hsdWVzZWw+DQoJCQk8c3RhYXRzYW5nZWhvZXJpZ2tlaXQ+ZGV1dHNjaDwvc3RhYXRzYW5nZWhvZXJpZ2tlaXQ+DQoJCQk8c3RhYXRzYW5nZWhvZXJpZ2tlaXRTY2hsdWVzc2VsPjAwMDwvc3RhYXRzYW5nZWhvZXJpZ2tlaXRTY2hsdWVzc2VsPg0KCQkJPGFkcl9zdHJhc3NlPkvDtm5pZ3N3ZWc8L2Fkcl9zdHJhc3NlPg0KCQkJPGFkcl96dXNhdHo+QXBwYXJ0bWVudCAzMjE8L2Fkcl96dXNhdHo+DQoJCQk8YWRyX2hhdXNudW1tZXI+NzQ8L2Fkcl9oYXVzbnVtbWVyPg0KCQkJPGFkcl9wbHo+MjQ4Mzc8L2Fkcl9wbHo+DQoJCQk8YWRyX29ydD5TY2hsZXN3aWc8L2Fkcl9vcnQ+DQoJCQk8YWRyX29ydHN0ZWlsPlNjaGxlc3dpZzwvYWRyX29ydHN0ZWlsPg0KCQkJPGFkcl9sYW5kPkRldXRzY2hsYW5kJERFJERFVSQyNzYkLmRlPC9hZHJfbGFuZD4NCgkJCTxiX2Fkcl9udW1lcmlzY2g+Mjc2PC9iX2Fkcl9udW1lcmlzY2g+DQoJCQk8Yl9hZHJfbGFuZD5EZXV0c2NobGFuZDwvYl9hZHJfbGFuZD4NCgkJCTxiX2Fkcl9hbHBoYTI+REU8L2JfYWRyX2FscGhhMj4NCgkJCTxiX2Fkcl9hbHBoYTM+REVVPC9iX2Fkcl9hbHBoYTM+DQoJCQk8Yl9hZHJfZG9tYWluPi5kZTwvYl9hZHJfZG9tYWluPg0KCQkJPGtvbnRfdGVsZWZvbm51bW1lcj4rIDQ5IDQ2MjEgOTY1NDwva29udF90ZWxlZm9ubnVtbWVyPg0KCQkJPGtvbnRfdGVsZWZheG51bW1lcj4rIDQ5IDQ2MjEgOTY1NDwva29udF90ZWxlZmF4bnVtbWVyPg0KCQkJPGtvbnRfZW1haWw+bWF4LnRlc3Rlcm1hbm5AZ214LmRlPC9rb250X2VtYWlsPg0KCQkJPGtvbnRfZGVtYWlsPm1heC50ZXN0ZXJtYW5uQGdteC5kZS1tYWlsLmRlPC9rb250X2RlbWFpbD4NCgkJCTxrb250X2hvbWVwYWdlPmh0dHA6Ly93d3cubWF4LXRlc3Rlci5kZTwva29udF9ob21lcGFnZT4NCgkJCTxiX2tvbnRfdm9yd2FobF90ZWxlZm9uPisgNDkgNDYyMTwvYl9rb250X3ZvcndhaGxfdGVsZWZvbj4NCgkJCTxiX2tvbnRfdGVsZWZvbj45NjU0PC9iX2tvbnRfdGVsZWZvbj4NCgkJCTxiX2tvbnRfdm9yd2FobF90ZWxlZmF4PisgNDkgNDYyMTwvYl9rb250X3ZvcndhaGxfdGVsZWZheD4NCgkJCTxiX2tvbnRfdGVsZWZheD45NjU0PC9iX2tvbnRfdGVsZWZheD4NCgkJCTxTdGF0dXNfRXJsYXVibmlzPjA8L1N0YXR1c19FcmxhdWJuaXM+DQoJCQk8Yl9FcmxhdWJuaXM+TGllZ3QgbmljaHQgdm9yPC9iX0VybGF1Ym5pcz4NCgkJPC9CZXRlaWxpZ3RlUGVyc29uLWl0ZW0+DQoJPC9CZXRlaWxpZ3RlUGVyc29uPg0KCTxLb250YWt0c3lzdGVtVHlwQT4yMzMwMzQ2MDA8L0tvbnRha3RzeXN0ZW1UeXBBPg0KCTxLb250YWt0c3lzdGVtVHlwQj4yMzMwMzQ2MDE8L0tvbnRha3RzeXN0ZW1UeXBCPg0KCTx6dXN0YWVuZGlnZXN0ZWxsZT4NCgkJPE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5BdXN3YWhsPjkwMzAyMjk8L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5BdXN3YWhsPg0KCQk8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbklEPjkwMzAyMjk8L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5JRD4NCgkJPE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz5MYW5kZXNoYXVwdHN0YWR0IEtpZWwgLSBCw7xyZ2VyLSB1bmQNCgkJCU9yZG51bmdzYW10LCBHZXdlcmJlbWVsZGVzdGVsbGU8L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz4NCgkJPHN0cmFzc2U+RmFicmlrc3RyYcOfZTwvc3RyYXNzZT4NCgkJPGhhdXNudW1tZXI+OC0xMCAgICAgIDwvaGF1c251bW1lcj4NCgkJPHBvc3RsZWl0emFobD4yNDEwMzwvcG9zdGxlaXR6YWhsPg0KCQk8b3J0SUQ+OTAwNjQwMjwvb3J0SUQ+DQoJCTxvcnQ+S2llbDwvb3J0Pg0KCQk8dGVsZWZvbm51bW1lcj4rNDkgNDMxIDkwMS0yODA3PC90ZWxlZm9ubnVtbWVyPg0KCQk8dGVsZWZheG51bW1lcj4rNDkgNDMxIDkwMS02MjA3MDwvdGVsZWZheG51bW1lcj4NCgkJPGVtYWlsYWRyZXNzZT5HZXdlcmJlbWVsZGVzdGVsbGVAa2llbC5kZTwvZW1haWxhZHJlc3NlPg0KCQk8ZGVtYWlsYWRyZXNzZSAvPg0KCQk8a29udGFrdHN5c3RlbV9rZW5udW5nIC8+DQoJCTxrb250YWt0c3lzdGVtX2tlbm51bmd6dXNhdHogLz4NCgkJPEFubGllZ2VuQkVaRUlDSE5VTkc+R2V3ZXJiZWFubWVsZHVuZywgRWxla3Ryb25pc2NoZSBHZXdlcmJlYW56ZWlnZTwvQW5saWVnZW5CRVpFSUNITlVORz4NCgkJPGxlaWthS0VZTElTVD45OTA1MDAxMjEwNDAwMDwvbGVpa2FLRVlMSVNUPg0KCTwvenVzdGFlbmRpZ2VzdGVsbGU+DQoJPGVtcGZhbmdlbmRlc3RlbGxlPg0KCQk8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbkF1c3dhaGw+OTA2ODg3MzwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbkF1c3dhaGw+DQoJCTxPcmdhbmlzYXRpb25zZWluaGVpdGVuSUQ+OTA2ODg3MzwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbklEPg0KCQk8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbkJFWkVJQ0hOVU5HPkVpbmhlaXRsaWNoZXIgQW5zcHJlY2hwYXJ0bmVyDQoJCQlTY2hsZXN3aWctSG9sc3RlaW48L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz4NCgkJPHN0cmFzc2U+UmV2ZW50bG91YWxsZWU8L3N0cmFzc2U+DQoJCTxoYXVzbnVtbWVyPjY8L2hhdXNudW1tZXI+DQoJCTxwb3N0bGVpdHphaGw+MjQxMDU8L3Bvc3RsZWl0emFobD4NCgkJPG9ydElEPjkwMDY0MDI8L29ydElEPg0KCQk8b3J0PktpZWw8L29ydD4NCgkJPHRlbGVmb25udW1tZXI+KzQ5IDQzMSA5ODgtODY1MDwvdGVsZWZvbm51bW1lcj4NCgkJPHRlbGVmYXhudW1tZXI+KzQ5IDQzMSA5ODgtNjE2MTExMTwvdGVsZWZheG51bW1lcj4NCgkJPGVtYWlsYWRyZXNzZT5pbmZvQGVhLXNoLmRlPC9lbWFpbGFkcmVzc2U+DQoJCTxkZW1haWxhZHJlc3NlPmVhLXBvc3RzdGVsbGVAZWEtc2guZGUtbWFpbC5kZTwvZGVtYWlsYWRyZXNzZT4NCgkJPGtvbnRha3RzeXN0ZW1fa2VubnVuZz5hZm1zaDo5MDY4ODczX0F1c25haG1lTEtXRmFocnZlcmJvdDwva29udGFrdHN5c3RlbV9rZW5udW5nPg0KCQk8a29udGFrdHN5c3RlbV9rZW5udW5nenVzYXR6PmFsbGU8L2tvbnRha3RzeXN0ZW1fa2VubnVuZ3p1c2F0ej4NCgk8L2VtcGZhbmdlbmRlc3RlbGxlPg0KCTxlcmtsYWVydW5nZW4+DQoJCTxjaGVja19nZWJ1ZWhyZW4+dHJ1ZTwvY2hlY2tfZ2VidWVocmVuPg0KCQk8Y2hlY2tfcmljaHRpZ2tlaXQ+dHJ1ZTwvY2hlY2tfcmljaHRpZ2tlaXQ+DQoJCTxjaGVja19kYXRlbnNjaHV0ej50cnVlPC9jaGVja19kYXRlbnNjaHV0ej4NCgkJPGNoZWNrX21pc3NicmF1Y2g+dHJ1ZTwvY2hlY2tfbWlzc2JyYXVjaD4NCgkJPGNoZWNrX2hpbndlaXM+dHJ1ZTwvY2hlY2tfaGlud2Vpcz4NCgkJPGJfZ2VidWVocmVuX2Jlc2NocmlmdHVuZz4qIERpZSBHZXdlcmJlYW5tZWxkdW5nIGlzdCBrb3N0ZW5wZmxpY2h0aWcuDQoJCQlEaWUgSMO2aGUgZGVyIEdlYsO8aHJlbiBiZW1pc3N0IHNpY2ggbmFjaCBkZXIgTGFuZGVzdmVyb3JkbnVuZyDDvGJlcg0KCQkJVmVyd2FsdHVuZ3NnZWLDvGhyZW4gKEFsbGdlbWVpbmVyIEdlYsO8aHJlbnRhcmlmKSBUYXJpZnN0ZWxsZSAxMS4xLjEgLQ0KCQkJVndHZWJWLiBHZW5hdWUgQXVza8O8bmZ0ZSBoaWVyenUgZXJ0ZWlsdCBkYXMgenVzdMOkbmRpZ2UgR2V3ZXJiZWFtdC48L2JfZ2VidWVocmVuX2Jlc2NocmlmdHVuZz4NCgkJPGJfZ2VidWVocmVuX2ludHJvIC8+DQoJCTxiX3JpY2h0aWdrZWl0PiogSWNoIGJlc3TDpHRpZ2UgZGllIFJpY2h0aWdrZWl0IG1laW5lciBBbmdhYmVuLjwvYl9yaWNodGlna2VpdD4NCgkJPGJfZGF0ZW5zY2h1dHo+KiBJY2ggZXJrbMOkcmUgbWljaCBkYW1pdCBlaW52ZXJzdGFuZGVuLCBkYXNzIGRlcg0KCQkJRWluaGVpdGxpY2hlciBBbnNwcmVjaHBhcnRuZXIgU2NobGVzd2lnLUhvbHN0ZWluIHp1ciBFcmbDvGxsdW5nIHNlaW5lcg0KCQkJQXVmZ2FiZW4gbWVpbmUgRGF0ZW4gdW50ZXIgRWluaGFsdHVuZyBkZXIgQmVzdGltbXVuZ2VuIGRlcg0KCQkJRGF0ZW5zY2h1dHotR3J1bmR2ZXJvcmRudW5nIChEUy1HVk8pIHVuZCBkZXMNCgkJCUxhbmRlc2RhdGVuc2NodXR6Z2VzZXR6ZXMgU2NobGVzd2lnLUhvbHN0ZWluIChMRFNHLVNIKSBzcGVpY2hlcnQsDQoJCQl2ZXJhcmJlaXRldCB1bmQgZGllc2UgaW0gUmFobWVuIGRlciBnZXNldHpsaWNoZW4gQmVzdGltbXVuZ2VuIGFuIGRpZQ0KCQkJZsO8ciBkaWUgRW50c2NoZWlkdW5nIHp1c3TDpG5kaWdlIFN0ZWxsZSB3ZWl0ZXJsZWl0ZXQuIEViZW5zbyBiaW4gaWNoDQoJCQltaXQgZGVyIHJlY2h0c2tvbmZvcm1lbiBEYXRlbnZlcmFyYmVpdHVuZyB1bmQgU3BlaWNoZXJ1bmcgZHVyY2ggZGllDQoJCQl6dXN0w6RuZGlnZSBTdGVsbGUgZWludmVyc3RhbmRlbi4gTWlyIGlzdCBiZWthbm50LCBkYXNzIGljaCBkaWUNCgkJCUVpbndpbGxpZ3VuZyBpbiBkaWUgVmVyYXJiZWl0dW5nIHVuZCDDnGJlcm1pdHRsdW5nIGplZGVyemVpdCBnZWdlbsO8YmVyDQoJCQlkZW0gRWluaGVpdGxpY2hlciBBbnNwcmVjaHBhcnRuZXIgU2NobGVzd2lnLUhvbHN0ZWluLCBSZXZlbnRsb3VhbGxlZQ0KCQkJNiwgMjQxMDUgS2llbCB3aWRlcnJ1ZmVuIGthbm4uIEVpbiBXaWRlcnJ1ZiBpc3QgYWJlciBudXIgd2lya3NhbSBmw7xyDQoJCQlkaWUgWnVrdW5mdC4gVmVyYXJiZWl0dW5nZW4sIGRpZSB2b3IgZGVtIFdpZGVycnVmIGVyZm9sZ3Qgc2luZCwgc2luZA0KCQkJZGF2b24gbmljaHQgYmV0cm9mZmVuLiDDnGJlciBkaWUgVmVyYXJiZWl0dW5nIG1laW5lciBwZXJzb25lbmJlem9nZW5lbg0KCQkJRGF0ZW4gdW5kIGRpZSBtaXIgbmFjaCBkZW4gZGF0ZW5zY2h1dHpyZWNodGxpY2hlbiBSZWdlbHVuZ2VuDQoJCQl6dXN0ZWhlbmRlbiBBbnNwcsO8Y2hlIHVuZCBSZWNodGUgaGFiZSBpY2ggdW50ZXIgRGF0ZW5zY2h1dHplcmtsw6RydW5nDQoJCQlLZW5udG5pcyBlcmxhbmd0LjwvYl9kYXRlbnNjaHV0ej4NCgkJPGJfbWlzc2JyYXVjaD4qIE1pciBpc3QgYmVrYW5udCwgZGFzcyB6dXIgVmVyZm9sZ3VuZyB3aWRlcnJlY2h0bGljaGVyDQoJCQlOdXR6dW5nIGRpZSBEYXRlbiBtZWluZXMgenVyIERhdGVuZWluZ2FiZSBnZW51dHp0ZW4gRW5kZ2Vyw6R0ZXMNCgkJCWF1ZmdlemVpY2huZXQgdW5kIHZlcndlbmRldCB3ZXJkZW4ga8O2bm5lbi48L2JfbWlzc2JyYXVjaD4NCgkJPGJfaGlud2Vpc19iZXNjaHJpZnR1bmc+KiBEaWVzZSBBbnplaWdlIGJlcmVjaHRpZ3QgbmljaHQgenVtIEJlZ2lubg0KCQkJZGVzIEdld2VyYmViZXRyaWViZXMsIHdlbm4gbm9jaCBlaW5lIEVybGF1Ym5pcyBvZGVyIGVpbmUgRWludHJhZ3VuZw0KCQkJaW4gZGllIEhhbmR3ZXJrc3JvbGxlIG5vdHdlbmRpZyBpc3QuIFp1d2lkZXJoYW5kbHVuZ2VuIGvDtm5uZW4gbWl0DQoJCQlHZWxkYnXDn2Ugb2RlciBHZWxkc3RyYWZlIG9kZXIgRnJlaWhlaXRzc3RyYWZlIGdlYWhuZGV0IHdlcmRlbi4gRGllc2UNCgkJCUFuemVpZ2UgaXN0IGtlaW5lIEdlbmVobWlndW5nIHp1ciBFcnJpY2h0dW5nIGVpbmVyIEJldHJpZWJzc3TDpHR0ZQ0KCQkJZW50c3ByZWNoZW5kIGRlbSBQbGFudW5ncy0gdW5kIEJhdXJlY2h0LjwvYl9oaW53ZWlzX2Jlc2NocmlmdHVuZz4NCgkJPGJfaGlud2Vpc19pbnRybz5IaW53ZWlzPC9iX2hpbndlaXNfaW50cm8+DQoJCTxwb2xpY3l1cmw+aHR0cDovL3dhZm14cGEwMDIuZHBhb3IuZGUvc2gvZGF0ZW5zY2h1dHovZGF0ZW5zY2h1dHplcmtsYWVydW5nRUFfZGUuZG9jPC9wb2xpY3l1cmw+DQoJPC9lcmtsYWVydW5nZW4+DQoJPGJfdGltZXN0YW1wPjIwMjAxMjAyMTYwMzIzPC9iX3RpbWVzdGFtcD4NCgk8bG9nb3VybD5odHRwOi8vd2FmbXhwYTAwMi5kcGFvci5kZS9zaC9sb2dvcy9rb3BmXzkwNjg4NzMuZG9jPC9sb2dvdXJsPg0KCTxmbT4NCgkJPGFuc3ByZWNocGFydG5lcj4NCgkJCTxmaXJtZW5uYW1lIC8+DQoJCQk8YW5yZWRlPkhlcnI8L2FucmVkZT4NCgkJCTx2b3JuYW1lPk1heDwvdm9ybmFtZT4NCgkJCTxmYW1pbGllbm5hbWU+VGVzdGVybWFubjwvZmFtaWxpZW5uYW1lPg0KCQkJPGFuc2NocmlmdD4NCgkJCQk8c3RyYXNzZT5SZXZlbnRsb3VhbGxlPC9zdHJhc3NlPg0KCQkJCTxoYXVzbnVtbWVyPjY8L2hhdXNudW1tZXI+DQoJCQkJPHBvc3RmYWNoIC8+DQoJCQkJPHBvc3RsZWl0emFobD4yNDEwNTwvcG9zdGxlaXR6YWhsPg0KCQkJCTxvcnQ+S2llbDwvb3J0Pg0KCQkJCTxvcnRzdGVpbCAvPg0KCQkJCTx6dXNhdHogLz4NCgkJCQk8c3RhYXQ+RGV1dHNjaGxhbmQ8L3N0YWF0Pg0KCQkJPC9hbnNjaHJpZnQ+DQoJCQk8a29udGFrdD4NCgkJCQk8dGVsZWZvbm51bW1lcj4wNDMxIDEyMzwvdGVsZWZvbm51bW1lcj4NCgkJCQk8bW9iaWxudW1tZXIgLz4NCgkJCQk8dGVsZWZheG51bW1lcj4rIDQ5IDQ2MjEgOTY1NDwvdGVsZWZheG51bW1lcj4NCgkJCQk8ZW1haWxhZHJlc3NlPm1heC50ZXN0ZXJtYW5uQGdteC5kZTwvZW1haWxhZHJlc3NlPg0KCQkJCTxkZW1haWxhZHJlc3NlPm1heC50ZXN0ZXJtYW5uQGdteC5kZS1tYWlsLmRlPC9kZW1haWxhZHJlc3NlPg0KCQkJPC9rb250YWt0Pg0KCQk8L2Fuc3ByZWNocGFydG5lcj4NCgkJPHZlcndhbHR1bmdzbGVpc3R1bmdlbj4NCgkJCTx2ZXJ3YWx0dW5nc2xlaXN0dW5nPg0KCQkJCTxhdXNnZXdhZWhsdGVfenVzdGFlbmRpZ2VzdGVsbGU+DQoJCQkJCTxPcmdhbmlzYXRpb25zZWluaGVpdGVuSUQ+OTA4MTk5NDwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbklEPg0KCQkJCQk8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbkJFWkVJQ0hOVU5HPkxhbmRlc2hhdXB0c3RhZHQgS2llbCAtIELDvHJnZXItDQoJCQkJCQl1bmQgT3JkbnVuZ3NhbXQsIEdld2VyYmVtZWxkZXN0ZWxsZTwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbkJFWkVJQ0hOVU5HPg0KCQkJCTwvYXVzZ2V3YWVobHRlX3p1c3RhZW5kaWdlc3RlbGxlPg0KCQkJCTxHZWJpZXRJRD45MDA2NDAyPC9HZWJpZXRJRD4NCgkJCQk8R2ViaWV0QkVaRUlDSE5VTkc+S2llbDwvR2ViaWV0QkVaRUlDSE5VTkc+DQoJCQkJPEFubGllZ2VuSUQ+ODkzODYzNDwvQW5saWVnZW5JRD4NCgkJCQk8QW5saWVnZW5CRVpFSUNITlVORz5HZXdlcmJlYW5tZWxkdW5nLCBFbGVrdHJvbmlzY2hlIEdld2VyYmVhbnplaWdlPC9BbmxpZWdlbkJFWkVJQ0hOVU5HPg0KCQkJCTxsZWlrYUtFWUxJU1Q+OTkwNTAwMTIxMDQwMDA8L2xlaWthS0VZTElTVD4NCgkJCQk8bGVpa2FCRVpFSUNITlVORyAvPg0KCQkJPC92ZXJ3YWx0dW5nc2xlaXN0dW5nPg0KCQk8L3ZlcndhbHR1bmdzbGVpc3R1bmdlbj4NCgk8L2ZtPg0KPC9teUZvcm0+</content> - <contentType>text/xml</contentType> - <id>myForm-xml</id> - <name>XML-Daten.xml</name> - </attachments> - <caller /> - <client>sh-dev</client> - <clientId>sh-dev</clientId> - <customer>Kiel</customer> - <customerId>Kiel</customerId> - <form>SimpleFormSendetAnHomeServer</form> - <formId>SimpleFormSendetAnHomeServer</formId> - <id>20210415307020414701</id> - <primaryDataAttachmentId>myForm-xml</primaryDataAttachmentId> - <sender>intelliform.by.kop-cloud.de</sender> - <timestamp>2021-04-15T08:33:39.443Z</timestamp> - <username /> - </data> - </ns2:deposit> - </soap:Body> -</soap:Envelope> \ No newline at end of file diff --git a/intelliform-adapter/src/main/scripts/vorgang-Waffenschein.xml b/intelliform-adapter/src/main/scripts/vorgang-Waffenschein.xml deleted file mode 100644 index 3259751f..00000000 --- a/intelliform-adapter/src/main/scripts/vorgang-Waffenschein.xml +++ /dev/null @@ -1,50 +0,0 @@ -<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> - <soap:Body> - <ns2:deposit xmlns:ns2="http://xmlns.cit.de/intelliform/2009/webservices/backend"> - <data> - <attachments> - <attributes> - <key>X-IntelliForm-Signed</key> - <value>false</value> - </attributes> - <content>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG15Rm9ybSB4bWxuczpwZGY9Imh0dHA6Ly94bWxucy5jaXQuZGUvYXNzaXN0YW50cy9wZGYiCiAgICB4bWxuczp0PSJodHRwOi8veG1sbnMuY2l0LmRlL2ludGVsbGlmb3JtL3RyYW5zYWN0aW9uIgogICAgdDppZD0iMjAyMDExMTgzNjU2NzA4NjYxMDEiIHQ6dGltZXN0YW1wPSIyMDIwLTExLTE4VDA5OjA5OjI3LjYyN1oiCiAgICB0OnNlbmRlcj0iYWZtLnNjaGxlc3dpZy1ob2xzdGVpbi5kZSIKICAgIHQ6Zm9ybT0iS2xlaW5lciBXYWZmZW5zY2hlaW4gZ2VtLiDCpyAxMCBBYnMuIDQgU2F0eiA0IFdhZmZlbmdlc2V0eiAoV2FmZkcpIgogICAgdDpmb3JtLWlkPSJ3YWZmZW4va2xlaW5lcldhZmZlbnNjaGVpbiIKICAgIHQ6Y3VzdG9tZXI9IkVpbmhlaXRsaWNoZXIgQW5zcHJlY2hwYXJ0bmVyIiB0OmN1c3RvbWVyLWlkPSJlYS1zaCIKICAgIHQ6Y2xpZW50PSJTY2hsZXN3aWctSG9sc3RlaW4iIHQ6Y2xpZW50LWlkPSJsYW5kIj4KICAgIDxrb250YWt0c3lzdGVtdHlwaWQ+MjMzMDM0NjAwPC9rb250YWt0c3lzdGVtdHlwaWQ+CiAgICA8a29udGFrdHN5c3RlbXR5cGlkbG4+MjMzMDM0NjAxPC9rb250YWt0c3lzdGVtdHlwaWRsbj4KICAgIDxBbmxpZWdlbklEPjg5NjY2NzE8L0FubGllZ2VuSUQ+CiAgICA8bWFpbGJveGd1aWQ+Zjk3NzM2OGItNjk5MS00NmI5LWFmMTgtOGEyYTAzZDlhZDFiPC9tYWlsYm94Z3VpZD4KICAgIDxhbnRyYWdzdGVsbGVyPgogICAgICAgIDxwZXJzX2FucmVkZT5IZXJyJDAzPC9wZXJzX2FucmVkZT4KICAgICAgICA8cGVyc19uYWNobmFtZT5UZXN0ZXJtYW5uPC9wZXJzX25hY2huYW1lPgogICAgICAgIDxwZXJzX3Zvcm5hbWU+TWF4PC9wZXJzX3Zvcm5hbWU+CiAgICAgICAgPHBlcnNfZ2VidXJ0c25hbWU+TWF4IFRlc3Rlcm1hbm48L3BlcnNfZ2VidXJ0c25hbWU+CiAgICAgICAgPHBlcnNfZ2VidXJ0c2RhdHVtPjE5OTUtMDMtMjE8L3BlcnNfZ2VidXJ0c2RhdHVtPgogICAgICAgIDxwZXJzX2dlYnVydHNvcnQ+RmxlbnNidXJnPC9wZXJzX2dlYnVydHNvcnQ+CiAgICAgICAgPHBlcnNfZ2VidXJ0c2xhbmQ+ZGV1dHNjaCREZXV0c2NobGFuZCQwMDA8L3BlcnNfZ2VidXJ0c2xhbmQ+CiAgICAgICAgPHBlcnNfc3RhYXRzYW5nZWhvZXJpZ2tlaXQ+ZGV1dHNjaCREZXV0c2NobGFuZCQwMDA8L3BlcnNfc3RhYXRzYW5nZWhvZXJpZ2tlaXQ+CiAgICAgICAgPGJfYW5yZWRlPkhlcnI8L2JfYW5yZWRlPgogICAgICAgIDxiX2FucmVkZV9zY2hsdWVzc2VsbnI+MDM8L2JfYW5yZWRlX3NjaGx1ZXNzZWxucj4KICAgICAgICA8Yl9nZWJ1cnRzbGFuZD5EZXV0c2NobGFuZDwvYl9nZWJ1cnRzbGFuZD4KICAgICAgICA8Yl9nZWJ1cnRzbGFuZF9zaWduYXR1cj4wMDA8L2JfZ2VidXJ0c2xhbmRfc2lnbmF0dXI+CiAgICAgICAgPGJfc3RhYXRzYW5nZWhvZXJpZ2tlaXQ+ZGV1dHNjaDwvYl9zdGFhdHNhbmdlaG9lcmlna2VpdD4KICAgICAgICA8Yl9zdGFhdHNhbmdlaG9lcmlna2VpdF9zaWduYXR1cj4wMDA8L2Jfc3RhYXRzYW5nZWhvZXJpZ2tlaXRfc2lnbmF0dXI+CiAgICAgICAgPHNoX3N0cmFzc2U+S8O2bmlnc3dlZzwvc2hfc3RyYXNzZT4KICAgICAgICA8c2hfaGF1c251bW1lcj43NDwvc2hfaGF1c251bW1lcj4KICAgICAgICA8c2hfcGx6PjI0ODM3PC9zaF9wbHo+CiAgICAgICAgPG9ydF9hdXN3YWhsPjkwMDczMTQkMDEwNTkwNzU8L29ydF9hdXN3YWhsPgogICAgICAgIDxvcnQ+U2NobGVzd2lnPC9vcnQ+CiAgICAgICAgPEdlYmlldElEPjkwMDczMTQ8L0dlYmlldElEPgogICAgICAgIDxHZWJpZXRCRVpFSUNITlVORz5TY2hsZXN3aWc8L0dlYmlldEJFWkVJQ0hOVU5HPgogICAgICAgIDxHZWJpZXRHTlI5NF9HTlI+MDEwNTkwNzU8L0dlYmlldEdOUjk0X0dOUj4KICAgICAgICA8c3RhYXQ+MDAwPC9zdGFhdD4KICAgICAgICA8aXNvMzE2Nm51bWVyaXNjaD4yNzY8L2lzbzMxNjZudW1lcmlzY2g+CiAgICAgICAgPGtvbnRfdGVsZWZvbm51bW1lcj4rIDQ5IDQ2MjEgOTY1NDwva29udF90ZWxlZm9ubnVtbWVyPgogICAgICAgIDxrb250X21vYmlsbnVtbWVyPis0OSAxMjM8L2tvbnRfbW9iaWxudW1tZXI+CiAgICAgICAgPGtvbnRfdGVsZWZheG51bW1lcj4rIDQ5IDQ2MjEgOTY1NDwva29udF90ZWxlZmF4bnVtbWVyPgogICAgICAgIDxrb250X2VtYWlsPm1heC50ZXN0ZXJtYW5uQGdteC5kZTwva29udF9lbWFpbD4KICAgICAgICA8a29udF9kZW1haWw+bWF4LnRlc3Rlcm1hbm5AZ214LmRlLW1haWwuZGU8L2tvbnRfZGVtYWlsPgogICAgICAgIDxwZXJzb2VubGljaGVFaWdudW5nPgogICAgICAgICAgICA8bWFlbmdlbHZvcmhhbmRlbj5mYWxzZTwvbWFlbmdlbHZvcmhhbmRlbj4KICAgICAgICAgICAgPGVybWl0dGx1bmdzdmVyZmFocmVuPmZhbHNlPC9lcm1pdHRsdW5nc3ZlcmZhaHJlbj4KICAgICAgICAgICAgPE1pdGdsaWVkc2NoYWZ0SW5WZXJib3Rlcm5lclZlcmVpbmlndW5nPmZhbHNlPC9NaXRnbGllZHNjaGFmdEluVmVyYm90ZXJuZXJWZXJlaW5pZ3VuZz4KICAgICAgICA8L3BlcnNvZW5saWNoZUVpZ251bmc+CiAgICA8L2FudHJhZ3N0ZWxsZXI+CiAgICA8R2ViaWV0SUQ+OTAwNzMxNDwvR2ViaWV0SUQ+CiAgICA8enVzdGFlbmRpZ2VzdGVsbGU+CiAgICAgICAgPE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5BdXN3YWhsPjkwMzAyMjk8L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5BdXN3YWhsPgogICAgICAgIDxPcmdhbmlzYXRpb25zZWluaGVpdGVuSUQ+OTAzMDIyOTwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbklEPgogICAgICAgIDxPcmdhbmlzYXRpb25zZWluaGVpdGVuQkVaRUlDSE5VTkc+TGFuZGVzaGF1cHRzdGFkdCBLaWVsIC0gQsO8cmdlci0gdW5kCgkJCU9yZG51bmdzYW10LCBHZXdlcmJlbWVsZGVzdGVsbGU8L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz4KICAgICAgICA8c3RyYXNzZT5GbGVuc2J1cmdlciBTdHJhw59lPC9zdHJhc3NlPgogICAgICAgIDxoYXVzbnVtbWVyPjc8L2hhdXNudW1tZXI+CiAgICAgICAgPHBvc3RsZWl0emFobD4yNDgzNzwvcG9zdGxlaXR6YWhsPgogICAgICAgIDxvcnRJRD45MDA3MzE0PC9vcnRJRD4KICAgICAgICA8b3J0PlNjaGxlc3dpZzwvb3J0PgogICAgICAgIDx0ZWxlZm9ubnVtbWVyPjA0NjIxIDg3LTA8L3RlbGVmb25udW1tZXI+CiAgICAgICAgPHRlbGVmYXhudW1tZXI+MDQ2MjEgODctMzY2PC90ZWxlZmF4bnVtbWVyPgogICAgICAgIDxlbWFpbGFkcmVzc2U+R2VmYWhyZW5hYndlaHJAS2llbC5kZTwvZW1haWxhZHJlc3NlPgogICAgICAgIDxkZW1haWxhZHJlc3NlIC8+CiAgICAgICAgPGtvbnRha3RzeXN0ZW1fa2VubnVuZz5hZm1zaDo5NTM1NjY5X2tsZWluZXJXYWZmZW5zY2hlaW48L2tvbnRha3RzeXN0ZW1fa2VubnVuZz4KICAgICAgICA8a29udGFrdHN5c3RlbV9rZW5udW5nenVzYXR6IC8+CiAgICAgICAgPEFubGllZ2VuQkVaRUlDSE5VTkc+V2FmZmVuc2NoZWluIC8gS2xlaW5lciBXYWZmZW5zY2hlaW48L0FubGllZ2VuQkVaRUlDSE5VTkc+CiAgICAgICAgPGxlaWthS0VZTElTVD45OTA4OTAwODAwMDAwMDs5OTA4OTAwODAwMTAwMDwvbGVpa2FLRVlMSVNUPgogICAgICAgIDxhdXN3YWhsX3p1c3RlbGx1bmc+YWJob2xlbjwvYXVzd2FobF96dXN0ZWxsdW5nPgogICAgICAgIDxiX3p1c3RlbGx1bmc+SWNoIGhvbGUgZGVuIEtsZWluZW4gV2FmZmVuc2NoZWluIHNlbGJzdCBhYi48L2JfenVzdGVsbHVuZz4KICAgIDwvenVzdGFlbmRpZ2VzdGVsbGU+CiAgICA8ZW1wZmFuZ2VuZGVzdGVsbGU+CiAgICAgICAgPE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5BdXN3YWhsPjkwNjg4NzM8L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5BdXN3YWhsPgogICAgICAgIDxPcmdhbmlzYXRpb25zZWluaGVpdGVuSUQ+OTA2ODg3MzwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbklEPgogICAgICAgIDxPcmdhbmlzYXRpb25zZWluaGVpdGVuQkVaRUlDSE5VTkc+RWluaGVpdGxpY2hlciBBbnNwcmVjaHBhcnRuZXIKICAgICAgICAgICAgU2NobGVzd2lnLUhvbHN0ZWluPC9PcmdhbmlzYXRpb25zZWluaGVpdGVuQkVaRUlDSE5VTkc+CiAgICAgICAgPHN0cmFzc2U+UmV2ZW50bG91YWxsZWU8L3N0cmFzc2U+CiAgICAgICAgPGhhdXNudW1tZXI+NjwvaGF1c251bW1lcj4KICAgICAgICA8cG9zdGxlaXR6YWhsPjI0MTA1PC9wb3N0bGVpdHphaGw+CiAgICAgICAgPG9ydElEPjkwMDY0MDI8L29ydElEPgogICAgICAgIDxvcnQ+S2llbDwvb3J0PgogICAgICAgIDx0ZWxlZm9ubnVtbWVyPis0OSA0MzEgOTg4LTg2NTA8L3RlbGVmb25udW1tZXI+CiAgICAgICAgPHRlbGVmYXhudW1tZXI+KzQ5IDQzMSA5ODgtNjE2MTExMTwvdGVsZWZheG51bW1lcj4KICAgICAgICA8ZW1haWxhZHJlc3NlPmluZm9AZWEtc2guZGU8L2VtYWlsYWRyZXNzZT4KICAgICAgICA8ZGVtYWlsYWRyZXNzZT5lYS1wb3N0c3RlbGxlQGVhLXNoLmRlLW1haWwuZGU8L2RlbWFpbGFkcmVzc2U+CiAgICAgICAgPGtvbnRha3RzeXN0ZW1fa2VubnVuZz5hZm1zaDo5MDY4ODczX0F1c25haG1lTEtXRmFocnZlcmJvdDwva29udGFrdHN5c3RlbV9rZW5udW5nPgogICAgICAgIDxrb250YWt0c3lzdGVtX2tlbm51bmd6dXNhdHo+YWxsZTwva29udGFrdHN5c3RlbV9rZW5udW5nenVzYXR6PgogICAgPC9lbXBmYW5nZW5kZXN0ZWxsZT4KICAgIDxlcmtsYWVydW5nZW4+CiAgICAgICAgPGNoZWNrX2dlYnVlaHJlbj50cnVlPC9jaGVja19nZWJ1ZWhyZW4+CiAgICAgICAgPGNoZWNrX3JpY2h0aWdrZWl0PnRydWU8L2NoZWNrX3JpY2h0aWdrZWl0PgogICAgICAgIDxjaGVja19kYXRlbnNjaHV0ej50cnVlPC9jaGVja19kYXRlbnNjaHV0ej4KICAgICAgICA8Y2hlY2tfbWlzc2JyYXVjaD50cnVlPC9jaGVja19taXNzYnJhdWNoPgogICAgICAgIDxiX2dlYnVlaHJlbl9iZXNjaHJpZnR1bmc+KiBNaXIgaXN0IGJla2FubnQsIGRhc3MgZHVyY2ggZGFzIEVpbnJlaWNoZW4KICAgICAgICAgICAgZGVzIGVsZWt0cm9uaXNjaGVuIEFudHJhZ2VzIHZvbiBkZXIgenVzdMOkbmRpZ2VuIFN0ZWxsZSBHZWLDvGhyZW4KICAgICAgICAgICAgZXJob2JlbiB3ZXJkZW4ga8O2bm5lbi48L2JfZ2VidWVocmVuX2Jlc2NocmlmdHVuZz4KICAgICAgICA8Yl9nZWJ1ZWhyZW5faW50cm8+R2Viw7xociBiZWkgQXVzc3RlbGx1bmcgZGVzIGtsZWluZW4gV2FmZmVuc2NoZWluczoKICAgICAgICAgICAgNjAsMDAgRXVyby4gQmVhcmJlaXR1bmdzZ2Viw7xociBiZWkgVmVyc2FndW5nOiA0NSwwMCBFdXJvLgogICAgICAgICAgICBTaWUgc2luZCBnZW3DpMOfIMKnIDM5IFdhZmZHIHZlcnBmbGljaHRldCwgZGVyIHp1c3TDpG5kaWdlbiBCZWjDtnJkZSBkaWUgenVyCiAgICAgICAgICAgIER1cmNoZsO8aHJ1bmcgZGVzIEdlc2V0emVzIGVyZm9yZGVybGljaGVuIEF1c2vDvG5mdGUgenUgZXJ0ZWlsZW4uIFp1cgogICAgICAgICAgICBQcsO8ZnVuZyBJaHJlciB3YWZmZW5yZWNodGxpY2hlbiBadXZlcmzDpHNzaWdrZWl0IHVuZCBFaWdudW5nIGhvbHQgZGllCiAgICAgICAgICAgIEJlaMO2cmRlIGVpbmUgdW5iZXNjaHLDpG5rdGUgQXVza3VuZnQgYXVzIGRlbSBCdW5kZXN6ZW50cmFscmVnaXN0ZXIsCiAgICAgICAgICAgIGVpbmUgQXVza3VuZnQgYXVzIGRlbSB6ZW50cmFsZW4gc3RhYXRzYW53YWx0c2NoYWZ0bGljaGVuCiAgICAgICAgICAgIFZlcmZhaHJlbnNyZWdpc3RlciwgZWluZSBTdGVsbHVuZ25haG1lIGRlciDDtnJ0bGljaGVuCiAgICAgICAgICAgIFBvbGl6ZWlkaWVuc3RzdGVsbGUgdW5kIElocmVyIFdvaG5zaXR6Z2VtZWluZGUgZWluLjwvYl9nZWJ1ZWhyZW5faW50cm8+CiAgICAgICAgPGJfcmljaHRpZ2tlaXQ+KiBJY2ggYmVzdMOkdGlnZSBkaWUgUmljaHRpZ2tlaXQgbWVpbmVyIEFuZ2FiZW4uPC9iX3JpY2h0aWdrZWl0PgogICAgICAgIDxiX2RhdGVuc2NodXR6PiogSWNoIGVya2zDpHJlIG1pY2ggZGFtaXQgZWludmVyc3RhbmRlbiwgZGFzcyBkZXIKICAgICAgICAgICAgRWluaGVpdGxpY2hlciBBbnNwcmVjaHBhcnRuZXIgU2NobGVzd2lnLUhvbHN0ZWluIHp1ciBFcmbDvGxsdW5nIHNlaW5lcgogICAgICAgICAgICBBdWZnYWJlbiBtZWluZSBEYXRlbiB1bnRlciBFaW5oYWx0dW5nIGRlciBCZXN0aW1tdW5nZW4gZGVyCiAgICAgICAgICAgIERhdGVuc2NodXR6LUdydW5kdmVyb3JkbnVuZyAoRFMtR1ZPKSB1bmQgZGVzCiAgICAgICAgICAgIExhbmRlc2RhdGVuc2NodXR6Z2VzZXR6ZXMgU2NobGVzd2lnLUhvbHN0ZWluIChMRFNHLVNIKSBzcGVpY2hlcnQsCiAgICAgICAgICAgIHZlcmFyYmVpdGV0IHVuZCBkaWVzZSBpbSBSYWhtZW4gZGVyIGdlc2V0emxpY2hlbiBCZXN0aW1tdW5nZW4gYW4gZGllCiAgICAgICAgICAgIGbDvHIgZGllIEVudHNjaGVpZHVuZyB6dXN0w6RuZGlnZSBTdGVsbGUgd2VpdGVybGVpdGV0LiBFYmVuc28gYmluIGljaAogICAgICAgICAgICBtaXQgZGVyIHJlY2h0c2tvbmZvcm1lbiBEYXRlbnZlcmFyYmVpdHVuZyB1bmQgU3BlaWNoZXJ1bmcgZHVyY2ggZGllCiAgICAgICAgICAgIHp1c3TDpG5kaWdlIFN0ZWxsZSBlaW52ZXJzdGFuZGVuLiBNaXIgaXN0IGJla2FubnQsIGRhc3MgaWNoIGRpZQogICAgICAgICAgICBFaW53aWxsaWd1bmcgaW4gZGllIFZlcmFyYmVpdHVuZyB1bmQgw5xiZXJtaXR0bHVuZyBqZWRlcnplaXQgZ2VnZW7DvGJlcgogICAgICAgICAgICBkZW0gRWluaGVpdGxpY2hlciBBbnNwcmVjaHBhcnRuZXIgU2NobGVzd2lnLUhvbHN0ZWluLCBSZXZlbnRsb3VhbGxlZQogICAgICAgICAgICA2LCAyNDEwNSBLaWVsIHdpZGVycnVmZW4ga2Fubi4gRWluIFdpZGVycnVmIGlzdCBhYmVyIG51ciB3aXJrc2FtIGbDvHIKICAgICAgICAgICAgZGllIFp1a3VuZnQuIFZlcmFyYmVpdHVuZ2VuLCBkaWUgdm9yIGRlbSBXaWRlcnJ1ZiBlcmZvbGd0IHNpbmQsIHNpbmQKICAgICAgICAgICAgZGF2b24gbmljaHQgYmV0cm9mZmVuLiDDnGJlciBkaWUgVmVyYXJiZWl0dW5nIG1laW5lciBwZXJzb25lbmJlem9nZW5lbgogICAgICAgICAgICBEYXRlbiB1bmQgZGllIG1pciBuYWNoIGRlbiBkYXRlbnNjaHV0enJlY2h0bGljaGVuIFJlZ2VsdW5nZW4KICAgICAgICAgICAgenVzdGVoZW5kZW4gQW5zcHLDvGNoZSB1bmQgUmVjaHRlIGhhYmUgaWNoIHVudGVyIERhdGVuc2NodXR6ZXJrbMOkcnVuZwogICAgICAgICAgICBLZW5udG5pcyBlcmxhbmd0LjwvYl9kYXRlbnNjaHV0ej4KICAgICAgICA8Yl9taXNzYnJhdWNoPiogTWlyIGlzdCBiZWthbm50LCBkYXNzIHp1ciBWZXJmb2xndW5nIHdpZGVycmVjaHRsaWNoZXIKICAgICAgICAgICAgTnV0enVuZyBkaWUgRGF0ZW4gbWVpbmVzIHp1ciBEYXRlbmVpbmdhYmUgZ2VudXR6dGVuIEVuZGdlcsOkdGVzCiAgICAgICAgICAgIGF1ZmdlemVpY2huZXQgdW5kIHZlcndlbmRldCB3ZXJkZW4ga8O2bm5lbi48L2JfbWlzc2JyYXVjaD4KICAgICAgICA8cG9saWN5dXJsPmh0dHA6Ly93YWZteHBhMDAyLmRwYW9yLmRlL3NoL2RhdGVuc2NodXR6L2RhdGVuc2NodXR6ZXJrbGFlcnVuZ0VBX2RlLmRvYzwvcG9saWN5dXJsPgogICAgPC9lcmtsYWVydW5nZW4+CiAgICA8bG9nb3VybD5odHRwOi8vd2FmbXhwYTAwMi5kcGFvci5kZS9zaC9sb2dvcy9rb3BmXzkwNjg4NzMuZG9jPC9sb2dvdXJsPgogICAgPGZtPgogICAgICAgIDxhbnNwcmVjaHBhcnRuZXI+CiAgICAgICAgICAgIDxmaXJtZW5uYW1lIC8+CiAgICAgICAgICAgIDxhbnJlZGU+SGVycjwvYW5yZWRlPgogICAgICAgICAgICA8dm9ybmFtZT5NYXg8L3Zvcm5hbWU+CiAgICAgICAgICAgIDxmYW1pbGllbm5hbWU+VGVzdGVybWFubjwvZmFtaWxpZW5uYW1lPgogICAgICAgICAgICA8YW5zY2hyaWZ0PgogICAgICAgICAgICAgICAgPHN0cmFzc2U+S8O2bmlnc3dlZzwvc3RyYXNzZT4KICAgICAgICAgICAgICAgIDxoYXVzbnVtbWVyPjc0PC9oYXVzbnVtbWVyPgogICAgICAgICAgICAgICAgPHBvc3RmYWNoIC8+CiAgICAgICAgICAgICAgICA8cG9zdGxlaXR6YWhsPjI0ODM3PC9wb3N0bGVpdHphaGw+CiAgICAgICAgICAgICAgICA8b3J0PlNjaGxlc3dpZzwvb3J0PgogICAgICAgICAgICAgICAgPG9ydHN0ZWlsIC8+CiAgICAgICAgICAgICAgICA8enVzYXR6IC8+CiAgICAgICAgICAgICAgICA8c3RhYXQ+RGV1dHNjaGxhbmQ8L3N0YWF0PgogICAgICAgICAgICA8L2Fuc2NocmlmdD4KICAgICAgICAgICAgPGtvbnRha3Q+CiAgICAgICAgICAgICAgICA8dGVsZWZvbm51bW1lcj4rIDQ5IDQ2MjEgOTY1NDwvdGVsZWZvbm51bW1lcj4KICAgICAgICAgICAgICAgIDxtb2JpbG51bW1lcj4rNDkgMTIzPC9tb2JpbG51bW1lcj4KICAgICAgICAgICAgICAgIDx0ZWxlZmF4bnVtbWVyPisgNDkgNDYyMSA5NjU0PC90ZWxlZmF4bnVtbWVyPgogICAgICAgICAgICAgICAgPGVtYWlsYWRyZXNzZT5tYXgudGVzdGVybWFubkBnbXguZGU8L2VtYWlsYWRyZXNzZT4KICAgICAgICAgICAgICAgIDxkZW1haWxhZHJlc3NlPm1heC50ZXN0ZXJtYW5uQGdteC5kZS1tYWlsLmRlPC9kZW1haWxhZHJlc3NlPgogICAgICAgICAgICA8L2tvbnRha3Q+CiAgICAgICAgPC9hbnNwcmVjaHBhcnRuZXI+CiAgICAgICAgPHZlcndhbHR1bmdzbGVpc3R1bmdlbj4KICAgICAgICAgICAgPHZlcndhbHR1bmdzbGVpc3R1bmc+CiAgICAgICAgICAgICAgICA8YXVzZ2V3YWVobHRlX3p1c3RhZW5kaWdlc3RlbGxlPgogICAgICAgICAgICAgICAgICAgIDxPcmdhbmlzYXRpb25zZWluaGVpdGVuSUQ+OTUzNTY2OTwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbklEPgogICAgICAgICAgICAgICAgICAgIDxPcmdhbmlzYXRpb25zZWluaGVpdGVuQkVaRUlDSE5VTkc+S3JlaXMKICAgICAgICAgICAgICAgICAgICAgICAgU2NobGVzd2lnLUZsZW5zYnVyZy9LcmVpc3ZlcndhbHR1bmcgLSBBbGxnZW1laW5lCiAgICAgICAgICAgICAgICAgICAgICAgIE9yZG51bmdzYW5nZWxlZ2VuaGVpdGVuPC9PcmdhbmlzYXRpb25zZWluaGVpdGVuQkVaRUlDSE5VTkc+CiAgICAgICAgICAgICAgICA8L2F1c2dld2FlaGx0ZV96dXN0YWVuZGlnZXN0ZWxsZT4KICAgICAgICAgICAgICAgIDxHZWJpZXRJRD45MDA3MzE0PC9HZWJpZXRJRD4KICAgICAgICAgICAgICAgIDxHZWJpZXRCRVpFSUNITlVORz5TY2hsZXN3aWc8L0dlYmlldEJFWkVJQ0hOVU5HPgogICAgICAgICAgICAgICAgPEFubGllZ2VuSUQ+ODk2NjY3MTwvQW5saWVnZW5JRD4KICAgICAgICAgICAgICAgIDxBbmxpZWdlbkJFWkVJQ0hOVU5HPldhZmZlbnNjaGVpbiAvIEtsZWluZXIgV2FmZmVuc2NoZWluPC9BbmxpZWdlbkJFWkVJQ0hOVU5HPgogICAgICAgICAgICAgICAgPGxlaWthS0VZTElTVD45OTA4OTAwODAwMDAwMDs5OTA4OTAwODAwMTAwMDwvbGVpa2FLRVlMSVNUPgogICAgICAgICAgICAgICAgPGxlaWthQkVaRUlDSE5VTkcgLz4KICAgICAgICAgICAgPC92ZXJ3YWx0dW5nc2xlaXN0dW5nPgogICAgICAgIDwvdmVyd2FsdHVuZ3NsZWlzdHVuZ2VuPgogICAgPC9mbT4KPC9teUZvcm0+</content> - <contentType>text/xml</contentType> - <id>myForm-xml</id> - <name>XML-Daten.xml</name> - </attachments> - <attachments> - <attributes> - <key>X-IntelliForm-Signed</key> - <value>false</value> - </attributes> - <content>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</content> - <contentType>image/jpeg</contentType> - <id>assistants.E0FBA361C191F8B723949467AE302BEA24E4745E</id> - <name>Helge1.jpg</name> - </attachments> - <attachments> - <attributes> - <key>X-IntelliForm-Signed</key> - <value>false</value> - </attributes> - <content>UEsDBBQAAAgAACxEj1JexjIMJwAAACcAAAAIAAAAbWltZXR5cGVhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnRleHRQSwMEFAAACAAALESPUgYCUOZqAQAAagEAABgAAABUaHVtYm5haWxzL3RodW1ibmFpbC5wbmeJUE5HDQoaCgAAAA1JSERSAAAAtQAAAQAIAwAAAML9x+kAAAA8UExURYyQkJCTlZ6fo6qknrm2tri6vMW2qsrGv8rQ1d/Uytvm79vq9ezn5O/0+fDq5fT3+vj39////wAAAP///81aQL0AAADpSURBVHja7dK5DYAwEADB4zU2j6H/ZskpAOmk2Qom2HgyFtTU1NTU1NTU1NTU1J+us99Hz6ZexyGmPZu6LluZm6+pqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqan/6AXwWwUaPv4WoAAAAABJRU5ErkJgglBLAwQUAAgICAAsRI9SAAAAAAAAAAAAAAAACwAAAGNvbnRlbnQueG1spVddb9s2FH3vrxA0YG8M7bgDEi12H1oU2JoURZ0Be2UoSiYmiRpJWfa/3yVp0ZRjOVz8Ilu851zeb1IPn3Z1lWyZVFw0y3R+M0sT1lCR86Zcpn89f0V36afVhwdRFJyyLBe0q1mjERWNht8E2I3KnHSZdrLJBFFcZQ2pmco0zUTLmoGVhejM7uVWlN5X0XQLDtma7XQs2WBHXPISv7MFh+xckj6WbLAQ1JBeiFjyTlWoEBD1uiWan1ixq3jzzzLdaN1mGPd9f9MvboQs8fz+/h5bqTeYelzbycqicopZxcxmCs9v5njA1kyTWPsMNjSp6eoXJqNDQzR5lVW1LaMrYltOhIZuiIyuDQsep3eRx6d3kYfcmujNRE7u8BMI7ePp8VgLso7dy2BHoaKSt9FuOnTIF0J4Uw3BNag193Y2+4jde4DuL8J7yTWTAZxehFNSUR9xUZ8LGuDmGBCIbU2Z+sI3gVAThFvsxB6s8knV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</content> - <contentType>application/vnd.oasis.opendocument.text</contentType> - <id>assistants.52D79E5B2118D1740045AB87151535DCAD24E9A7</id> - <name>Helgetext2.odt</name> - </attachments> - <caller /> - <client>sh-dev</client> - <clientId>sh-dev</clientId> - <customer>Kiel</customer> - <customerId>Kiel</customerId> - <form>SimpleFormSendetAnHomeServer</form> - <formId>SimpleFormSendetAnHomeServer</formId> - <id>20210415307020414701</id> - <primaryDataAttachmentId>myForm-xml</primaryDataAttachmentId> - <sender>intelliform.by.kop-cloud.de</sender> - <timestamp>2021-04-15T08:33:39.443Z</timestamp> - <username /> - </data> - </ns2:deposit> - </soap:Body> -</soap:Envelope> \ No newline at end of file diff --git a/intelliform-adapter/src/main/scripts/vorgang-Wahlhelferin.xml b/intelliform-adapter/src/main/scripts/vorgang-Wahlhelferin.xml deleted file mode 100644 index aad271e9..00000000 --- a/intelliform-adapter/src/main/scripts/vorgang-Wahlhelferin.xml +++ /dev/null @@ -1,59 +0,0 @@ -<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> - <soap:Body> - <ns2:deposit xmlns:ns2="http://xmlns.cit.de/intelliform/2009/webservices/backend"> - <data> - <attachments> - <attributes> - <key>X-IntelliForm-Signed</key> - <value>false</value> - </attributes> - <content>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG15Rm9ybSB4bWxuczp0PSJodHRwOi8veG1sbnMuY2l0LmRlL2ludGVsbGlmb3JtL3RyYW5zYWN0aW9uIiB0OmZvcm0tdmVyc2lvbj0iMi4wMTMiIHQ6dXVpZD0iNzgxNGI2YjUtMmZlYy00ZDBiLTg4OGYtYTM3N2ExOWIwZGEzIiB0OmlkPSIyMDIxMTIwODQyNjkyMDE3OTIwMCIgdDp0aW1lc3RhbXA9IjIwMjEtMTItMDhUMTA6NTE6MzIuNTMxWiIgdDpzZW5kZXI9InN0YWdlLmFmbS5zY2hsZXN3aWctaG9sc3RlaW4uZGUiIHQ6Zm9ybT0iV2FobGhlbGZlcmluIHdlcmRlbiIgdDpmb3JtLWlkPSJvZHBfd2FobGhlbGZlci9vZHBfd2FobGhlbGZlciIgdDpjdXN0b21lcj0iU2NobGVzd2lnLUhvbHN0ZWluIiB0OmN1c3RvbWVyLWlkPSJzaCIgdDpjbGllbnQ9IlNjaGxlc3dpZy1Ib2xzdGVpbiIgdDpjbGllbnQtaWQ9ImxhbmQiPgogIDxnZWJpZXRfaWQ+OTAwNzE3ODwvZ2ViaWV0X2lkPgogIDxzZXNzaW9uaWQ+ZjA1M2M0MmMtZjU0ZS00ZTZlLWIxODMtNWVmM2QxZDFlMDQyPC9zZXNzaW9uaWQ+CiAgPGFubGllZ2VuX2lkPjg5Njc5MTM8L2FubGllZ2VuX2lkPgogIDx6c3Rfb25saW5lX2RpZW5zdD5XYWhsaGVsZmVyIC0gQWx0ZW5ob2x6L0UtTWFpbC1adXN0ZWxsdW5nOzI1NDQwNDQwMDtodHRwczovL3d3dy5kYXRhcG9ydC5kZS9kYXRlbnNjaHV0ei87aHR0cHM6Ly93d3cuZGF0YXBvcnQuZGUvaW1wcmVzc3VtLztFTUFJTF9MTjs7b2xhZi5sZWllckBkYXRhcG9ydC5kZTs7dHJ1ZTwvenN0X29ubGluZV9kaWVuc3Q+CiAgPGdlYmlldGJlemVpY2hudW5nPkFsdGVuaG9sejwvZ2ViaWV0YmV6ZWljaG51bmc+CiAgPGRhdGVuc2NodXR6X3p1c3RpbW11bmc+dHJ1ZTwvZGF0ZW5zY2h1dHpfenVzdGltbXVuZz4KICA8d2FobD5MYW5kdGFnc3dhaGwgU2NobGVzd2lnIEhvaGxzdGVpbiA4LiBNYWkgMjAyMjwvd2FobD4KICA8d2VpdGVyZV93YWhsZW4+dHJ1ZTwvd2VpdGVyZV93YWhsZW4+CiAgPGVpbnNhdHpvcnQ+CiAgICA8YXVzc2VyaGFsYiBsYWJlbD0iTmljaHQgaW0gZWlnZW5lbiBXYWhsYmV6aXJrIj5mYWxzZTwvYXVzc2VyaGFsYj4KICAgIDxvdGhlciBsYWJlbD0iIj5mYWxzZTwvb3RoZXI+CiAgICA8d29obm9ydCBsYWJlbD0iTnVyIGluIFdvaG5vcnRuw6RoZSI+dHJ1ZTwvd29obm9ydD4KICA8L2VpbnNhdHpvcnQ+CiAgPGVyZmFocnVuZz5KYTwvZXJmYWhydW5nPgogIDxmdW5rdGlvbj4KICAgIDxiZWlzaXR6ZXIgbGFiZWw9IkJlaXNpdHplcjppbiI+ZmFsc2U8L2JlaXNpdHplcj4KICAgIDxzY2hyaWZ0ZnVlaHJlciBsYWJlbD0iU2NocmlmdGbDvGhyZXI6aW4iPmZhbHNlPC9zY2hyaWZ0ZnVlaHJlcj4KICAgIDxzdGVsbF9zY2hyaWZ0ZnVlaHJlciBsYWJlbD0iU3RlbGx2ZXJ0cmV0ZW5kZTpyIFNjaHJpZnRmw7xocmVyOmluIj5mYWxzZTwvc3RlbGxfc2NocmlmdGZ1ZWhyZXI+CiAgICA8c3RlbGxfd2FobHZvcnN0ZWhlciBsYWJlbD0iU3RlbGx2ZXJ0cmV0ZW5kZTpyIFdhaGx2b3JzdGVoZXI6aW4iPmZhbHNlPC9zdGVsbF93YWhsdm9yc3RlaGVyPgogICAgPHdhaGx2b3JzdGVoZXIgbGFiZWw9IldhaGx2b3JzdGVoZXI6aW4iPnRydWU8L3dhaGx2b3JzdGVoZXI+CiAgPC9mdW5rdGlvbj4KICA8cG9zdGZhY2huYWNocmljaHQ+U2VociBnZWVocnRlL3IgQW56ZWlnZW5kZSpyLCAmbHQ7YnIvJmd0OyZsdDtici8mZ3Q7SWhyIEFudHJhZyB3dXJkZSBhbiBkaWUgenVzdMOkbmRpZ2UgU3RlbGxlIGdlc2VuZGV0LiZsdDtici8mZ3Q7Jmx0O2JyLyZndDtJaHJlIFZvcmdhbmdzbnVtbWVyIHVuZCB6dXN0w6RuZGlnZSBTdGVsbGUgZmluZGVuIFNpZSBpbSBhbmdlaMOkbmd0ZW4gRG9rdW1lbnQuJmx0O2JyLyZndDtCaXR0ZSBnZWJlbiBTaWUgZGllc2UgVm9yZ2FuZ3NudW1tZXIgYmVpIGFsbGVuIEFuZnJhZ2VuIHp1IElocmVyIEFuemVpZ2UgYW4uJmx0O2JyLyZndDsmbHQ7YnIvJmd0OyZsdDtici8mZ3Q7TWl0IGZyZXVuZGxpY2hlbiBHcsO8w59lbiZsdDtici8mZ3Q7SWhyZSBPbmxpbmUtQmVow7ZyZGUmbHQ7YnIvJmd0OyZsdDtici8mZ3Q7PC9wb3N0ZmFjaG5hY2hyaWNodD4KICA8bmFtZWlkLz4KICA8cmVzdF9yZXNwb25zZV9uYW1lLz4KICA8bWFpbGJveGd1aWQvPgogIDxuYWNobmFtZT5mcmdoPC9uYWNobmFtZT4KICA8dm9ybmFtZT5mcmdoPC92b3JuYW1lPgogIDxnZWJ1cnRzZGF0dW0vPgogIDxzdGFhdGVuPkRFPC9zdGFhdGVuPgogIDxzdHJhc3NlX25yPgogICAgPHN0cmFzc2VfbnItaXRlbT4KICAgICAgPHN0cmFzc2U+c2ZnPC9zdHJhc3NlPgogICAgICA8aGF1c251bW1lcj4yMjwvaGF1c251bW1lcj4KICAgICAgPGFkcmVzc3p1c2F0ei8+CiAgICA8L3N0cmFzc2VfbnItaXRlbT4KICA8L3N0cmFzc2VfbnI+CiAgPHBsel9vcnQ+CiAgICA8cGx6X29ydC1pdGVtPgogICAgICA8cG9zdGxlaXR6YWhsPjIyMjIyPC9wb3N0bGVpdHphaGw+CiAgICAgIDxvcnQ+c2RmZ3NmZDwvb3J0PgogICAgPC9wbHpfb3J0LWl0ZW0+CiAgPC9wbHpfb3J0PgogIDxlbWFpbD5zZGZnc0Bhc2RmLmNvbTwvZW1haWw+CiAgPHRlbGVmb24+MjM0PC90ZWxlZm9uPgogIDxPcmdhbmlzYXRpb25zZWluaGVpdGVuSUQ+OTAzMDIyOTwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbklEPgogIDxPcmdhbmlzYXRpb25zZWluaGVpdGVuQkVaRUlDSE5VTkc+TGFuZGVzaGF1cHRzdGFkdCBLaWVsIC0gQsO8cmdlci0gdW5kCgkJCU9yZG51bmdzYW10LCBHZXdlcmJlbWVsZGVzdGVsbGU8L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz4KICA8enVzdF9rb250YWt0c3lzdGVta2VubnVuZ19uYi8+CiAgPHp1c3Rfa29udGFrdHN5c3RlbWtlbm51bmdfbG4+b2xhZi5sZWllckBkYXRhcG9ydC5kZTwvenVzdF9rb250YWt0c3lzdGVta2VubnVuZ19sbj4KICA8enVzdF9rb250YWt0c3lzdGVta2VubnVuZ193cy8+CiAgPHp1c3Rfc3RyYXNzZT5BbHRlbmhvbHplciBTdHJhw59lPC96dXN0X3N0cmFzc2U+CiAgPHp1c3RfaGF1c251bW1lcj4xMDwvenVzdF9oYXVzbnVtbWVyPgogIDx6dXN0X3Bvc3RsZWl0emFobD4yNDE2MTwvenVzdF9wb3N0bGVpdHphaGw+CiAgPG9ydElEPjkwMDcxNzg8L29ydElEPgogIDx6dXN0X29ydD5BbHRlbmhvbHo8L3p1c3Rfb3J0PgogIDx6dXN0X3RlbGVmb25udW1tZXI+KzQ5IDQwIDQyODQ2LTQwMzI8L3p1c3RfdGVsZWZvbm51bW1lcj4KICA8enVzdF9mYXhudW1tZXIvPgogIDx6dXN0X2VtYWlsYWRyZXNzZT5SYW1pbi5KZXlyYW5pQGRhdGFwb3J0LmRlPC96dXN0X2VtYWlsYWRyZXNzZT4KICA8enVzdGVsbHVuZ19uYWNocmljaHRlbmJyb2tlcj5mYWxzZTwvenVzdGVsbHVuZ19uYWNocmljaHRlbmJyb2tlcj4KICA8enVzdGVsbHVuZ19lbGVrdHJvbmlzY2g+dHJ1ZTwvenVzdGVsbHVuZ19lbGVrdHJvbmlzY2g+CjwvbXlGb3JtPg==</content> - <contentType>text/xml</contentType> - <id>myForm-xml</id> - <name>XML-Daten.xml</name> - </attachments> - <attachments> - <attributes> - <key>X-IntelliForm-Signed</key> - <value>false</value> - </attributes> - <content>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DQovVHlwZSAvQ2F0YWxvZw0KL0xhbmcgKGRlLURFKQ0KL091dGxpbmVzIDIzIDAgUg0KL1BhZ2VzIDEwIDAgUg0KPj4KZW5kb2JqCjI2IDAgb2JqCjw8DQovQ3JlYXRvciA8ZmVmZjAwNTcwMDcyMDA2OTAwNzQwMDY1MDA3Mj4NCi9DcmVhdGlvbkRhdGUgKEQ6MjAyMTEyMDgxMTUxNTYrMDEnMDAnKQ0KL1Byb2R1Y2VyIDxmZWZmMDA0YzAwNjkwMDYyMDA3MjAwNjUwMDRmMDA2NjAwNjYwMDY5MDA2MzAwNjUwMDIwMDAzNjAwMmUwMDM0Pg0KL0F1dGhvciA8ZmVmZjAwNGIwMDZjMDA2MTAwNzUwMDczMDAyMDAwNTcwMDYxMDA2ZTAwNmUwMDY1MDA3Mj4NCj4+CmVuZG9iagp4cmVmDQowIDI3IA0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDY3IDAwMDAwIG4NCjAwMDAwMDAyNTEgMDAwMDAgbg0KMDAwMDAwMTcxMCAwMDAwMCBuDQowMDAwMDAxNzMwIDAwMDAwIG4NCjAwMDAwMDE5MTQgMDAwMDAgbg0KMDAwMDAwMzQ4OCAwMDAwMCBuDQowMDAwMDAzNTA4IDAwMDAwIG4NCjAwMDAwMDM2OTIgMDAwMDAgbg0KMDAwMDAwNDYzNiAwMDAwMCBuDQowMDAwMDA0NjU1IDAwMDAwIG4NCjAwMDAwMDQ3NzcgMDAwMDAgbg0KMDAwMDAxODQ2MSAwMDAwMCBuDQowMDAwMDE4NDgzIDAwMDAwIG4NCjAwMDAwMTg2OTcgMDAwMDAgbg0KMDAwMDAxOTMxMyAwMDAwMCBuDQowMDAwMDE5Nzg4IDAwMDAwIG4NCjAwMDAwMjc0NDUgMDAwMDAgbg0KMDAwMDAyNzQ2NiAwMDAwMCBuDQowMDAwMDI3Njg3IDAwMDAwIG4NCjAwMDAwMjgxMDEgMDAwMDAgbg0KMDAwMDAyODM4NSAwMDAwMCBuDQowMDAwMDI4NDMyIDAwMDAwIG4NCjAwMDAwMjg0OTQgMDAwMDAgbg0KMDAwMDAyODU1NiAwMDAwMCBuDQowMDAwMDI4NzQ5IDAwMDAwIG4NCjAwMDAwMjg4NzYgMDAwMDAgbg0KdHJhaWxlcg0KPDwNCi9JbmZvIDI2IDAgUg0KL0lEIFsgPGFhNThmNDE1OWVlNzI2NWY1MTg0N2ZiNmU1NmZmYTA1PiA8Y2Q3MmFiZTE4ZDk4NGM4NjAyMTJjOTU5NzM5MzNiNmU+IF0NCi9Sb290IDI1IDAgUg0KL1NpemUgMjcNCi9Eb2NDaGVja3N1bSAvOTA3Q0UzMzczRTZCREE3QzVERjk1NUNGMERBNEU3ODYNCj4+DQpzdGFydHhyZWYNCjI5MTIzDQolJUVPRg0K</content> - <contentType>application/pdf</contentType> - <id>myForm-pdf</id> - <name>Wahlhelferin.pdf</name> - </attachments> - <attachments> - <attributes> - <key>X-IntelliForm-Signed</key> - <value>false</value> - </attributes> - <content>PGh0bWwgeG1sbnM6dD0iaHR0cDovL3htbG5zLmNpdC5kZS9pbnRlbGxpZm9ybS90cmFuc2FjdGlvbiI+CjxoZWFkPgo8TUVUQSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CjwvaGVhZD4KPGJvZHkgc3R5bGU9ImZvbnQtZmFtaWx5OiBBcmlhbDsgZm9udC1zaXplOiAxMXB0OyI+CjxwPlNlaHIgZ2VlaHJ0ZS9yIFNhY2hiZWFyYmVpdGVyKmluPC9wPgo8cD5FaW4gbmV1ZXIgQW50cmFnIHd1cmRlIGdlc3RlbGx0PC9wPgo8cD5BY2h0dW5nOiBBbnR3b3J0ZW4gU2llIG5pY2h0IGF1ZiBkaWVzZSBFLU1haWwuIERpZSBFLU1haWwgd3VyZGUgYXV0b21hdGlzY2ggZXJzdGVsbHQuIEVpbmUgQW50d29ydCB3aXJkIG5pY2h0IGJlYXJiZWl0ZXQgdW5kIGdlbGVzZW4hLiBCaXR0ZSB3ZW5kZW4gU2llIHNpY2ggYW4gZGVuIGltIEFudHJhZyBnZW5hbm50ZW4gQW50cmFnc3RlbGxlci48L3A+CjwvYm9keT4KPC9odG1sPgo=</content> - <contentType>text/xml</contentType> - <id>EmailBodySachbearbeiterTemplate</id> - <name>EmailBodySachbearbeiterTemplate.xml</name> - </attachments> - <caller/> - <client>Schleswig-Holstein</client> - <clientId>land</clientId> - <customParameters> - <key>EmailAdresseSachbearbeiter</key> - <value>noreply@ozg-sh.de</value> - </customParameters> - <customParameters> - <key>EmailSubjectSachbearbeiterTemplate</key> - <value>Wahlhelferin</value> - </customParameters> - <customer>Schleswig-Holstein</customer> - <customerId>sh</customerId> - <form>Wahlhelferin werden</form> - <formId>odp_wahlhelfer/odp_wahlhelfer</formId> - <id>20211208426920179200</id> - <primaryDataAttachmentId>myForm-xml</primaryDataAttachmentId> - <primaryFormAttachmentId>myForm-pdf</primaryFormAttachmentId> - <sender>stage.afm.schleswig-holstein.de</sender> - <timestamp>2021-12-08T11:51:57.542+01:00</timestamp> - <username/> - </data> - </ns2:deposit> - </soap:Body> -</soap:Envelope> \ No newline at end of file diff --git a/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/AttachmentTestFactory.java b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/AttachmentTestFactory.java deleted file mode 100644 index a2157603..00000000 --- a/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/AttachmentTestFactory.java +++ /dev/null @@ -1,205 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.intelliform; - -import static java.util.stream.Collectors.*; - -import java.util.List; -import java.util.Map; -import java.util.stream.IntStream; -import java.util.stream.Stream; - -import lombok.Builder; - -public class AttachmentTestFactory { - - public static final String XML_FILE_NAME = "XML-Daten-1.xml"; - - public static final String XML_CONTENT_TYPE = "text/xml"; - public static final String XML_CONTENT_STRING = """ - <?xml version="1.0" encoding="UTF-8"?> - <myForm xmlns:pdf="http://xmlns.cit.de/assistants/pdf" - xmlns:t="http://xmlns.cit.de/intelliform/transaction" - t:id="20201118365670866101\" t:timestamp=\"2020-11-18T09:09:27.627Z" - t:sender="afm.schleswig-holstein.de" - t:form="Kleiner Waffenschein gem. § 10 Abs. 4 Satz 4 Waffengesetz (WaffG)" - t:form-id="waffen/kleinerWaffenschein" - t:customer="Einheitlicher Ansprechpartner" t:customer-id="ea-sh" - t:client="Schleswig-Holstein" - t:client-id="land"> - <Upload1> - <file content-type="image/png" description="" id="VendorId3333" length="155251">Image.png</file> - </Upload1> - </myForm>"""; - public static final String XML_CONTENT = XML_CONTENT_STRING; - public static final String XML_ATTACHMENT_ID = "myForm-xml"; - public static final String XML_ROHFORM_ATTACHMENT_ID = "myForm-xml-rohform"; - public static final String XML_ORIGINALFORM_ATTACHMENT_ID = "myForm-xml-originalform"; - public static final String XML_NAME = "XML-Daten.xml"; - - public static final String PDF_ATTACHMENT_CONTENT_TYPE = "application/pdf"; - public static final String PDF_ATTACHMENT_CONTENT = "TestContent2"; - public static final String PDF_ATTACHMENT_NAME = "Scan1.pdf"; - public static final String PDF_ATTACHMENT_ID = "VendorId2222"; - public static final String PDF2_ATTACHMENT_ID = "VendorIdpdf2"; - - public static final String PNG_ATTACHMENT_CONTENT_TYPE = "application/pdf"; - public static final String PNG_ATTACHMENT_CONTENT = "TestContent3"; - public static final String PNG_ATTACHMENT_NAME = "Image.png"; - public static final String PNG_ATTACHMENT_ID = "VendorId3333"; - - public static final String JPG_ATTACHMENT_ID = "VendorIdjpg1"; - public static final String ODT_ATTACHMENT_ID = "VendorIdodt1"; - - public static final String ODT_ATTACHMENT_CONTENT_TYPE = "application/vnd.oasis.opendocument.text"; - - public static final String DOCX_ATTACHMENT_CONTENT_TYPE = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"; - public static final String DOCX_ATTACHMENT_CONTENT = "TestContent4"; - - public static final String DOCX1_ATTACHMENT_ID = "VendorIddocx1"; - public static final String DOCX2_ATTACHMENT_ID = "VendorIddocx2"; - public static final String DOCX3_ATTACHMENT_ID = "VendorIddocx3"; - public static final String DOCX4_ATTACHMENT_ID = "VendorIddocx4"; - public static final String DOCX5_ATTACHMENT_ID = "VendorIddocx5"; - public static final String DOCX6_ATTACHMENT_ID = "VendorIddocx6"; - public static final String DOCX7_ATTACHMENT_ID = "VendorIddocx7"; - public static final String DOCX8_ATTACHMENT_ID = "VendorIddocx8"; - public static final String ORGANISATIONSEINHEITEN_ID = "10363455"; - - public static final String ANTRAGSTELLER_ANREDE = "Herr"; - public static final String ANTRAGSTELLER_ANREDE_CODE = "03"; - public static final String ANTRAGSTELLER_NACHNAME = "Mustermann"; - - public static final String ATTRIBUTES_ENTRY_KEY = "X-IntelliForm-Signed"; - public static final String ATTRIBUTES_ENTRY_VALUE = "false"; - - public static Attachment createXmlDaten() { - return createXmlDatenWithContent(XML_CONTENT); - } - - public static Attachment createPdf() { - return createAttachment(MetaAttachment.builder() - .id(PDF_ATTACHMENT_ID) - .name(PDF_ATTACHMENT_NAME) - .contentType(PDF_ATTACHMENT_CONTENT_TYPE) - .content(PDF_ATTACHMENT_CONTENT) - .build()); - } - - public static Attachment createPng() { - return createAttachment(MetaAttachment.builder() - .id(PNG_ATTACHMENT_ID) - .name(PNG_ATTACHMENT_NAME) - .contentType(PNG_ATTACHMENT_CONTENT_TYPE) - .content(PNG_ATTACHMENT_CONTENT) - .build()); - } - - public static Attachment createAttachment(MetaAttachment metaAttachment) { - var attachment = new Attachment(); - attachment.getAttributes().add(createAttributesEntry()); - attachment.setContent(metaAttachment.content.getBytes()); - attachment.setContentType(metaAttachment.contentType); - attachment.setId(metaAttachment.id); - attachment.setName(metaAttachment.name); - return attachment; - } - - private static Entry createAttributesEntry() { - var attributesEntry = new Entry(); - attributesEntry.setKey(ATTRIBUTES_ENTRY_KEY); - attributesEntry.setValue(ATTRIBUTES_ENTRY_VALUE); - return attributesEntry; - } - - public static List<Attachment> createManyAttachments(String xmlTemplateString, Map<String, String> templateValues, - String... attachmentParameterMatrix) { - - var metaAttachments = arrayToMetaAttachments(attachmentParameterMatrix); - - var allTemplateValues = Stream.concat( - templateValues.entrySet().stream(), - metaAttachments.stream().map(metaAttachment -> Map.entry(metaAttachment.templateId, metaAttachment.id)) - ).collect(toMap(Map.Entry::getKey, Map.Entry::getValue)); - - var xmlFormString = fillTemplateString( - xmlTemplateString, - allTemplateValues - ); - - return Stream.concat( - Stream.of( - createAttachment(MetaAttachment.builder() - .id(XML_ROHFORM_ATTACHMENT_ID) - .name("XML-Daten (Rohform).xml") - .contentType(XML_CONTENT_TYPE) - .content(xmlFormString) - .build() - ), - createAttachment(MetaAttachment.builder() - .id(XML_ORIGINALFORM_ATTACHMENT_ID) - .name("XML-Daten (Originalform).xml") - .contentType(XML_CONTENT_TYPE) - .content(xmlFormString) - .build() - ), - createXmlDatenWithContent(xmlFormString)), - metaAttachments.stream().map(AttachmentTestFactory::createAttachment) - ).toList(); - } - - private static Attachment createXmlDatenWithContent(String content) { - return createAttachment(MetaAttachment.builder() - .id(XML_ATTACHMENT_ID) - .name(XML_NAME) - .contentType(XML_CONTENT_TYPE) - .content(content) - .build() - ); - } - - @Builder - public record MetaAttachment(String id, String name, String contentType, String content, String templateId) { - } - - private static List<MetaAttachment> arrayToMetaAttachments(String[] array) { - int parameterCount = 5; - if (array.length % parameterCount != 0) { - throw new IllegalArgumentException("Matrix length must be divisible by %d.".formatted(parameterCount)); - } - - return IntStream.range(0, array.length / parameterCount) - .boxed() - .map(row -> row * parameterCount) - .map(offset -> new MetaAttachment(array[offset], array[offset + 1], array[offset + 2], array[offset + 3], array[offset + 4])) - .toList(); - } - - private static String fillTemplateString(String templateString, Map<String, String> templateValues) { - return templateValues.entrySet().stream() - .reduce(templateString, - (currentString, entry) -> currentString.replace("${" + entry.getKey() + "}", entry.getValue()), - (s1, s2) -> s1); - } -} diff --git a/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/DepositDataMapperTest.java b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/DepositDataMapperTest.java deleted file mode 100644 index 14e60516..00000000 --- a/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/DepositDataMapperTest.java +++ /dev/null @@ -1,448 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.intelliform; - -import static de.ozgcloud.eingang.intelliform.AttachmentTestFactory.*; -import static de.ozgcloud.eingang.intelliform.DepositDataTestFactory.*; -import static java.util.Collections.*; -import static org.assertj.core.api.Assertions.*; -import static org.mockito.Mockito.*; - -import java.io.IOException; -import java.io.StringReader; -import java.nio.charset.Charset; -import java.util.List; - -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.ParserConfigurationException; - -import org.apache.commons.io.FileUtils; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mockito.ArgumentCaptor; -import org.mockito.Captor; -import org.mockito.Spy; -import org.w3c.dom.Document; -import org.xml.sax.InputSource; -import org.xml.sax.SAXException; - -import de.ozgcloud.eingang.common.errorhandling.TechnicalException; -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.IncomingFile; -import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; -import lombok.SneakyThrows; - -class DepositDataMapperTest { - - @Spy - private DepositDataMapper mapper; - - @DisplayName("map to form data") - @Nested - class TestMapToFormData { - - @Captor - private ArgumentCaptor<Attachment> attachmentArgumentCaptor; - - private DepositData depositData; - - @DisplayName("with normal attachments") - @Nested - class TestWithNormalAttachments { - @BeforeEach - void mock() { - depositData = DepositDataTestFactory.create(ATTACHMENTS); - } - - @DisplayName("should throw technical exception if primary xml link is incorrect") - @Test - void shouldThrowTechnicalExceptionIfPrimaryXmlLinkIsIncorrect() { - depositData.setPrimaryDataAttachmentId("incorrect"); - - assertThatThrownBy(TestMapToFormData.this::doMapping) - .isInstanceOf(TechnicalException.class); - } - - @DisplayName("should use map to incoming file method") - @Test - void shouldUseMapToIncomingFileMethod() { - doMapping(); - verify(mapper, times(ATTACHMENTS.size())).mapAttachmentToIncomingFile(attachmentArgumentCaptor.capture()); - - assertThat(attachmentArgumentCaptor.getAllValues()).isEqualTo(ATTACHMENTS); - } - - @DisplayName("should return with representations") - @Test - void shouldReturnWithRepresentations() { - var formData = doMapping(); - - var incomingFileIds = formData.getRepresentations().stream().map(IncomingFile::getVendorId).toList(); - assertThat(incomingFileIds).containsExactly(XML_ATTACHMENT_ID, PDF_ATTACHMENT_ID); - } - - @DisplayName("should return with one attachment") - @Test - void shouldReturnWithOneAttachment() { - var formData = doMapping(); - - var incomingFileIds = formData.getAttachments().stream() - .flatMap(group -> group.getFiles().stream()) - .map(IncomingFile::getVendorId) - .toList(); - assertThat(incomingFileIds).containsExactly(PNG_ATTACHMENT_ID); - } - - @DisplayName("should return with attachment group name") - @Test - void shouldReturnWithAttachmentGroupName() { - var formData = doMapping(); - - var incomingFileIds = formData.getAttachments().stream() - .map(IncomingFileGroup::getName) - .toList(); - assertThat(incomingFileIds).containsExactly("Upload1"); - } - - @DisplayName("should return with number of representations") - @Test - void shouldReturnWithNumberOfRepresentations() { - var formData = doMapping(); - - assertThat(formData.getNumberOfRepresentations()).isEqualTo(2); - } - } - - @DisplayName("with duplicate keys") - @Nested - class TestWithDuplicateKeys { - @BeforeEach - void mock() { - depositData = DepositDataTestFactory.create(List.of( - withEmptyName(createXmlDaten()), - createXmlDaten(), - withEmptyName(createPdf()), - createPdf(), - withEmptyName(createPng()), - createPng() - )); - } - - private Attachment withEmptyName(Attachment attachment) { - attachment.setName(""); - return attachment; - } - - @DisplayName("should keep last entry for representations") - @Test - void shouldKeepLastEntryForRepresentations() { - var formData = doMapping(); - - var representationFiles = formData.getRepresentations(); - assertThat(getAttachmentVendorIds(representationFiles)).containsExactly(XML_ATTACHMENT_ID, PDF_ATTACHMENT_ID); - assertThat(getAttachmentFileNames(representationFiles)).containsExactly(XML_NAME, PDF_ATTACHMENT_NAME); - } - - @DisplayName("should keep last entry for attachments") - @Test - void shouldKeepLastEntryForAttachments() { - var formData = doMapping(); - - var attachmentFiles = formData.getAttachments().stream() - .map(IncomingFileGroup::getFiles) - .flatMap(List::stream) - .toList(); - assertThat(getAttachmentVendorIds(attachmentFiles)).containsExactly(PNG_ATTACHMENT_ID); - assertThat(getAttachmentFileNames(attachmentFiles)).containsExactly(PNG_ATTACHMENT_NAME); - } - - private List<String> getAttachmentFileNames(List<IncomingFile> incomingFileList) { - return incomingFileList.stream() - .map(IncomingFile::getName) - .toList(); - } - - private List<String> getAttachmentVendorIds(List<IncomingFile> incomingFileList) { - return incomingFileList.stream() - .map(IncomingFile::getVendorId) - .toList(); - } - } - - @DisplayName("with many attachments") - @Nested - class TestWithManyAttachments { - @BeforeEach - void mock() { - depositData = DepositDataTestFactory.create(MANY_ATTACHMENTS); - } - - @DisplayName("should return with representations") - @Test - void shouldReturnWithRepresentations() { - var formData = doMapping(); - - var incomingFileIds = formData.getRepresentations().stream() - .map(IncomingFile::getVendorId) - .toList(); - assertThat(incomingFileIds).containsExactly( - XML_ATTACHMENT_ID, - XML_ROHFORM_ATTACHMENT_ID, - XML_ORIGINALFORM_ATTACHMENT_ID - ); - } - - @DisplayName("should return with attachment groups") - @Test - void shouldReturnWithAttachmentGroups() { - var formData = doMapping(); - - var incomingFileIds = formData.getAttachments().stream() - .flatMap(group -> group.getFiles().stream()) - .map(IncomingFile::getVendorId) - .toList(); - assertThat(incomingFileIds).containsExactlyInAnyOrder( - DOCX1_ATTACHMENT_ID, - PDF_ATTACHMENT_ID, - DOCX2_ATTACHMENT_ID, - DOCX3_ATTACHMENT_ID, - DOCX4_ATTACHMENT_ID, - DOCX5_ATTACHMENT_ID, - DOCX6_ATTACHMENT_ID, - DOCX7_ATTACHMENT_ID, - DOCX8_ATTACHMENT_ID, - PDF2_ATTACHMENT_ID, - ODT_ATTACHMENT_ID, - JPG_ATTACHMENT_ID, - PNG_ATTACHMENT_ID - ); - } - } - - @DisplayName("with empty attachments") - @Nested - class TestWithEmptyAttachments { - @DisplayName("should throw technical exception") - @Test - void shouldThrowTechnicalException() { - depositData = DepositDataTestFactory.create(emptyList()); - - assertThatThrownBy(TestMapToFormData.this::doMapping) - .isInstanceOf(TechnicalException.class); - } - } - - private FormData doMapping() { - return mapper.mapToFormData(depositData); - } - - } - - @DisplayName("map deposit attachments to sorted incoming files") - @Nested - class TestMapDepositAttachmentsToSortedIncomingFiles { - - @DisplayName("should fail without primaryDataAttachmentId attachment") - @Test - void shouldFailWithoutPrimaryDataAttachmentIdAttachment() { - var depositData = DepositDataTestFactory.create(emptyList()); - - assertThatThrownBy(() -> mapper.mapDepositAttachmentsToSortedIncomingFiles(depositData)) - .isInstanceOf(TechnicalException.class); - } - - @DisplayName("should keep entry order") - @Test - void shouldKeepEntryOrder() { - var depositData = DepositDataTestFactory.create(ATTACHMENTS); - - var incomingFileMap = mapper.mapDepositAttachmentsToSortedIncomingFiles(depositData); - - var keys = incomingFileMap.keySet().stream().toList(); - assertThat(keys).containsExactly(XML_ATTACHMENT_ID, PDF_ATTACHMENT_ID, PNG_ATTACHMENT_ID); - } - - @DisplayName("should move primary attachment id to first position") - @Test - void shouldMovePrimaryAttachmentIdToFirstPosition() { - var rohformId = "XML-daten-rohform"; - var depositData = DepositDataTestFactory.create(List.of( - AttachmentTestFactory.createAttachment(MetaAttachment.builder() - .id(rohformId) - .name("XML-Daten (Rohform).xml") - .contentType(XML_CONTENT_TYPE) - .content("abc") - .build() - ), - AttachmentTestFactory.createPdf(), - AttachmentTestFactory.createXmlDaten(), - AttachmentTestFactory.createPng() - )); - - var incomingFileMap = mapper.mapDepositAttachmentsToSortedIncomingFiles(depositData); - - var keys = incomingFileMap.keySet().stream().toList(); - assertThat(keys).containsExactly(XML_ATTACHMENT_ID, rohformId, PDF_ATTACHMENT_ID, PNG_ATTACHMENT_ID); - } - - @DisplayName("should keep last entry for duplicate key") - @Test - void shouldKeepLastEntryForDuplicateKey() { - var depositData = DepositDataTestFactory.create(List.of( - AttachmentTestFactory.createXmlDaten(), - AttachmentTestFactory.createPdf(), - AttachmentTestFactory.createXmlDaten() - )); - - var incomingFileMap = mapper.mapDepositAttachmentsToSortedIncomingFiles(depositData); - - var keys = incomingFileMap.keySet().stream().toList(); - assertThat(keys).containsExactly(XML_ATTACHMENT_ID, PDF_ATTACHMENT_ID); - } - } - - @DisplayName("map attachment to incoming file") - @Nested - class TestMapAttachmentToIncomingFile { - private Attachment attachment; - - @BeforeEach - void mock() { - attachment = AttachmentTestFactory.createXmlDaten(); - } - - @DisplayName("should have ID") - @Test - void shouldHaveId() { - var incomingFile = doMapping(); - - assertThat(incomingFile.getId()).isNotNull(); - } - - @DisplayName("should have vendor ID") - @Test - void shouldHaveVendorId() { - var incomingFile = doMapping(); - - assertThat(incomingFile.getVendorId()).isEqualTo(XML_ATTACHMENT_ID); - } - - @DisplayName("should have name") - @Test - void shouldHaveName() { - var incomingFile = doMapping(); - - assertThat(incomingFile.getName()).isEqualTo(XML_NAME); - } - - @DisplayName("should have content type") - @Test - void shouldHaveContentType() { - var incomingFile = doMapping(); - - assertThat(incomingFile.getContentType()).isEqualTo(XML_CONTENT_TYPE); - } - - @DisplayName("should have size") - @Test - void shouldHaveSize() { - var incomingFile = doMapping(); - - assertThat(incomingFile.getSize()).isEqualTo(XML_CONTENT.getBytes().length); - } - - @DisplayName("should have file with content") - @SneakyThrows - @Test - void shouldHaveFileWithContent() { - var incomingFile = doMapping(); - - var content = FileUtils.readFileToString(incomingFile.getFile(), Charset.defaultCharset()); - assertThat(content).isEqualTo(XML_CONTENT_STRING); - } - - private IncomingFile doMapping() { - return mapper.mapAttachmentToIncomingFile(attachment); - } - } - - @DisplayName("find attachment groups") - @Nested - class TestFindAttachmentGroups { - - private Document document; - - @BeforeEach - void mock() { - document = buildXMLDocument(""" - <myForm t:client-id="land"> - <Upload1> - <file content-type="image/png" description="" id="VendorId3333" length="155251">Image.png</file> - </Upload1> - <Upload2> - <file id="VendorId1111">name1.txt</file> - <file id="VendorId2222">name2.txt</file> - </Upload2> - <file id="VendorIdxxxx">namex.txt</file> - </myForm>"""); - } - - @DisplayName("should have groups with parent element name") - @Test - void shouldHaveGroupsWithParentElementName() { - var attachmentGroups = mapper.findAttachmentGroups(document); - - assertThat(attachmentGroups).containsOnlyKeys("Upload1", "Upload2", "myForm"); - } - - @DisplayName("should have Upload1 group with fileId") - @Test - void shouldHaveUpload1GroupWithFileId() { - var attachmentGroups = mapper.findAttachmentGroups(document); - - assertThat(attachmentGroups.get("Upload1")).containsExactly("VendorId3333"); - } - - @DisplayName("should have two fileIds in Upload2 group") - @Test - void shouldHaveTwoFileIdsInUpload2Group() { - var attachmentGroups = mapper.findAttachmentGroups(document); - - assertThat(attachmentGroups.get("Upload2")).containsExactly("VendorId1111", "VendorId2222"); - } - } - - private Document buildXMLDocument(String xmlString) { - try { - return DocumentBuilderFactory.newInstance() - .newDocumentBuilder() - .parse(new InputSource(new StringReader(xmlString))); - } catch (ParserConfigurationException | IOException | SAXException e) { - throw new RuntimeException(e); - } - } - -} diff --git a/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/DepositDataTestFactory.java b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/DepositDataTestFactory.java deleted file mode 100644 index e6382bf2..00000000 --- a/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/DepositDataTestFactory.java +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.intelliform; - -import static de.ozgcloud.eingang.intelliform.AttachmentTestFactory.*; - -import java.time.Instant; -import java.util.Collection; -import java.util.List; -import java.util.Map; -import java.util.UUID; - -import de.ozgcloud.common.test.TestUtils; - -public class DepositDataTestFactory { - - public static final List<Attachment> ATTACHMENTS = List.of( - AttachmentTestFactory.createXmlDaten(), - AttachmentTestFactory.createPdf(), - AttachmentTestFactory.createPng() - ); - - public static final List<Attachment> MANY_ATTACHMENTS = createManyAttachments( - TestUtils.loadTextFile("intelliform/XML-Daten-complex.template.xml"), - Map.of( - "oeid", ORGANISATIONSEINHEITEN_ID, - "uuid", UUID.randomUUID().toString(), - "transactionId", UUID.randomUUID().toString(), - "now", Instant.now().toString(), - "antragsteller_anrede", ANTRAGSTELLER_ANREDE, - "anrede_code", ANTRAGSTELLER_ANREDE_CODE, - "antragsteller_nachname", ANTRAGSTELLER_NACHNAME, - "antragsteller_vorname", "Max", - "antragsteller_email", "max.mustermann@example.com" - ), - DOCX1_ATTACHMENT_ID, "Document1.docx", DOCX_ATTACHMENT_CONTENT_TYPE, DOCX_ATTACHMENT_CONTENT, "fileid-docx1", - PDF_ATTACHMENT_ID, "Document2.pdf", PDF_ATTACHMENT_CONTENT_TYPE, PDF_ATTACHMENT_CONTENT, "fileid-pdf1", - DOCX2_ATTACHMENT_ID, "Document3.docx", DOCX_ATTACHMENT_CONTENT_TYPE, DOCX_ATTACHMENT_CONTENT, "fileid-docx2", - DOCX3_ATTACHMENT_ID, "Document4.docx", DOCX_ATTACHMENT_CONTENT_TYPE, DOCX_ATTACHMENT_CONTENT, "fileid-docx3", - DOCX4_ATTACHMENT_ID, "Document5.docx", DOCX_ATTACHMENT_CONTENT_TYPE, DOCX_ATTACHMENT_CONTENT, "fileid-docx4", - DOCX5_ATTACHMENT_ID, "Document6.docx", DOCX_ATTACHMENT_CONTENT_TYPE, DOCX_ATTACHMENT_CONTENT, "fileid-docx5", - DOCX6_ATTACHMENT_ID, "Document7.docx", DOCX_ATTACHMENT_CONTENT_TYPE, DOCX_ATTACHMENT_CONTENT, "fileid-docx6", - DOCX7_ATTACHMENT_ID, "Document8.docx", DOCX_ATTACHMENT_CONTENT_TYPE, DOCX_ATTACHMENT_CONTENT, "fileid-docx7", - DOCX8_ATTACHMENT_ID, "Document9.docx", DOCX_ATTACHMENT_CONTENT_TYPE, DOCX_ATTACHMENT_CONTENT, "fileid-docx8", - PDF2_ATTACHMENT_ID, "Document9.pdf", PDF_ATTACHMENT_CONTENT_TYPE, PDF_ATTACHMENT_CONTENT, "fileid-pdf2", - ODT_ATTACHMENT_ID, "Document10.odt", ODT_ATTACHMENT_CONTENT_TYPE, "TestContent5", "fileid-odt1", - JPG_ATTACHMENT_ID, "Document11.jpg", "image/jpeg", "TestContent6", "fileid-jpg1", - PNG_ATTACHMENT_ID, "Document12.png", "image/png", "TestContent7", "fileid-png1"); - - public static DepositData create(Collection<Attachment> attachments) { - var depositData = new DepositData(); - depositData.setPrimaryDataAttachmentId(AttachmentTestFactory.XML_ATTACHMENT_ID); - depositData.getAttachments().addAll(attachments); - return depositData; - } -} diff --git a/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/FormDataEndpointITCase.java b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/FormDataEndpointITCase.java deleted file mode 100644 index 131accf2..00000000 --- a/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/FormDataEndpointITCase.java +++ /dev/null @@ -1,579 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.intelliform; - -import static de.ozgcloud.eingang.intelliform.AttachmentTestFactory.*; -import static de.ozgcloud.eingang.intelliform.DepositDataTestFactory.*; -import static de.ozgcloud.eingang.intelliform.FormDataEndpoint.*; -import static de.ozgcloud.eingang.intelliform.XmlDaten1Container.*; -import static org.assertj.core.api.Assertions.*; -import static org.mockito.ArgumentMatchers.*; -import static org.mockito.Mockito.*; - -import java.io.StringReader; -import java.io.StringWriter; -import java.util.Collection; -import java.util.List; -import java.util.UUID; - -import javax.xml.namespace.QName; -import javax.xml.transform.Source; -import javax.xml.transform.stream.StreamResult; -import javax.xml.transform.stream.StreamSource; - -import jakarta.xml.bind.JAXBElement; - -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mockito.ArgumentCaptor; -import org.mockito.Captor; -import org.mockito.Mock; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.boot.test.mock.mockito.SpyBean; -import org.springframework.context.ApplicationContext; -import org.springframework.core.io.Resource; -import org.springframework.oxm.jaxb.Jaxb2Marshaller; -import org.springframework.ws.test.server.MockWebServiceClient; -import org.springframework.ws.test.server.RequestCreators; -import org.springframework.ws.test.server.ResponseActions; -import org.springframework.ws.test.server.ResponseMatchers; - -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.PostfachAddressTestFactory; -import de.ozgcloud.eingang.router.ManagableStub; -import de.ozgcloud.eingang.router.VorgangManagerServerResolver; -import de.ozgcloud.eingang.router.VorgangRemoteService; -import de.ozgcloud.vorgang.grpc.binaryFile.BinaryFileServiceGrpc.BinaryFileServiceStub; -import de.ozgcloud.vorgang.vorgang.GrpcAntragsteller; -import de.ozgcloud.vorgang.vorgang.GrpcEingang; -import de.ozgcloud.vorgang.vorgang.GrpcFormData; -import de.ozgcloud.vorgang.vorgang.GrpcIncomingFile; -import de.ozgcloud.vorgang.vorgang.GrpcIncomingFileGroup; -import de.ozgcloud.vorgang.vorgang.VorgangServiceGrpc.VorgangServiceBlockingStub; -import io.grpc.Channel; -import lombok.SneakyThrows; - -@SpringBootTest -class FormDataEndpointITCase { - - private final static String TEST_FILE_PATH = "classpath:itcase/"; - - private final static String REQUEST = "EinfachesFormularZweiAnhaengeSoapRequest.xml"; - private final static String RESPONSE = "EinfachesFormularZweiAnhaengeSoapResponse.xml"; - - private static final String SOAP_REQUEST_OTHER_NAME = "XML-Daten-1-other_name_SoapRequest.xml"; - private static Jaxb2Marshaller marshaller; - - @Autowired - private ApplicationContext applicationContext; - - @SpyBean - private VorgangRemoteService vorgangRemoteService; - @MockBean - private VorgangManagerServerResolver resolver; - - @Mock - private ManagableStub<VorgangServiceBlockingStub> vorgangManageableServiceStub; - @Mock - private VorgangServiceBlockingStub vorgangServiceStub; - @Mock - private ManagableStub<BinaryFileServiceStub> binaryFileManageableServiceStub; - @Mock - private BinaryFileServiceStub binaryFileServiceStub; - - @Mock - private Channel channel; - - @Captor - private ArgumentCaptor<FormData> formDataCaptor; - @Captor - private ArgumentCaptor<GrpcEingang> grpcEingangCaptor; - - private MockWebServiceClient mockClient; - - private DepositData depositData; - - private final String vorgangId = UUID.randomUUID().toString(); - - @BeforeAll - static void setupMarshaller() { - marshaller = new Jaxb2Marshaller(); - marshaller.setPackagesToScan("de.ozgcloud.eingang.intelliform"); - } - - @BeforeEach - void initTest() { - mockClient = MockWebServiceClient.createClient(applicationContext); - - when(resolver.resolveVorgangServiceBlockingStubByOrganisationseinheitenId(any())).thenReturn(vorgangManageableServiceStub); - when(vorgangManageableServiceStub.get()).thenReturn(vorgangServiceStub); - when(vorgangServiceStub.getChannel()).thenReturn(channel); - when(channel.authority()).thenReturn("authorityDummy"); - - when(resolver.resolveBinaryFileServiceStubByOrganisationsEinheitId(any())).thenReturn(binaryFileManageableServiceStub); - when(binaryFileManageableServiceStub.get()).thenReturn(binaryFileServiceStub); - - doReturn(vorgangId).when(vorgangRemoteService).createVorgang(any(), any(), any(), any()); - } - - @DisplayName("send antrag with many attachments") - @Nested - class TestSendAntragWithManyAttachments { - - @BeforeEach - void mock() { - depositData = DepositDataTestFactory.create(MANY_ATTACHMENTS); - } - - @DisplayName("should map antragsteller nachname") - @Test - void shouldMapAntragstellerNachname() { - sendDepositAndCaptureCreateVorgang(); - - var antragsteller = getCapturedAntragsteller(); - assertThat(antragsteller.getNachname()).isEqualTo(ANTRAGSTELLER_NACHNAME); - } - - @DisplayName("should map antragsteller anrede") - @Test - void shouldMapAntragstellerAnrede() { - sendDepositAndCaptureCreateVorgang(); - - var antragsteller = getCapturedAntragsteller(); - assertThat(antragsteller.getAnrede()).isEqualTo(ANTRAGSTELLER_ANREDE); - } - - private GrpcAntragsteller getCapturedAntragsteller() { - return grpcEingangCaptor.getValue().getAntragsteller(); - } - - @DisplayName("should have representations") - @Test - void shouldHaveRepresentations() { - sendDepositAndCaptureCreateVorgang(); - - var eingang = grpcEingangCaptor.getValue(); - var representationVendorIds = eingang.getRepresentationsList().stream() - .map(GrpcIncomingFile::getVendorId) - .toList(); - assertThat(representationVendorIds).containsExactly( - XML_ATTACHMENT_ID, - XML_ROHFORM_ATTACHMENT_ID, - XML_ORIGINALFORM_ATTACHMENT_ID); - } - - @DisplayName("should have attachments") - @Test - void shouldHaveAttachments() { - sendDepositAndCaptureCreateVorgang(); - - var eingang = grpcEingangCaptor.getValue(); - var attachmentVendorIds = eingang.getAttachmentsList().stream() - .map(GrpcIncomingFileGroup::getFilesList) - .flatMap(Collection::stream) - .map(GrpcIncomingFile::getVendorId) - .toList(); - assertThat(attachmentVendorIds).containsExactlyInAnyOrder( - DOCX1_ATTACHMENT_ID, - PDF_ATTACHMENT_ID, - DOCX2_ATTACHMENT_ID, - DOCX3_ATTACHMENT_ID, - DOCX4_ATTACHMENT_ID, - DOCX5_ATTACHMENT_ID, - DOCX6_ATTACHMENT_ID, - DOCX7_ATTACHMENT_ID, - DOCX8_ATTACHMENT_ID, - PDF2_ATTACHMENT_ID, - ODT_ATTACHMENT_ID, - JPG_ATTACHMENT_ID, - PNG_ATTACHMENT_ID); - } - - @DisplayName("should have organisationseinheitenID") - @Test - void shouldHaveOrganisationseinheitenId() { - sendDepositAndCaptureCreateVorgang(); - - var eingang = grpcEingangCaptor.getValue(); - assertThat(eingang.getZustaendigeStelle().getOrganisationseinheitenId()).isEqualTo(ORGANISATIONSEINHEITEN_ID); - } - - } - - @DisplayName("with duplicate keys") - @Nested - class TestWithDuplicateKeys { - @BeforeEach - void mock() { - depositData = DepositDataTestFactory.create(List.of( - withEmptyName(createXmlDaten()), - createXmlDaten(), - withEmptyName(createPdf()), - createPdf(), - withEmptyName(createPng()), - createPng())); - } - - private Attachment withEmptyName(Attachment attachment) { - attachment.setName(""); - return attachment; - } - - @DisplayName("should keep last entry for representations") - @Test - void shouldKeepLastEntryForRepresentations() { - sendDepositAndCaptureCreateVorgang(); - - var eingang = grpcEingangCaptor.getValue(); - var representationFiles = eingang.getRepresentationsList(); - assertThat(getAttachmentVendorIds(representationFiles)).containsExactly(XML_ATTACHMENT_ID, PDF_ATTACHMENT_ID); - assertThat(getAttachmentFileNames(representationFiles)).containsExactly(XML_NAME, PDF_ATTACHMENT_NAME); - } - - @DisplayName("should keep last entry for attachments") - @Test - void shouldKeepLastEntryForAttachments() { - sendDepositAndCaptureCreateVorgang(); - - var eingang = grpcEingangCaptor.getValue(); - var attachmentFiles = eingang.getAttachmentsList().stream() - .map(GrpcIncomingFileGroup::getFilesList) - .flatMap(List::stream) - .toList(); - assertThat(getAttachmentVendorIds(attachmentFiles)).containsExactly(PNG_ATTACHMENT_ID); - assertThat(getAttachmentFileNames(attachmentFiles)).containsExactly(PNG_ATTACHMENT_NAME); - } - - private List<String> getAttachmentFileNames(List<GrpcIncomingFile> incomingFileList) { - return incomingFileList.stream() - .map(GrpcIncomingFile::getName) - .toList(); - } - - private List<String> getAttachmentVendorIds(List<GrpcIncomingFile> incomingFileList) { - return incomingFileList.stream() - .map(GrpcIncomingFile::getVendorId) - .toList(); - } - } - - @SneakyThrows - private void sendDepositAndCaptureCreateVorgang() { - mockClient.sendRequest(RequestCreators.withPayload(createEnvelopeSourceFromDepositData(depositData))) - .andExpect(ResponseMatchers.noFault()) - .andExpect(ResponseMatchers.payload(getResource(RESPONSE))); - - verify(vorgangRemoteService).createVorgang(formDataCaptor.capture(), grpcEingangCaptor.capture(), any(), any()); - } - - @SneakyThrows - private Source createEnvelopeSourceFromDepositData(DepositData depositData) { - Deposit deposit = new Deposit(); - deposit.setData(depositData); - - JAXBElement<Deposit> depositJAXBElement = new JAXBElement<>( - new QName(NAMESPACE_URI, PAYLOAD_LOCAL_PART), - Deposit.class, - deposit); - - var stringWriter = new StringWriter(); - marshaller.marshal(depositJAXBElement, new StreamResult(stringWriter)); - return new StreamSource(new StringReader(stringWriter.toString())); - } - - @DisplayName("Send antrag with attachments") - @Nested - class TestAntragWithAttachments { - - @Test - void shouldSendRequest() { - sendRequest(); - - verify(vorgangRemoteService).createVorgang(any(FormData.class), any(GrpcEingang.class), any(), any()); - } - - @Nested - class checkAntragsteller { - - @Test - void validateAntragstellerEmail() { - sendRequest(); - - assertThat(grpcEingangCaptor.getValue().getAntragsteller().getEmail()).isEqualTo("noreply@ozg-sh.de"); - } - - @Test - void shouldMapAntragstellerPostfachId() { - sendRequest(); - - assertThat(grpcEingangCaptor.getValue().getAntragsteller().getPostfachId()).isEqualTo("nameIdAsOsiPostfachIdV1"); - } - } - - @Nested - class checkAttachments { - - @Test - void validateOrganisationsEinheitId() { - sendRequest(); - - assertThat(grpcEingangCaptor.getValue().getZustaendigeStelle().getOrganisationseinheitenId()).isEqualTo("10363455"); - } - - @Test - void checkAttachmentsCount() { - sendRequest(); - - assertThat(grpcEingangCaptor.getValue().getNumberOfAttachments()).isEqualTo(2); - } - - @Test - void checkAttachmentGroupCount() { - sendRequest(); - - assertThat(grpcEingangCaptor.getValue().getAttachmentsCount()).isEqualTo(2); - } - - @Test - void checkAttachmentGroup1Count() { - sendRequest(); - - GrpcIncomingFileGroup group = grpcEingangCaptor.getValue().getAttachments(0); - - assertThat(group.getFilesCount()).isEqualTo(1); - } - - @Test - void checkAttachmentGroup1Files() { - sendRequest(); - - GrpcIncomingFile file = grpcEingangCaptor.getValue().getAttachments(0).getFiles(0); - - assertThat(file.getId()).isNotNull(); - assertThat(file.getVendorId()).isEqualTo("assistants.E0FBA361C191F8B723949467AE302BEA24E4745E"); - assertThat(file.getName()).isEqualTo("Helge1.jpg"); - assertThat(file.getContentType()).isEqualTo("image/jpeg"); - assertThat(file.getContent().size()).isZero(); - } - - @Test - void checkAttachmentGroup2Count() { - sendRequest(); - - GrpcIncomingFileGroup group = grpcEingangCaptor.getValue().getAttachments(1); - - assertThat(group.getFilesCount()).isEqualTo(1); - } - - @Test - void checkAttachmentGroup2Files() { - sendRequest(); - - GrpcIncomingFile file = grpcEingangCaptor.getValue().getAttachments(1).getFiles(0); - - assertThat(file.getId()).isNotNull(); - assertThat(file.getVendorId()).isEqualTo("assistants.52D79E5B2118D1740045AB87151535DCAD24E9A7"); - assertThat(file.getName()).isEqualTo("Helgetext2.odt"); - assertThat(file.getContentType()).isEqualTo("application/vnd.oasis.opendocument.text"); - assertThat(file.getContent().size()).isZero(); - } - } - - @Nested - class validateRepresentations { - @Test - void checkRepresentationsCount() { - sendRequest(); - - assertThat(grpcEingangCaptor.getValue().getRepresentationsCount()).isEqualTo(1); - assertThat(grpcEingangCaptor.getValue().getNumberOfRepresentations()).isEqualTo(1); - } - - @Test - void checkRepresentation1() { - sendRequest(); - - GrpcIncomingFile file = grpcEingangCaptor.getValue().getRepresentations(0); - - assertThat(file.getId()).isNotNull(); - assertThat(file.getVendorId()).isEqualTo("myForm-xml"); - assertThat(file.getName()).isEqualTo("XML-Daten.xml"); - assertThat(file.getContentType()).isEqualTo("text/xml"); - assertThat(file.getContent().size()).isZero(); - } - - } - - @DisplayName("service konto") - @Nested - class TestServiceKonto { - - @Test - void shouldReturnMappedServiceKonto() { - var eingang = sendRequest(); - - assertThat(eingang.getHeader().getServiceKonto()).isNotNull(); - assertThat(eingang.getHeader().getServiceKonto().getType()).isEqualTo("OSI"); - } - - @Test - void shoulContainsPostfachAddresses() { - var eingang = sendRequest(); - - assertThat(eingang.getHeader().getServiceKonto().getPostfachAddressesList()).hasSize(1); - } - - @Test - void shoulReturnMappedPostfachAddress() { - var postfachAddress = sendRequest().getHeader().getServiceKonto().getPostfachAddressesList().get(0); - - assertThat(postfachAddress.getVersion()).isEqualTo(PostfachAddressTestFactory.VERSION); - assertThat(postfachAddress.getIdentifier().getPropertyList()).hasSize(1); - assertThat(postfachAddress.getIdentifier().getProperty(0).getName()).isEqualTo("postfachId"); - assertThat(postfachAddress.getIdentifier().getProperty(0).getValue(0)).isEqualTo("nameIdAsOsiPostfachIdV1"); - assertThat(postfachAddress.getType()).isEqualTo(1); - } - } - - @SneakyThrows - private GrpcEingang sendRequest() { - sendWebserviceRequest(REQUEST); - - return grpcEingangCaptor.getValue(); - } - } - - @Nested - class TestOtherNameForFormData { - - @Test - void shouldSucceed() { // NOSONAR contains andExpect of mockClient - sendWebserviceRequest(SOAP_REQUEST_OTHER_NAME).andExpect(ResponseMatchers.noFault()); - } - - @Test - void shouldHaveOrgaId() { - sendWebserviceRequest(SOAP_REQUEST_OTHER_NAME); - - verify(vorgangRemoteService).createVorgang(any(), grpcEingangCaptor.capture(), any(), any()); - - assertThat(grpcEingangCaptor.getValue().getZustaendigeStelle().getOrganisationseinheitenId()).isEqualTo("0815"); - } - - } - - @Nested - class TestKeepFormDataOrder { - - @Test - void shouldKeepEingangFieldsOrder() { - var grpcFormData = requestFormData(); - - assertThat(grpcFormData.getFieldList()).isEqualTo(XmlDaten1Container.EINGANG_FIELDS); - } - - @Test - void shouldKeepZustaendigestelleFieldsOrder() { - var formFields = requestFormData().getForm(0).getFieldList(); - - assertThat(formFields).isEqualTo(XmlDaten1Container.ZUSTAENDIGESTELLE_FIELDS); - } - - @Test - void shouldKeepEmpfangendestelleFieldsOrder() { - var formFields = requestFormData().getForm(1).getFieldList(); - - assertThat(formFields).isEqualTo(XmlDaten1Container.EMPFANGENDESTELLE_FIELDS); - } - - @Test - void shouldKeepErklaerungenFieldsOrder() { - var formFields = requestFormData().getForm(2).getFieldList(); - - assertThat(formFields).isEqualTo(XmlDaten1Container.ERKLAERUNGEN_FIELDS); - } - - @Test - void shouldKeepAnsprechpartnerFieldsOrder() { - var formFields = requestFormData().getForm(3).getSubForm(0).getFieldList(); - - assertThat(formFields).isEqualTo(XmlDaten1Container.ANSPRECHPARTNER_FIELDS); - } - - @Test - void shouldKeepAnschriftFieldsOrder() { - var formFields = requestFormData().getForm(3).getSubForm(0).getSubForm(0).getFieldList(); - - assertThat(formFields).isEqualTo(XmlDaten1Container.ANSCHRIFT_FIELDS); - } - - @Test - void shouldKeepKontaktFieldsOrder() { - var formFields = requestFormData().getForm(3).getSubForm(0).getSubForm(1).getFieldList(); - - assertThat(formFields).isEqualTo(XmlDaten1Container.KONTAKT_FIELDS); - } - - @Test - void shouldKeepVerwaltungsleistungFieldsOrder() { - var formFields = requestFormData().getForm(3).getSubForm(1).getSubForm(0).getFieldList(); - - assertThat(formFields).isEqualTo(XmlDaten1Container.VERWALTUNGSLEISTUNG_FIELDS); - } - - @Test - void shouldKeepAusgewaehlteZustaendigestelleFieldsOrder() { - var formFields = requestFormData().getForm(3).getSubForm(1).getSubForm(0).getSubForm(0).getFieldList(); - - assertThat(formFields).isEqualTo(XmlDaten1Container.AUSGEWAEHLTE_ZUSTAENDIGESTELLE_FIELDS); - } - - private GrpcFormData requestFormData() { - sendWebserviceRequest(REQUEST_XML_NAME); - - verify(vorgangRemoteService).createVorgang(any(), grpcEingangCaptor.capture(), any(), any()); - return grpcEingangCaptor.getValue().getFormData(); - } - } - - @SneakyThrows - private ResponseActions sendWebserviceRequest(String requestFileName) { - var response = mockClient.sendRequest(RequestCreators.withSoapEnvelope(getResource(requestFileName))) - .andExpect(ResponseMatchers.noFault()) - .andExpect(ResponseMatchers.payload(getResource(RESPONSE))); - - verify(vorgangRemoteService).createVorgang(formDataCaptor.capture(), grpcEingangCaptor.capture(), any(), any()); - - return response; - } - - private Resource getResource(String fileName) { - return applicationContext.getResource(TEST_FILE_PATH + fileName); - } -} diff --git a/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/FormDataEndpointTest.java b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/FormDataEndpointTest.java deleted file mode 100644 index caa77acc..00000000 --- a/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/FormDataEndpointTest.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.intelliform; - -import static org.assertj.core.api.Assertions.*; -import static org.mockito.ArgumentMatchers.*; -import static org.mockito.Mockito.*; - -import java.io.IOException; -import java.net.URISyntaxException; - -import javax.xml.parsers.ParserConfigurationException; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.xml.sax.SAXException; - -import de.ozgcloud.common.test.TestUtils; -import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; -import de.ozgcloud.eingang.semantik.SemantikAdapter; - -class FormDataEndpointTest { - - @InjectMocks - private FormDataEndpoint formdataEndpointIntelli; - @Mock - private DepositDataMapper depositDataMapper; - @Mock - private SemantikAdapter semantikAdapter; - - @BeforeEach - void init() throws SAXException, IOException, ParserConfigurationException { - when(depositDataMapper.mapToFormData(any())).thenReturn(FormDataTestFactory.create()); - } - - @Test - void testDepositFormData() throws SAXException, IOException, ParserConfigurationException, URISyntaxException { - var response = formdataEndpointIntelli.inputFormData(buildRequest("intelliform/XML-Daten-1.xml")); - - assertThat(response).isNotNull(); - } - - private Deposit buildRequest(String fileName) throws SAXException, IOException, ParserConfigurationException, URISyntaxException { - var depositData = new DepositData(); - - var attachment = new Attachment(); - attachment.setName("XML-Daten.xml"); - attachment.setContent(TestUtils.loadTextFile(fileName).getBytes()); - - depositData.getAttachments().add(attachment); - - var deposit = new Deposit(); - deposit.setData(depositData); - - return deposit; - } -} diff --git a/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/GrpcFormFieldTestFactory.java b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/GrpcFormFieldTestFactory.java deleted file mode 100644 index 693bd320..00000000 --- a/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/GrpcFormFieldTestFactory.java +++ /dev/null @@ -1,10 +0,0 @@ -package de.ozgcloud.eingang.intelliform; - -import de.ozgcloud.vorgang.vorgang.GrpcFormField; - -public class GrpcFormFieldTestFactory { - - public static GrpcFormField create(String fieldName, String fieldValue) { - return GrpcFormField.newBuilder().setName(fieldName).setValue(fieldValue).build(); - } -} diff --git a/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/XmlDaten1Container.java b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/XmlDaten1Container.java deleted file mode 100644 index 7f56b618..00000000 --- a/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/XmlDaten1Container.java +++ /dev/null @@ -1,139 +0,0 @@ -package de.ozgcloud.eingang.intelliform; - - -import static de.ozgcloud.eingang.intelliform.GrpcFormFieldTestFactory.*; - -import java.util.List; - -import de.ozgcloud.vorgang.vorgang.GrpcFormField; - -public class XmlDaten1Container { - - public final static String REQUEST_XML_NAME = "XML-Daten-1-SoapRequest.xml"; - - public static final List<GrpcFormField> EINGANG_FIELDS = List.of( - create("kontaktsystemtypid", "233034600"), - create("kontaktsystemtypidln", "233034601"), - create("AnliegenID", "8966671"), - create("mailboxguid", "f977368b-6991-46b9-af18-8a2a03d9ad1b"), - create("GebietID", "9007314"), - create("logourl", "http://wafmxpa002.dpaor.de/sh/logos/kopf_9068873.doc") - ); - - public static final List<GrpcFormField> EMPFANGENDESTELLE_FIELDS = List.of( - create("OrganisationseinheitenAuswahl", "9068873"), - create("OrganisationseinheitenID", "9068873"), - create("OrganisationseinheitenBEZEICHNUNG", "Einheitlicher Ansprechpartner\n\t\t\tSchleswig-Holstein"), - create("strasse", "Reventlouallee"), - create("hausnummer", "6"), - create("postleitzahl", "24105"), - create("ortID", "9006402"), - create("ort", "Kiel"), - create("telefonnummer", "+49 431 988-8650"), - create("telefaxnummer", "+49 431 988-6161111"), - create("emailadresse", "info@ea-sh.de"), - create("demailadresse", "ea-poststelle@ea-sh.de-mail.de"), - create("kontaktsystem_kennung", "afmsh:9068873_AusnahmeLKWFahrverbot"), - create("kontaktsystem_kennungzusatz", "alle") - ); - - public static final List<GrpcFormField> ERKLAERUNGEN_FIELDS = List.of( - create("check_gebuehren", "true"), - create("check_richtigkeit", "true"), - create("check_datenschutz", "true"), - create("check_missbrauch", "true"), - create("b_gebuehren_beschriftung", """ - * Mir ist bekannt, dass durch das Einreichen - des elektronischen Antrages von der zuständigen Stelle Gebühren - erhoben werden können."""), - create("b_gebuehren_intro", """ - Gebühr bei Ausstellung des kleinen Waffenscheins: - 60,00 Euro. Bearbeitungsgebühr bei Versagung: 45,00 Euro. - Sie sind gemäß § 39 WaffG verpflichtet, der zuständigen Behörde die zur - Durchführung des Gesetzes erforderlichen Auskünfte zu erteilen. Zur - Prüfung Ihrer waffenrechtlichen Zuverlässigkeit und Eignung holt die - Behörde eine unbeschränkte Auskunft aus dem Bundeszentralregister, - eine Auskunft aus dem zentralen staatsanwaltschaftlichen - Verfahrensregister, eine Stellungnahme der örtlichen - Polizeidienststelle und Ihrer Wohnsitzgemeinde ein."""), - create("b_richtigkeit", "* Ich bestätige die Richtigkeit meiner Angaben."), - create("b_datenschutz", """ - * Ich erkläre mich damit einverstanden, dass der - Einheitlicher Ansprechpartner Schleswig-Holstein zur Erfüllung seiner - Aufgaben meine Daten unter Einhaltung der Bestimmungen der - Datenschutz-Grundverordnung (DS-GVO) und des - Landesdatenschutzgesetzes Schleswig-Holstein (LDSG-SH) speichert, - verarbeitet und diese im Rahmen der gesetzlichen Bestimmungen an die - für die Entscheidung zuständige Stelle weiterleitet. Ebenso bin ich - mit der rechtskonformen Datenverarbeitung und Speicherung durch die - zuständige Stelle einverstanden. Mir ist bekannt, dass ich die - Einwilligung in die Verarbeitung und Übermittlung jederzeit gegenüber - dem Einheitlicher Ansprechpartner Schleswig-Holstein, Reventlouallee - 6, 24105 Kiel widerrufen kann. Ein Widerruf ist aber nur wirksam für - die Zukunft. Verarbeitungen, die vor dem Widerruf erfolgt sind, sind - davon nicht betroffen. Über die Verarbeitung meiner personenbezogenen - Daten und die mir nach den datenschutzrechtlichen Regelungen - zustehenden Ansprüche und Rechte habe ich unter Datenschutzerklärung - Kenntnis erlangt."""), - create("b_missbrauch", """ - * Mir ist bekannt, dass zur Verfolgung widerrechtlicher - Nutzung die Daten meines zur Dateneingabe genutzten Endgerätes - aufgezeichnet und verwendet werden können."""), - create("policyurl", "http://wafmxpa002.dpaor.de/sh/datenschutz/datenschutzerklaerungEA_de.doc") - ); - - public static final List<GrpcFormField> ANSPRECHPARTNER_FIELDS = List.of( - create("anrede", "Herr"), - create("vorname", "Max"), - create("familienname", "Testermann") - ); - - public static final List<GrpcFormField> ANSCHRIFT_FIELDS = List.of( - create("strasse", "Königsweg"), - create("hausnummer", "74"), - create("postleitzahl", "24837"), - create("ort", "Schleswig"), - create("staat", "Deutschland") - ); - - public static final List<GrpcFormField> KONTAKT_FIELDS = List.of( - create("telefonnummer", "+ 49 4621 9654"), - create("mobilnummer", "+49 123"), - create("telefaxnummer", "+ 49 4621 9654"), - create("emailadresse", "max.testermann@gmx.de"), - create("demailadresse", "max.testermann@gmx.de-mail.de") - ); - - public static final List<GrpcFormField> AUSGEWAEHLTE_ZUSTAENDIGESTELLE_FIELDS = List.of( - create("OrganisationseinheitenID", "9535669"), - create("OrganisationseinheitenBEZEICHNUNG", "Kreis\n\t\t\t\t\t\tSchleswig-Flensburg/Kreisverwaltung - Allgemeine\n\t\t\t\t\t\tOrdnungsangelegenheiten") - ); - - public static final List<GrpcFormField> VERWALTUNGSLEISTUNG_FIELDS = List.of( - create("GebietID", "9007314"), - create("GebietBEZEICHNUNG", "Schleswig"), - create("AnliegenID", "8966671"), - create("AnliegenBEZEICHNUNG", "Waffenschein / Kleiner Waffenschein"), - create("leikaKEYLIST", "99089008000000;99089008001000") - ); - - public static final List<GrpcFormField> ZUSTAENDIGESTELLE_FIELDS = List.of( - create("OrganisationseinheitenAuswahl", "9535669"), - create("OrganisationseinheitenID", "9535669"), - create("OrganisationseinheitenBEZEICHNUNG", "Kreis\n\t\t\tSchleswig-Flensburg/Kreisverwaltung - Allgemeine\n\t\t\tOrdnungsangelegenheiten"), - create("strasse", "Flensburger Straße"), - create("hausnummer", "7"), - create("postleitzahl", "24837"), - create("ortID", "9007314"), - create("ort", "Schleswig"), - create("telefonnummer", "04621 87-0"), - create("telefaxnummer", "04621 87-366"), - create("emailadresse", "Gefahrenabwehr@Kiel.de"), - create("kontaktsystem_kennung", "afmsh:9535669_kleinerWaffenschein"), - create("AnliegenBEZEICHNUNG", "Waffenschein / Kleiner Waffenschein"), - create("leikaKEYLIST", "99089008000000;99089008001000"), - create("auswahl_zustellung", "abholen"), - create("b_zustellung", "Ich hole den Kleinen Waffenschein selbst ab.") - ); - -} diff --git a/intelliform-adapter/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension b/intelliform-adapter/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension deleted file mode 100644 index 79b126e6..00000000 --- a/intelliform-adapter/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension +++ /dev/null @@ -1 +0,0 @@ -org.mockito.junit.jupiter.MockitoExtension \ No newline at end of file diff --git a/intelliform-adapter/src/test/resources/fileupload/testodt1.odt b/intelliform-adapter/src/test/resources/fileupload/testodt1.odt deleted file mode 100644 index 83ec2f3948d50a6e85beedfd12c0de07a0c9354f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9070 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 Of()rF3=E&;Ks*4lyOR$9 diff --git a/intelliform-adapter/src/test/resources/fileupload/testpdf1.pdf b/intelliform-adapter/src/test/resources/fileupload/testpdf1.pdf deleted file mode 100644 index 305081d4d33ff9cb610947f9352072b8209806e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 91543 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 diff --git a/intelliform-adapter/src/test/resources/intelliform/XML-Daten-1.xml b/intelliform-adapter/src/test/resources/intelliform/XML-Daten-1.xml deleted file mode 100644 index 225f1b84..00000000 --- a/intelliform-adapter/src/test/resources/intelliform/XML-Daten-1.xml +++ /dev/null @@ -1,173 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<myForm xmlns:pdf="http://xmlns.cit.de/assistants/pdf" - xmlns:t="http://xmlns.cit.de/intelliform/transaction" - t:id="20201118365670866101" t:timestamp="2020-11-18T09:09:27.627Z" - t:sender="afm.schleswig-holstein.de" - t:form="Kleiner Waffenschein gem. § 10 Abs. 4 Satz 4 Waffengesetz (WaffG)" - t:form-id="waffen/kleinerWaffenschein" - t:customer="Einheitlicher Ansprechpartner" t:customer-id="ea-sh" - t:client="Schleswig-Holstein" t:client-id="land"> - <kontaktsystemtypid>233034600</kontaktsystemtypid> - <kontaktsystemtypidln>233034601</kontaktsystemtypidln> - <AnliegenID>8966671</AnliegenID> - <mailboxguid>f977368b-6991-46b9-af18-8a2a03d9ad1b</mailboxguid> - <nameid>cbacb01a-2810-11ec-bb6f-c31939f8874e</nameid> - <antragsteller> - <pers_anrede>Herr$03</pers_anrede> - <pers_nachname>Testermann</pers_nachname> - <pers_vorname>Max</pers_vorname> - <pers_geburtsname>Max Testermann</pers_geburtsname> - <pers_geburtsdatum>1995-03-21</pers_geburtsdatum> - <pers_geburtsort>Flensburg</pers_geburtsort> - <pers_geburtsland>deutsch$Deutschland$000</pers_geburtsland> - <pers_staatsangehoerigkeit>deutsch$Deutschland$000</pers_staatsangehoerigkeit> - <b_anrede>Herr</b_anrede> - <b_anrede_schluesselnr>03</b_anrede_schluesselnr> - <b_geburtsland>Deutschland</b_geburtsland> - <b_geburtsland_signatur>000</b_geburtsland_signatur> - <b_staatsangehoerigkeit>deutsch</b_staatsangehoerigkeit> - <b_staatsangehoerigkeit_signatur>000</b_staatsangehoerigkeit_signatur> - <sh_strasse>Königsweg</sh_strasse> - <sh_hausnummer>74</sh_hausnummer> - <sh_plz>24837</sh_plz> - <ort_auswahl>9007314$01059075</ort_auswahl> - <ort>Schleswig</ort> - <GebietID>9007314</GebietID> - <GebietBEZEICHNUNG>Schleswig</GebietBEZEICHNUNG> - <GebietGNR94_GNR>01059075</GebietGNR94_GNR> - <staat>000</staat> - <iso3166numerisch>276</iso3166numerisch> - <kont_telefonnummer>+ 49 4621 9654</kont_telefonnummer> - <kont_mobilnummer>+49 123</kont_mobilnummer> - <kont_telefaxnummer>+ 49 4621 9654</kont_telefaxnummer> - <kont_email>max.testermann@gmx.de</kont_email> - <kont_demail>max.testermann@gmx.de-mail.de</kont_demail> - <persoenlicheEignung> - <maengelvorhanden>false</maengelvorhanden> - <ermittlungsverfahren>false</ermittlungsverfahren> - <MitgliedschaftInVerboternerVereinigung>false</MitgliedschaftInVerboternerVereinigung> - </persoenlicheEignung> - </antragsteller> - <GebietID>9007314</GebietID> - <zustaendigestelle> - <OrganisationseinheitenAuswahl>9535669</OrganisationseinheitenAuswahl> - <OrganisationseinheitenID>9535669</OrganisationseinheitenID> - <OrganisationseinheitenBEZEICHNUNG>Kreis - Schleswig-Flensburg/Kreisverwaltung - Allgemeine - Ordnungsangelegenheiten</OrganisationseinheitenBEZEICHNUNG> - <strasse>Flensburger Straße</strasse> - <hausnummer>7</hausnummer> - <postleitzahl>24837</postleitzahl> - <ortID>9007314</ortID> - <ort>Schleswig</ort> - <telefonnummer>04621 87-0</telefonnummer> - <telefaxnummer>04621 87-366</telefaxnummer> - <emailadresse>Gefahrenabwehr@Kiel.de</emailadresse> - <demailadresse /> - <kontaktsystem_kennung>afmsh:9535669_kleinerWaffenschein</kontaktsystem_kennung> - <kontaktsystem_kennungzusatz /> - <AnliegenBEZEICHNUNG>Waffenschein / Kleiner Waffenschein</AnliegenBEZEICHNUNG> - <leikaKEYLIST>99089008000000;99089008001000</leikaKEYLIST> - <auswahl_zustellung>abholen</auswahl_zustellung> - <b_zustellung>Ich hole den Kleinen Waffenschein selbst ab.</b_zustellung> - </zustaendigestelle> - <empfangendestelle> - <OrganisationseinheitenAuswahl>9068873</OrganisationseinheitenAuswahl> - <OrganisationseinheitenID>9068873</OrganisationseinheitenID> - <OrganisationseinheitenBEZEICHNUNG>Einheitlicher Ansprechpartner - Schleswig-Holstein</OrganisationseinheitenBEZEICHNUNG> - <strasse>Reventlouallee</strasse> - <hausnummer>6</hausnummer> - <postleitzahl>24105</postleitzahl> - <ortID>9006402</ortID> - <ort>Kiel</ort> - <telefonnummer>+49 431 988-8650</telefonnummer> - <telefaxnummer>+49 431 988-6161111</telefaxnummer> - <emailadresse>info@ea-sh.de</emailadresse> - <demailadresse>ea-poststelle@ea-sh.de-mail.de</demailadresse> - <kontaktsystem_kennung>afmsh:9068873_AusnahmeLKWFahrverbot</kontaktsystem_kennung> - <kontaktsystem_kennungzusatz>alle</kontaktsystem_kennungzusatz> - </empfangendestelle> - <erklaerungen> - <check_gebuehren>true</check_gebuehren> - <check_richtigkeit>true</check_richtigkeit> - <check_datenschutz>true</check_datenschutz> - <check_missbrauch>true</check_missbrauch> - <b_gebuehren_beschriftung>* Mir ist bekannt, dass durch das Einreichen - des elektronischen Antrages von der zuständigen Stelle Gebühren - erhoben werden können.</b_gebuehren_beschriftung> - <b_gebuehren_intro>Gebühr bei Ausstellung des kleinen Waffenscheins: - 60,00 Euro. Bearbeitungsgebühr bei Versagung: 45,00 Euro. - Sie sind gemäß § 39 WaffG verpflichtet, der zuständigen Behörde die zur - Durchführung des Gesetzes erforderlichen Auskünfte zu erteilen. Zur - Prüfung Ihrer waffenrechtlichen Zuverlässigkeit und Eignung holt die - Behörde eine unbeschränkte Auskunft aus dem Bundeszentralregister, - eine Auskunft aus dem zentralen staatsanwaltschaftlichen - Verfahrensregister, eine Stellungnahme der örtlichen - Polizeidienststelle und Ihrer Wohnsitzgemeinde ein.</b_gebuehren_intro> - <b_richtigkeit>* Ich bestätige die Richtigkeit meiner Angaben.</b_richtigkeit> - <b_datenschutz>* Ich erkläre mich damit einverstanden, dass der - Einheitlicher Ansprechpartner Schleswig-Holstein zur Erfüllung seiner - Aufgaben meine Daten unter Einhaltung der Bestimmungen der - Datenschutz-Grundverordnung (DS-GVO) und des - Landesdatenschutzgesetzes Schleswig-Holstein (LDSG-SH) speichert, - verarbeitet und diese im Rahmen der gesetzlichen Bestimmungen an die - für die Entscheidung zuständige Stelle weiterleitet. Ebenso bin ich - mit der rechtskonformen Datenverarbeitung und Speicherung durch die - zuständige Stelle einverstanden. Mir ist bekannt, dass ich die - Einwilligung in die Verarbeitung und Übermittlung jederzeit gegenüber - dem Einheitlicher Ansprechpartner Schleswig-Holstein, Reventlouallee - 6, 24105 Kiel widerrufen kann. Ein Widerruf ist aber nur wirksam für - die Zukunft. Verarbeitungen, die vor dem Widerruf erfolgt sind, sind - davon nicht betroffen. Über die Verarbeitung meiner personenbezogenen - Daten und die mir nach den datenschutzrechtlichen Regelungen - zustehenden Ansprüche und Rechte habe ich unter Datenschutzerklärung - Kenntnis erlangt.</b_datenschutz> - <b_missbrauch>* Mir ist bekannt, dass zur Verfolgung widerrechtlicher - Nutzung die Daten meines zur Dateneingabe genutzten Endgerätes - aufgezeichnet und verwendet werden können.</b_missbrauch> - <policyurl>http://wafmxpa002.dpaor.de/sh/datenschutz/datenschutzerklaerungEA_de.doc</policyurl> - </erklaerungen> - <logourl>http://wafmxpa002.dpaor.de/sh/logos/kopf_9068873.doc</logourl> - <fm> - <ansprechpartner> - <firmenname /> - <anrede>Herr</anrede> - <vorname>Max</vorname> - <familienname>Testermann</familienname> - <anschrift> - <strasse>Königsweg</strasse> - <hausnummer>74</hausnummer> - <postfach /> - <postleitzahl>24837</postleitzahl> - <ort>Schleswig</ort> - <ortsteil /> - <zusatz /> - <staat>Deutschland</staat> - </anschrift> - <kontakt> - <telefonnummer>+ 49 4621 9654</telefonnummer> - <mobilnummer>+49 123</mobilnummer> - <telefaxnummer>+ 49 4621 9654</telefaxnummer> - <emailadresse>max.testermann@gmx.de</emailadresse> - <demailadresse>max.testermann@gmx.de-mail.de</demailadresse> - </kontakt> - </ansprechpartner> - <verwaltungsleistungen> - <verwaltungsleistung> - <ausgewaehlte_zustaendigestelle> - <OrganisationseinheitenID>9535669</OrganisationseinheitenID> - <OrganisationseinheitenBEZEICHNUNG>Kreis - Schleswig-Flensburg/Kreisverwaltung - Allgemeine - Ordnungsangelegenheiten</OrganisationseinheitenBEZEICHNUNG> - </ausgewaehlte_zustaendigestelle> - <GebietID>9007314</GebietID> - <GebietBEZEICHNUNG>Schleswig</GebietBEZEICHNUNG> - <AnliegenID>8966671</AnliegenID> - <AnliegenBEZEICHNUNG>Waffenschein / Kleiner Waffenschein</AnliegenBEZEICHNUNG> - <leikaKEYLIST>99089008000000;99089008001000</leikaKEYLIST> - <leikaBEZEICHNUNG /> - </verwaltungsleistung> - </verwaltungsleistungen> - </fm> -</myForm> \ No newline at end of file diff --git a/intelliform-adapter/src/test/resources/intelliform/XML-Daten-complex.template.xml b/intelliform-adapter/src/test/resources/intelliform/XML-Daten-complex.template.xml deleted file mode 100644 index df72b46d..00000000 --- a/intelliform-adapter/src/test/resources/intelliform/XML-Daten-complex.template.xml +++ /dev/null @@ -1,316 +0,0 @@ -<myForm - xmlns:pdf="http://xmlns.cit.de/assistants/pdf" - xmlns:t="http://xmlns.cit.de/intelliform/transaction" - xmlns:u="http://xmlns.cit.de/intelliform/user" t:uuid="${uuid}" t:id="Gewerbeanmeldung-${transactionId}" t:timestamp="${now}" t:sender="stage.afm.schleswig-holstein.de" t:form="Gewerbeanmeldung" t:form-id="eGewerbe/eGewerbeAnmeldung" t:customer="Einheitlicher Ansprechpartner" t:customer-id="ea-sh" t:client="Schleswig-Holstein" t:client-id="land" u:FamilyNames="${antragsteller_nachname}" u:PrincipalType="Citizen" u:Username="${antragsteller_email}" u:CitizenProfileType="Standard" u:username="51522620-03d2-4507-b1f0-08d86920efed" u:GivenNames="${antragsteller_vorname}" u:AssuranceLevel="Low" u:displayName="${antragsteller_vorname} ${antragsteller_nachname}" u:mailAddress="${antragsteller_email}" u:EmailAddress="${antragsteller_email}" u:firstName="${antragsteller_vorname}" u:lastName="${antragsteller_nachname}" t:required-login-level="LOW" t:effective-login-level="LOW"> - <GueltigAb>2021-12-01</GueltigAb> - <GrundAnmeldungSchluessel>01</GrundAnmeldungSchluessel> - <antragsteller> - <pers_anrede>${antragsteller_anrede}$${anrede_code}</pers_anrede> - <pers_nachname>${antragsteller_nachname}</pers_nachname> - <pers_vorname>${antragsteller_vorname}</pers_vorname> - <pers_geburtsname>${antragsteller_nachname}</pers_geburtsname> - <pers_geburtsdatum>2000-01-01</pers_geburtsdatum> - <pers_geburtsort>Hamburg</pers_geburtsort> - <pers_geburtsland>deutsch$Deutschland$000</pers_geburtsland> - <pers_staatsangehoerigkeit>deutsch$Deutschland$000</pers_staatsangehoerigkeit> - <b_anrede>${antragsteller_anrede}</b_anrede> - <b_anrede_schluesselnr>03</b_anrede_schluesselnr> - <b_geburtsland>Deutschland</b_geburtsland> - <b_geburtsland_signatur>000</b_geburtsland_signatur> - <b_staatsangehoerigkeit>deutsch</b_staatsangehoerigkeit> - <b_staatsangehoerigkeit_signatur>000</b_staatsangehoerigkeit_signatur> - <sh_strasse>Teststrasse</sh_strasse> - <sh_hausnummer>1000</sh_hausnummer> - <sh_plz>23795</sh_plz> - <ort_auswahl>9007404$01060005</ort_auswahl> - <ort>Bad Segeberg</ort> - <GebietID>9007404</GebietID> - <GebietBEZEICHNUNG>Bad Segeberg</GebietBEZEICHNUNG> - <GebietGNR94_GNR>01060005</GebietGNR94_GNR> - <staat>000</staat> - <iso3166numerisch>276</iso3166numerisch> - <kont_telefonnummer/> - <kont_mobilnummer/> - <kont_telefaxnummer/> - <kont_email>${antragsteller_email}</kont_email> - <kont_demail/> - <persoenlicheEignung> - <maengelvorhanden>false</maengelvorhanden> - <ermittlungsverfahren>false</ermittlungsverfahren> - <MitgliedschaftInVerboternerVereinigung>false</MitgliedschaftInVerboternerVereinigung> - </persoenlicheEignung> - </antragsteller> - <AnliegenID>8938634</AnliegenID> - <nameid>51522620-03d2-4507-b1f0-08d86920efed</nameid> - <rest_response_name>[{"membercontext":"51522620-03d2-4507-b1f0-08d86920efed","memberscope":[{"tenant":"SH","mailboxguid":"6824d573-ff26-434d-81ae-2c36740e3cb4","mailboxname":"","mailboxdescription":"","mailboxtype":1,"guid":"00000000-0000-0000-0000-000000000000","id":8121155}]}]</rest_response_name> - <mailboxguid>6824d573-ff26-434d-81ae-2c36740e3cb4</mailboxguid> - <NiederlassungArt>1</NiederlassungArt> - <IstReisegewerbe>true</IstReisegewerbe> - <BetriebArtIndustrie>false</BetriebArtIndustrie> - <BetriebArtHandwerk>true</BetriebArtHandwerk> - <BetriebArtHandel>false</BetriebArtHandel> - <BetriebArtSonstiges>false</BetriebArtSonstiges> - <rechtsform>nicht eingetragenes Einzelunternehmen</rechtsform> - <rfm>180</rfm> - <registerart/> - <min2gesellschafter>false</min2gesellschafter> - <gesetzlichervertreter>Inhaber</gesetzlichervertreter> - <Betrieb> - <ID>577575</ID> - <geschaeftsbezeichnung>Test</geschaeftsbezeichnung> - <EintragungPLZ/> - <EintragungOrt/> - <GerichtSchluessel/> - </Betrieb> - <sh_strasse>Hauptstraße</sh_strasse> - <sh_zusatz>oben links</sh_zusatz> - <sh_hausnummer>10</sh_hausnummer> - <sh_plz>24534</sh_plz> - <ort_auswahl>9006404$01004000</ort_auswahl> - <sh_ortsteil>Einfeld</sh_ortsteil> - <ort>Neumünster</ort> - <GebietID>9006404</GebietID> - <GebietBEZEICHNUNG>Neumünster</GebietBEZEICHNUNG> - <GebietGNR94_GNR>01004000</GebietGNR94_GNR> - <staat>000</staat> - <iso3166numerisch>276</iso3166numerisch> - <kont_telefonnummer>01234/332211</kont_telefonnummer> - <kont_telefaxnummer>01234/112233</kont_telefaxnummer> - <kont_email>${antragsteller_email}</kont_email> - <kont_demail>ea-poststelle@ea-sh.de-mail.de</kont_demail> - <kont_homepage>www.meineHomepage.de</kont_homepage> - <b_kont_vorwahl_telefon>01234</b_kont_vorwahl_telefon> - <b_kont_telefon>332211</b_kont_telefon> - <b_kont_vorwahl_telefax>01234</b_kont_vorwahl_telefax> - <b_kont_telefax>112233</b_kont_telefax> - <TaetigkeitenGesamt> - <TaetigkeitenGesamt-item> - <auswahl_oberbegriff>C</auswahl_oberbegriff> - <auswahl_kategorie>10</auswahl_kategorie> - <check_taetigkeitsschwerpunkt>true</check_taetigkeitsschwerpunkt> - <a_taetigkeit>ausgewählte Tätigkeit</a_taetigkeit> - <b_oberbegriff>C Verarbeitendes Gewerbe</b_oberbegriff> - <b_kategorie>10 Herstellung von Nahrungs- und Futtermitteln</b_kategorie> - <b_unterklasse>10.12.0 Schlachten von Geflügel</b_unterklasse> - <b_unterklasse_schluessel>10.12.0</b_unterklasse_schluessel> - <b_inkl>- Betrieb von Schlachthäusern, in denen Geflügel geschlachtet, zugerichtet und verpackt wird - Herstellung von frischem oder gefrorenem Geflügelfleisch in Einzelportionen - Auslassen von Geflügelfetten - Gewinnung von Federn und Daunen</b_inkl> - </TaetigkeitenGesamt-item> - <TaetigkeitenGesamt-item> - <auswahl_oberbegriff>D</auswahl_oberbegriff> - <auswahl_kategorie>35</auswahl_kategorie> - <check_taetigkeitsschwerpunkt>false</check_taetigkeitsschwerpunkt> - <a_taetigkeit>ausgewählte Tätigkeit 2</a_taetigkeit> - <b_oberbegriff>D Energieversorgung</b_oberbegriff> - <b_kategorie>35 Energieversorgung</b_kategorie> - <b_unterklasse>35.11.1 Elektrizitätserzeugung ohne Verteilung</b_unterklasse> - <b_unterklasse_schluessel>35.11.1</b_unterklasse_schluessel> - <b_inkl/> - </TaetigkeitenGesamt-item> - </TaetigkeitenGesamt> - <IstNebenerwerb>true</IstNebenerwerb> - <AnzahlVollzeitBeschaeftigte>3</AnzahlVollzeitBeschaeftigte> - <AnzahlTeilzeitBeschaeftigte>3</AnzahlTeilzeitBeschaeftigte> - <BeteiligtePerson> - <BeteiligtePerson-item> - <personFunktion>1</personFunktion> - <personFunktionText>Einzelgewerbetreibender</personFunktionText> - <doktorgradSchluessel>01</doktorgradSchluessel> - <doktorgrad>Prof.</doktorgrad> - <familienname>${antragsteller_nachname}</familienname> - <vorname>Test</vorname> - <geschlechtText>weiblich</geschlechtText> - <geschlecht>2</geschlecht> - <geburtsname>Geburtsname</geburtsname> - <geburtsdatum>2000-01-01</geburtsdatum> - <geburtsort>Bremen</geburtsort> - <geburtsland>Deutschland</geburtsland> - <geburtslandSchluesel>000</geburtslandSchluesel> - <staatsangehoerigkeit>deutsch</staatsangehoerigkeit> - <staatsangehoerigkeitSchluessel>000</staatsangehoerigkeitSchluessel> - <adr_strasse>Hauptstraße</adr_strasse> - <adr_zusatz>oben links</adr_zusatz> - <adr_hausnummer>10</adr_hausnummer> - <adr_plz>24534</adr_plz> - <adr_ort>Neumünster</adr_ort> - <adr_ortsteil>Einfeld</adr_ortsteil> - <adr_land>Deutschland$DE$DEU$276$.de</adr_land> - <b_adr_numerisch>276</b_adr_numerisch> - <b_adr_land>Deutschland</b_adr_land> - <b_adr_alpha2>DE</b_adr_alpha2> - <b_adr_alpha3>DEU</b_adr_alpha3> - <b_adr_domain>.de</b_adr_domain> - <kont_telefonnummer>01234/332211</kont_telefonnummer> - <kont_telefaxnummer>01234/112233</kont_telefaxnummer> - <kont_email>${antragsteller_email}</kont_email> - <kont_demail>ea-poststelle@ea-sh.de-mail.de</kont_demail> - <kont_homepage>www.meineHomepage.de</kont_homepage> - <b_kont_vorwahl_telefon>01234</b_kont_vorwahl_telefon> - <b_kont_telefon>332211</b_kont_telefon> - <b_kont_vorwahl_telefax>01234</b_kont_vorwahl_telefax> - <b_kont_telefax>112233</b_kont_telefax> - <Status_Erlaubnis>1</Status_Erlaubnis> - <b_Erlaubnis>Liegt vor</b_Erlaubnis> - <Status_Handwerkskarte>1</Status_Handwerkskarte> - <b_Handwerkskarte>Liegt vor</b_Handwerkskarte> - <Erlaubnis> - <AusgestelltAm>2021-10-25</AusgestelltAm> - <AusgestelltVonName>Handwerkskammer</AusgestelltVonName> - <AusgestelltVonPLZ>12334</AusgestelltVonPLZ> - <AusgestelltVonOrt>Woklenkuckucksheim</AusgestelltVonOrt> - <datei_erlaubnisvorbehalt> - <datei_erlaubnisvorbehalt-item> - <file content-type="application/vnd.openxmlformats-officedocument.wordprocessingml.document" description="" id="${fileid-docx1}" length="16242">Erlaubnis.docx</file> - </datei_erlaubnisvorbehalt-item> - </datei_erlaubnisvorbehalt> - </Erlaubnis> - <handwerkskarte> - <ausgestelltAm>2000-06-06</ausgestelltAm> - <ausgestelltVonSchluessel>00033</ausgestelltVonSchluessel> - <ausgestelltVonName>Aachen</ausgestelltVonName> - <datei_handwerkskarte> - <datei_handwerkskarte-item> - <file content-type="application/pdf" description="" id="${fileid-pdf1}" length="185763">Handwerkskarte.pdf</file> - </datei_handwerkskarte-item> - <datei_handwerkskarte-item> - <file content-type="application/vnd.openxmlformats-officedocument.wordprocessingml.document" description="" id="${fileid-docx2}" length="16230">Handwerkskarte.docx</file> - </datei_handwerkskarte-item> - </datei_handwerkskarte> - </handwerkskarte> - </BeteiligtePerson-item> - </BeteiligtePerson> - <datei_ausweis> - <datei_ausweis-item> - <file content-type="application/vnd.openxmlformats-officedocument.wordprocessingml.document" description="" id="${fileid-docx3}" length="16280">Anlagen2.docx</file> - </datei_ausweis-item> - <datei_ausweis-item> - <file content-type="application/vnd.openxmlformats-officedocument.wordprocessingml.document" description="" id="${fileid-docx4}" length="16249">Anlagen.docx</file> - </datei_ausweis-item> - </datei_ausweis> - <datei_meldebestaetigung> - <datei_meldebestaetigung-item> - <file content-type="application/vnd.openxmlformats-officedocument.wordprocessingml.document" description="" id="${fileid-docx5}" length="16273">Meldebestätigung.docx</file> - </datei_meldebestaetigung-item> - <datei_meldebestaetigung-item> - <file content-type="application/vnd.openxmlformats-officedocument.wordprocessingml.document" description="" id="${fileid-docx6}" length="16296">Meldebestätigung2.docx</file> - </datei_meldebestaetigung-item> - </datei_meldebestaetigung> - <datei_sonstiges> - <datei_sonstiges-item> - <file content-type="application/vnd.openxmlformats-officedocument.wordprocessingml.document" description="" id="${fileid-docx7}" length="16268">Sonstiges.docx</file> - </datei_sonstiges-item> - <datei_sonstiges-item> - <file content-type="application/vnd.openxmlformats-officedocument.wordprocessingml.document" description="" id="${fileid-docx8}" length="16292">Sonstiges2.docx</file> - </datei_sonstiges-item> - <datei_sonstiges-item> - <file content-type="application/pdf" description="" id="${fileid-pdf2}" length="187585">Anlage Vollmacht.pdf</file> - </datei_sonstiges-item> - <datei_sonstiges-item> - <file content-type="application/vnd.oasis.opendocument.text" description="" id="${fileid-odt1}" length="4799">Anlagen1.odt</file> - </datei_sonstiges-item> - <datei_sonstiges-item> - <file content-type="image/jpeg" description="" id="${fileid-jpg1}" length="10129">win.jpg</file> - </datei_sonstiges-item> - <datei_sonstiges-item> - <file content-type="image/png" description="" id="${fileid-png1}" length="50959">win.png</file> - </datei_sonstiges-item> - </datei_sonstiges> - <KontaktsystemTypA>233034600</KontaktsystemTypA> - <KontaktsystemTypB>233034601</KontaktsystemTypB> - <zustaendigestelle> - <OrganisationseinheitenAuswahl>244406514</OrganisationseinheitenAuswahl> - <OrganisationseinheitenID>${oeid}</OrganisationseinheitenID> - <OrganisationseinheitenBEZEICHNUNG>Ordnungsaufgaben, Wahlen, Gewerbeangelegenheiten der Stadt Neumünster</OrganisationseinheitenBEZEICHNUNG> - <strasse>Großflecken</strasse> - <hausnummer>63</hausnummer> - <postleitzahl>24534</postleitzahl> - <ortID>9006404</ortID> - <ort>Neumünster</ort> - <telefonnummer>+49 4321 942-0</telefonnummer> - <telefaxnummer>+49 4321 942-2521</telefaxnummer> - <emailadresse>ordnungsangelegenheiten@neumuenster.de</emailadresse> - <demailadresse/> - <AnliegenBEZEICHNUNG>Gewerbeanmeldung, Elektronische Gewerbeanzeige</AnliegenBEZEICHNUNG> - <leikaKEYLIST>99050012104000</leikaKEYLIST> - <kontaktsystem_kennung/> - <kontaktsystem_kennungzusatz/> - </zustaendigestelle> - <empfangendestelle> - <OrganisationseinheitenAuswahl>9068873</OrganisationseinheitenAuswahl> - <OrganisationseinheitenID>9068873</OrganisationseinheitenID> - <OrganisationseinheitenBEZEICHNUNG>Einheitlicher Ansprechpartner Schleswig-Holstein</OrganisationseinheitenBEZEICHNUNG> - <strasse>Reventlouallee</strasse> - <hausnummer>6</hausnummer> - <postleitzahl>24105</postleitzahl> - <ortID>9006402</ortID> - <ort>Kiel</ort> - <telefonnummer>+49 431 988-8650</telefonnummer> - <telefaxnummer>+49 431 988-6161111</telefaxnummer> - <emailadresse>info@ea-sh.de</emailadresse> - <demailadresse>ea-poststelle@ea-sh.de-mail.de</demailadresse> - <od_vorhanden>true</od_vorhanden> - <od_typid>233034600</od_typid> - <od_kennung>afmsh:9068873_AusnahmeLKWFahrverbot</od_kennung> - <od_zustellung_mail/> - <od_zustellung_nb>afmsh:9068873_AusnahmeLKWFahrverbot</od_zustellung_nb> - <od_zustellung_webservice/> - <od_kennungzusatz/> - <kontaktsystem_kennung>afmsh:9068873_AusnahmeLKWFahrverbot</kontaktsystem_kennung> - <kontaktsystem_kennungzusatz>alle</kontaktsystem_kennungzusatz> - </empfangendestelle> - <erklaerungen> - <check_gebuehren>true</check_gebuehren> - <check_richtigkeit>true</check_richtigkeit> - <check_datenschutz>true</check_datenschutz> - <check_missbrauch>true</check_missbrauch> - <check_hinweis>true</check_hinweis> - <b_gebuehren_beschriftung>* Die Gewerbeanmeldung ist kostenpflichtig. Die Höhe der Gebühren bemisst sich nach der Landesverordnung über Verwaltungsgebühren (Allgemeiner Gebührentarif) Tarifstelle 11.1.1 - VwGebV. Genaue Auskünfte hierzu erteilt das zuständige Gewerbeamt.</b_gebuehren_beschriftung> - <b_gebuehren_intro/> - <b_richtigkeit>* Ich bestätige die Richtigkeit meiner Angaben.</b_richtigkeit> - <b_datenschutz>* Ich erkläre mich damit einverstanden, dass der Einheitlicher Ansprechpartner Schleswig-Holstein zur Erfüllung seiner Aufgaben meine Daten unter Einhaltung der Bestimmungen der Datenschutz-Grundverordnung (DS-GVO) und des Landesdatenschutzgesetzes Schleswig-Holstein (LDSG-SH) speichert, verarbeitet und diese im Rahmen der gesetzlichen Bestimmungen an die für die Entscheidung zuständige Stelle weiterleitet. Ebenso bin ich mit der rechtskonformen Datenverarbeitung und Speicherung durch die zuständige Stelle einverstanden. Mir ist bekannt, dass ich die Einwilligung in die Verarbeitung und Übermittlung jederzeit gegenüber dem Einheitlicher Ansprechpartner Schleswig-Holstein, Reventlouallee 6, 24105 Kiel widerrufen kann. Ein Widerruf ist aber nur wirksam für die Zukunft. Verarbeitungen, die vor dem Widerruf erfolgt sind, sind davon nicht betroffen. Über die Verarbeitung meiner personenbezogenen Daten und die mir nach den datenschutzrechtlichen Regelungen zustehenden Ansprüche und Rechte habe ich unter Datenschutzerklärung Kenntnis erlangt.</b_datenschutz> - <b_missbrauch>* Mir ist bekannt, dass zur Verfolgung widerrechtlicher Nutzung die Daten meines zur Dateneingabe genutzten Endgerätes aufgezeichnet und verwendet werden können.</b_missbrauch> - <b_hinweis_beschriftung>* Diese Anzeige berechtigt nicht zum Beginn des Gewerbebetriebes, wenn noch eine Erlaubnis oder eine Eintragung in die Handwerksrolle notwendig ist. Zuwiderhandlungen können mit Geldbuße oder Geldstrafe oder Freiheitsstrafe geahndet werden. Diese Anzeige ist keine Genehmigung zur Errichtung einer Betriebsstätte entsprechend dem Planungs- und Baurecht.</b_hinweis_beschriftung> - <b_hinweis_intro>Hinweis</b_hinweis_intro> - <policyurl>http://wafmxqa002.dpaor.de/sh/datenschutz/datenschutzerklaerungEA_de.doc</policyurl> - </erklaerungen> - <b_timestamp>20211206093513</b_timestamp> - <logourl>http://wafmxqa002.dpaor.de/sh/logos/kopf_9068873.doc</logourl> - <fm> - <ansprechpartner> - <firmenname/> - <anrede>${antragsteller_anrede}</anrede> - <vorname>${antragsteller_vorname}</vorname> - <familienname>${antragsteller_nachname}</familienname> - <anschrift> - <strasse>Hauptstraße</strasse> - <hausnummer>10</hausnummer> - <postfach/> - <postleitzahl>24534</postleitzahl> - <ort>Neumünster</ort> - <ortsteil>Einfeld</ortsteil> - <zusatz>oben links</zusatz> - <staat>Deutschland</staat> - </anschrift> - <kontakt> - <telefonnummer>01234/332211</telefonnummer> - <mobilnummer/> - <telefaxnummer>01234/112233</telefaxnummer> - <emailadresse>${antragsteller_email}</emailadresse> - <demailadresse>ea-poststelle@ea-sh.de-mail.de</demailadresse> - </kontakt> - </ansprechpartner> - <verwaltungsleistungen> - <verwaltungsleistung> - <ausgewaehlte_zustaendigestelle> - <OrganisationseinheitenID>10363455</OrganisationseinheitenID> - <OrganisationseinheitenBEZEICHNUNG>Ordnungsaufgaben, Wahlen, Gewerbeangelegenheiten der Stadt Neumünster</OrganisationseinheitenBEZEICHNUNG> - </ausgewaehlte_zustaendigestelle> - <GebietID>9006404</GebietID> - <GebietBEZEICHNUNG>Neumünster</GebietBEZEICHNUNG> - <AnliegenID>8938634</AnliegenID> - <AnliegenBEZEICHNUNG>Gewerbeanmeldung, Elektronische Gewerbeanzeige</AnliegenBEZEICHNUNG> - <leikaKEYLIST>99050012104000</leikaKEYLIST> - <leikaBEZEICHNUNG/> - </verwaltungsleistung> - </verwaltungsleistungen> - </fm> -</myForm> diff --git a/intelliform-adapter/src/test/resources/intelliform/soaprequest-deposit.xml b/intelliform-adapter/src/test/resources/intelliform/soaprequest-deposit.xml deleted file mode 100644 index ea289950..00000000 --- a/intelliform-adapter/src/test/resources/intelliform/soaprequest-deposit.xml +++ /dev/null @@ -1,210 +0,0 @@ -<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:bac="http://xmlns.cit.de/intelliform/2009/webservices/backend"> - <soapenv:Header/> - <soapenv:Body> - <bac:deposit> - <!--Optional:--> - <data> - <!--Zero or more repetitions:--> - <attachments> - <!--Zero or more repetitions:--> - <attributes> - <!--Optional:--> - <key>?</key> - <!--Optional:--> - <value>?</value> - </attributes> - <!--Optional:--> - <content> - PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjxteUZvcm0geG1sbnM6cGRm -PSJodHRwOi8veG1sbnMuY2l0LmRlL2Fzc2lzdGFudHMvcGRmIg0KCXhtbG5zOnQ9Imh0dHA6Ly94 -bWxucy5jaXQuZGUvaW50ZWxsaWZvcm0vdHJhbnNhY3Rpb24iDQoJdDppZD0iMjAyMDExMTgzNjU2 -NzA4NjYxMDEiIHQ6dGltZXN0YW1wPSIyMDIwLTExLTE4VDA5OjA5OjI3LjYyN1oiDQoJdDpzZW5k -ZXI9ImFmbS5zY2hsZXN3aWctaG9sc3RlaW4uZGUiDQoJdDpmb3JtPSJLbGVpbmVyIFdhZmZlbnNj -aGVpbiBnZW0uIMKnIDEwIEFicy4gNCBTYXR6IDQgV2FmZmVuZ2VzZXR6IChXYWZmRykiDQoJdDpm -b3JtLWlkPSJ3YWZmZW4va2xlaW5lcldhZmZlbnNjaGVpbiINCgl0OmN1c3RvbWVyPSJFaW5oZWl0 -bGljaGVyIEFuc3ByZWNocGFydG5lciIgdDpjdXN0b21lci1pZD0iZWEtc2giDQoJdDpjbGllbnQ9 -IlNjaGxlc3dpZy1Ib2xzdGVpbiIgdDpjbGllbnQtaWQ9ImxhbmQiPg0KCTxrb250YWt0c3lzdGVt -dHlwaWQ+MjMzMDM0NjAwPC9rb250YWt0c3lzdGVtdHlwaWQ+DQoJPGtvbnRha3RzeXN0ZW10eXBp -ZGxuPjIzMzAzNDYwMTwva29udGFrdHN5c3RlbXR5cGlkbG4+DQoJPEFubGllZ2VuSUQ+ODk2NjY3 -MTwvQW5saWVnZW5JRD4NCgk8YW50cmFnc3RlbGxlcj4NCgkJPHBlcnNfYW5yZWRlPkhlcnIkMDM8 -L3BlcnNfYW5yZWRlPg0KCQk8cGVyc19uYWNobmFtZT5UZXN0ZXJtYW5uPC9wZXJzX25hY2huYW1l -Pg0KCQk8cGVyc192b3JuYW1lPk1heDwvcGVyc192b3JuYW1lPg0KCQk8cGVyc19nZWJ1cnRzbmFt -ZT5NYXggVGVzdGVybWFubjwvcGVyc19nZWJ1cnRzbmFtZT4NCgkJPHBlcnNfZ2VidXJ0c2RhdHVt -PjE5OTUtMDMtMjE8L3BlcnNfZ2VidXJ0c2RhdHVtPg0KCQk8cGVyc19nZWJ1cnRzb3J0PkZsZW5z -YnVyZzwvcGVyc19nZWJ1cnRzb3J0Pg0KCQk8cGVyc19nZWJ1cnRzbGFuZD5kZXV0c2NoJERldXRz -Y2hsYW5kJDAwMDwvcGVyc19nZWJ1cnRzbGFuZD4NCgkJPHBlcnNfc3RhYXRzYW5nZWhvZXJpZ2tl -aXQ+ZGV1dHNjaCREZXV0c2NobGFuZCQwMDA8L3BlcnNfc3RhYXRzYW5nZWhvZXJpZ2tlaXQ+DQoJ -CTxiX2FucmVkZT5IZXJyPC9iX2FucmVkZT4NCgkJPGJfYW5yZWRlX3NjaGx1ZXNzZWxucj4wMzwv -Yl9hbnJlZGVfc2NobHVlc3NlbG5yPg0KCQk8Yl9nZWJ1cnRzbGFuZD5EZXV0c2NobGFuZDwvYl9n -ZWJ1cnRzbGFuZD4NCgkJPGJfZ2VidXJ0c2xhbmRfc2lnbmF0dXI+MDAwPC9iX2dlYnVydHNsYW5k -X3NpZ25hdHVyPg0KCQk8Yl9zdGFhdHNhbmdlaG9lcmlna2VpdD5kZXV0c2NoPC9iX3N0YWF0c2Fu -Z2Vob2VyaWdrZWl0Pg0KCQk8Yl9zdGFhdHNhbmdlaG9lcmlna2VpdF9zaWduYXR1cj4wMDA8L2Jf -c3RhYXRzYW5nZWhvZXJpZ2tlaXRfc2lnbmF0dXI+DQoJCTxzaF9zdHJhc3NlPkvDtm5pZ3N3ZWc8 -L3NoX3N0cmFzc2U+DQoJCTxzaF9oYXVzbnVtbWVyPjc0PC9zaF9oYXVzbnVtbWVyPg0KCQk8c2hf -cGx6PjI0ODM3PC9zaF9wbHo+DQoJCTxvcnRfYXVzd2FobD45MDA3MzE0JDAxMDU5MDc1PC9vcnRf -YXVzd2FobD4NCgkJPG9ydD5TY2hsZXN3aWc8L29ydD4NCgkJPEdlYmlldElEPjkwMDczMTQ8L0dl -YmlldElEPg0KCQk8R2ViaWV0QkVaRUlDSE5VTkc+U2NobGVzd2lnPC9HZWJpZXRCRVpFSUNITlVO -Rz4NCgkJPEdlYmlldEdOUjk0X0dOUj4wMTA1OTA3NTwvR2ViaWV0R05SOTRfR05SPg0KCQk8c3Rh -YXQ+MDAwPC9zdGFhdD4NCgkJPGlzbzMxNjZudW1lcmlzY2g+Mjc2PC9pc28zMTY2bnVtZXJpc2No -Pg0KCQk8a29udF90ZWxlZm9ubnVtbWVyPisgNDkgNDYyMSA5NjU0PC9rb250X3RlbGVmb25udW1t -ZXI+DQoJCTxrb250X21vYmlsbnVtbWVyPis0OSAxMjM8L2tvbnRfbW9iaWxudW1tZXI+DQoJCTxr -b250X3RlbGVmYXhudW1tZXI+KyA0OSA0NjIxIDk2NTQ8L2tvbnRfdGVsZWZheG51bW1lcj4NCgkJ -PGtvbnRfZW1haWw+bWF4LnRlc3Rlcm1hbm5AZ214LmRlPC9rb250X2VtYWlsPg0KCQk8a29udF9k -ZW1haWw+bWF4LnRlc3Rlcm1hbm5AZ214LmRlLW1haWwuZGU8L2tvbnRfZGVtYWlsPg0KCQk8cGVy -c29lbmxpY2hlRWlnbnVuZz4NCgkJCTxtYWVuZ2Vsdm9yaGFuZGVuPmZhbHNlPC9tYWVuZ2Vsdm9y -aGFuZGVuPg0KCQkJPGVybWl0dGx1bmdzdmVyZmFocmVuPmZhbHNlPC9lcm1pdHRsdW5nc3ZlcmZh -aHJlbj4NCgkJCTxNaXRnbGllZHNjaGFmdEluVmVyYm90ZXJuZXJWZXJlaW5pZ3VuZz5mYWxzZTwv -TWl0Z2xpZWRzY2hhZnRJblZlcmJvdGVybmVyVmVyZWluaWd1bmc+DQoJCTwvcGVyc29lbmxpY2hl -RWlnbnVuZz4NCgk8L2FudHJhZ3N0ZWxsZXI+DQoJPEdlYmlldElEPjkwMDczMTQ8L0dlYmlldElE -Pg0KCTx6dXN0YWVuZGlnZXN0ZWxsZT4NCgkJPE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5BdXN3YWhs -Pjk1MzU2Njk8L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5BdXN3YWhsPg0KCQk8T3JnYW5pc2F0aW9u -c2VpbmhlaXRlbklEPjk1MzU2Njk8L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5JRD4NCgkJPE9yZ2Fu -aXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz5LcmVpcw0KCQkJU2NobGVzd2lnLUZsZW5zYnVy -Zy9LcmVpc3ZlcndhbHR1bmcgLSBBbGxnZW1laW5lDQoJCQlPcmRudW5nc2FuZ2VsZWdlbmhlaXRl -bjwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbkJFWkVJQ0hOVU5HPg0KCQk8c3RyYXNzZT5GbGVuc2J1 -cmdlciBTdHJhw59lPC9zdHJhc3NlPg0KCQk8aGF1c251bW1lcj43PC9oYXVzbnVtbWVyPg0KCQk8 -cG9zdGxlaXR6YWhsPjI0ODM3PC9wb3N0bGVpdHphaGw+DQoJCTxvcnRJRD45MDA3MzE0PC9vcnRJ -RD4NCgkJPG9ydD5TY2hsZXN3aWc8L29ydD4NCgkJPHRlbGVmb25udW1tZXI+MDQ2MjEgODctMDwv -dGVsZWZvbm51bW1lcj4NCgkJPHRlbGVmYXhudW1tZXI+MDQ2MjEgODctMzY2PC90ZWxlZmF4bnVt -bWVyPg0KCQk8ZW1haWxhZHJlc3NlIC8+DQoJCTxkZW1haWxhZHJlc3NlIC8+DQoJCTxrb250YWt0 -c3lzdGVtX2tlbm51bmc+YWZtc2g6OTUzNTY2OV9rbGVpbmVyV2FmZmVuc2NoZWluPC9rb250YWt0 -c3lzdGVtX2tlbm51bmc+DQoJCTxrb250YWt0c3lzdGVtX2tlbm51bmd6dXNhdHogLz4NCgkJPEFu -bGllZ2VuQkVaRUlDSE5VTkc+V2FmZmVuc2NoZWluIC8gS2xlaW5lciBXYWZmZW5zY2hlaW48L0Fu -bGllZ2VuQkVaRUlDSE5VTkc+DQoJCTxsZWlrYUtFWUxJU1Q+OTkwODkwMDgwMDAwMDA7OTkwODkw -MDgwMDEwMDA8L2xlaWthS0VZTElTVD4NCgkJPGF1c3dhaGxfenVzdGVsbHVuZz5hYmhvbGVuPC9h -dXN3YWhsX3p1c3RlbGx1bmc+DQoJCTxiX3p1c3RlbGx1bmc+SWNoIGhvbGUgZGVuIEtsZWluZW4g -V2FmZmVuc2NoZWluIHNlbGJzdCBhYi48L2JfenVzdGVsbHVuZz4NCgk8L3p1c3RhZW5kaWdlc3Rl -bGxlPg0KCTxlbXBmYW5nZW5kZXN0ZWxsZT4NCgkJPE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5BdXN3 -YWhsPjkwNjg4NzM8L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5BdXN3YWhsPg0KCQk8T3JnYW5pc2F0 -aW9uc2VpbmhlaXRlbklEPjkwNjg4NzM8L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5JRD4NCgkJPE9y -Z2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz5FaW5oZWl0bGljaGVyIEFuc3ByZWNocGFy -dG5lcg0KCQkJU2NobGVzd2lnLUhvbHN0ZWluPC9PcmdhbmlzYXRpb25zZWluaGVpdGVuQkVaRUlD -SE5VTkc+DQoJCTxzdHJhc3NlPlJldmVudGxvdWFsbGVlPC9zdHJhc3NlPg0KCQk8aGF1c251bW1l -cj42PC9oYXVzbnVtbWVyPg0KCQk8cG9zdGxlaXR6YWhsPjI0MTA1PC9wb3N0bGVpdHphaGw+DQoJ -CTxvcnRJRD45MDA2NDAyPC9vcnRJRD4NCgkJPG9ydD5LaWVsPC9vcnQ+DQoJCTx0ZWxlZm9ubnVt -bWVyPis0OSA0MzEgOTg4LTg2NTA8L3RlbGVmb25udW1tZXI+DQoJCTx0ZWxlZmF4bnVtbWVyPis0 -OSA0MzEgOTg4LTYxNjExMTE8L3RlbGVmYXhudW1tZXI+DQoJCTxlbWFpbGFkcmVzc2U+aW5mb0Bl -YS1zaC5kZTwvZW1haWxhZHJlc3NlPg0KCQk8ZGVtYWlsYWRyZXNzZT5lYS1wb3N0c3RlbGxlQGVh -LXNoLmRlLW1haWwuZGU8L2RlbWFpbGFkcmVzc2U+DQoJCTxrb250YWt0c3lzdGVtX2tlbm51bmc+ -YWZtc2g6OTA2ODg3M19BdXNuYWhtZUxLV0ZhaHJ2ZXJib3Q8L2tvbnRha3RzeXN0ZW1fa2VubnVu -Zz4NCgkJPGtvbnRha3RzeXN0ZW1fa2VubnVuZ3p1c2F0ej5hbGxlPC9rb250YWt0c3lzdGVtX2tl -bm51bmd6dXNhdHo+DQoJPC9lbXBmYW5nZW5kZXN0ZWxsZT4NCgk8ZXJrbGFlcnVuZ2VuPg0KCQk8 -Y2hlY2tfZ2VidWVocmVuPnRydWU8L2NoZWNrX2dlYnVlaHJlbj4NCgkJPGNoZWNrX3JpY2h0aWdr -ZWl0PnRydWU8L2NoZWNrX3JpY2h0aWdrZWl0Pg0KCQk8Y2hlY2tfZGF0ZW5zY2h1dHo+dHJ1ZTwv -Y2hlY2tfZGF0ZW5zY2h1dHo+DQoJCTxjaGVja19taXNzYnJhdWNoPnRydWU8L2NoZWNrX21pc3Ni -cmF1Y2g+DQoJCTxiX2dlYnVlaHJlbl9iZXNjaHJpZnR1bmc+KiBNaXIgaXN0IGJla2FubnQsIGRh -c3MgZHVyY2ggZGFzIEVpbnJlaWNoZW4NCgkJCWRlcyBlbGVrdHJvbmlzY2hlbiBBbnRyYWdlcyB2 -b24gZGVyIHp1c3TDpG5kaWdlbiBTdGVsbGUgR2Viw7xocmVuDQoJCQllcmhvYmVuIHdlcmRlbiBr -w7ZubmVuLjwvYl9nZWJ1ZWhyZW5fYmVzY2hyaWZ0dW5nPg0KCQk8Yl9nZWJ1ZWhyZW5faW50cm8+ -R2Viw7xociBiZWkgQXVzc3RlbGx1bmcgZGVzIGtsZWluZW4gV2FmZmVuc2NoZWluczoNCgkJCTYw -LDAwIEV1cm8uIEJlYXJiZWl0dW5nc2dlYsO8aHIgYmVpIFZlcnNhZ3VuZzogNDUsMDAgRXVyby4N -CgkJCVNpZSBzaW5kIGdlbcOkw58gwqcgMzkgV2FmZkcgdmVycGZsaWNodGV0LCBkZXIgenVzdMOk -bmRpZ2VuIEJlaMO2cmRlIGRpZSB6dXINCgkJCUR1cmNoZsO8aHJ1bmcgZGVzIEdlc2V0emVzIGVy -Zm9yZGVybGljaGVuIEF1c2vDvG5mdGUgenUgZXJ0ZWlsZW4uIFp1cg0KCQkJUHLDvGZ1bmcgSWhy -ZXIgd2FmZmVucmVjaHRsaWNoZW4gWnV2ZXJsw6Rzc2lna2VpdCB1bmQgRWlnbnVuZyBob2x0IGRp -ZQ0KCQkJQmVow7ZyZGUgZWluZSB1bmJlc2NocsOkbmt0ZSBBdXNrdW5mdCBhdXMgZGVtIEJ1bmRl -c3plbnRyYWxyZWdpc3RlciwNCgkJCWVpbmUgQXVza3VuZnQgYXVzIGRlbSB6ZW50cmFsZW4gc3Rh -YXRzYW53YWx0c2NoYWZ0bGljaGVuDQoJCQlWZXJmYWhyZW5zcmVnaXN0ZXIsIGVpbmUgU3RlbGx1 -bmduYWhtZSBkZXIgw7ZydGxpY2hlbg0KCQkJUG9saXplaWRpZW5zdHN0ZWxsZSB1bmQgSWhyZXIg -V29obnNpdHpnZW1laW5kZSBlaW4uPC9iX2dlYnVlaHJlbl9pbnRybz4NCgkJPGJfcmljaHRpZ2tl -aXQ+KiBJY2ggYmVzdMOkdGlnZSBkaWUgUmljaHRpZ2tlaXQgbWVpbmVyIEFuZ2FiZW4uPC9iX3Jp -Y2h0aWdrZWl0Pg0KCQk8Yl9kYXRlbnNjaHV0ej4qIEljaCBlcmtsw6RyZSBtaWNoIGRhbWl0IGVp -bnZlcnN0YW5kZW4sIGRhc3MgZGVyDQoJCQlFaW5oZWl0bGljaGVyIEFuc3ByZWNocGFydG5lciBT -Y2hsZXN3aWctSG9sc3RlaW4genVyIEVyZsO8bGx1bmcgc2VpbmVyDQoJCQlBdWZnYWJlbiBtZWlu -ZSBEYXRlbiB1bnRlciBFaW5oYWx0dW5nIGRlciBCZXN0aW1tdW5nZW4gZGVyDQoJCQlEYXRlbnNj -aHV0ei1HcnVuZHZlcm9yZG51bmcgKERTLUdWTykgdW5kIGRlcw0KCQkJTGFuZGVzZGF0ZW5zY2h1 -dHpnZXNldHplcyBTY2hsZXN3aWctSG9sc3RlaW4gKExEU0ctU0gpIHNwZWljaGVydCwNCgkJCXZl -cmFyYmVpdGV0IHVuZCBkaWVzZSBpbSBSYWhtZW4gZGVyIGdlc2V0emxpY2hlbiBCZXN0aW1tdW5n -ZW4gYW4gZGllDQoJCQlmw7xyIGRpZSBFbnRzY2hlaWR1bmcgenVzdMOkbmRpZ2UgU3RlbGxlIHdl -aXRlcmxlaXRldC4gRWJlbnNvIGJpbiBpY2gNCgkJCW1pdCBkZXIgcmVjaHRza29uZm9ybWVuIERh -dGVudmVyYXJiZWl0dW5nIHVuZCBTcGVpY2hlcnVuZyBkdXJjaCBkaWUNCgkJCXp1c3TDpG5kaWdl -IFN0ZWxsZSBlaW52ZXJzdGFuZGVuLiBNaXIgaXN0IGJla2FubnQsIGRhc3MgaWNoIGRpZQ0KCQkJ -RWlud2lsbGlndW5nIGluIGRpZSBWZXJhcmJlaXR1bmcgdW5kIMOcYmVybWl0dGx1bmcgamVkZXJ6 -ZWl0IGdlZ2Vuw7xiZXINCgkJCWRlbSBFaW5oZWl0bGljaGVyIEFuc3ByZWNocGFydG5lciBTY2hs -ZXN3aWctSG9sc3RlaW4sIFJldmVudGxvdWFsbGVlDQoJCQk2LCAyNDEwNSBLaWVsIHdpZGVycnVm -ZW4ga2Fubi4gRWluIFdpZGVycnVmIGlzdCBhYmVyIG51ciB3aXJrc2FtIGbDvHINCgkJCWRpZSBa -dWt1bmZ0LiBWZXJhcmJlaXR1bmdlbiwgZGllIHZvciBkZW0gV2lkZXJydWYgZXJmb2xndCBzaW5k -LCBzaW5kDQoJCQlkYXZvbiBuaWNodCBiZXRyb2ZmZW4uIMOcYmVyIGRpZSBWZXJhcmJlaXR1bmcg -bWVpbmVyIHBlcnNvbmVuYmV6b2dlbmVuDQoJCQlEYXRlbiB1bmQgZGllIG1pciBuYWNoIGRlbiBk -YXRlbnNjaHV0enJlY2h0bGljaGVuIFJlZ2VsdW5nZW4NCgkJCXp1c3RlaGVuZGVuIEFuc3Byw7xj -aGUgdW5kIFJlY2h0ZSBoYWJlIGljaCB1bnRlciBEYXRlbnNjaHV0emVya2zDpHJ1bmcNCgkJCUtl -bm50bmlzIGVybGFuZ3QuPC9iX2RhdGVuc2NodXR6Pg0KCQk8Yl9taXNzYnJhdWNoPiogTWlyIGlz -dCBiZWthbm50LCBkYXNzIHp1ciBWZXJmb2xndW5nIHdpZGVycmVjaHRsaWNoZXINCgkJCU51dHp1 -bmcgZGllIERhdGVuIG1laW5lcyB6dXIgRGF0ZW5laW5nYWJlIGdlbnV0enRlbiBFbmRnZXLDpHRl -cw0KCQkJYXVmZ2V6ZWljaG5ldCB1bmQgdmVyd2VuZGV0IHdlcmRlbiBrw7ZubmVuLjwvYl9taXNz -YnJhdWNoPg0KCQk8cG9saWN5dXJsPmh0dHA6Ly93YWZteHBhMDAyLmRwYW9yLmRlL3NoL2RhdGVu -c2NodXR6L2RhdGVuc2NodXR6ZXJrbGFlcnVuZ0VBX2RlLmRvYzwvcG9saWN5dXJsPg0KCTwvZXJr -bGFlcnVuZ2VuPg0KCTxsb2dvdXJsPmh0dHA6Ly93YWZteHBhMDAyLmRwYW9yLmRlL3NoL2xvZ29z -L2tvcGZfOTA2ODg3My5kb2M8L2xvZ291cmw+DQoJPGZtPg0KCQk8YW5zcHJlY2hwYXJ0bmVyPg0K -CQkJPGZpcm1lbm5hbWUgLz4NCgkJCTxhbnJlZGU+SGVycjwvYW5yZWRlPg0KCQkJPHZvcm5hbWU+ -TWF4PC92b3JuYW1lPg0KCQkJPGZhbWlsaWVubmFtZT5UZXN0ZXJtYW5uPC9mYW1pbGllbm5hbWU+ -DQoJCQk8YW5zY2hyaWZ0Pg0KCQkJCTxzdHJhc3NlPkvDtm5pZ3N3ZWc8L3N0cmFzc2U+DQoJCQkJ -PGhhdXNudW1tZXI+NzQ8L2hhdXNudW1tZXI+DQoJCQkJPHBvc3RmYWNoIC8+DQoJCQkJPHBvc3Rs -ZWl0emFobD4yNDgzNzwvcG9zdGxlaXR6YWhsPg0KCQkJCTxvcnQ+U2NobGVzd2lnPC9vcnQ+DQoJ -CQkJPG9ydHN0ZWlsIC8+DQoJCQkJPHp1c2F0eiAvPg0KCQkJCTxzdGFhdD5EZXV0c2NobGFuZDwv -c3RhYXQ+DQoJCQk8L2Fuc2NocmlmdD4NCgkJCTxrb250YWt0Pg0KCQkJCTx0ZWxlZm9ubnVtbWVy -PisgNDkgNDYyMSA5NjU0PC90ZWxlZm9ubnVtbWVyPg0KCQkJCTxtb2JpbG51bW1lcj4rNDkgMTIz -PC9tb2JpbG51bW1lcj4NCgkJCQk8dGVsZWZheG51bW1lcj4rIDQ5IDQ2MjEgOTY1NDwvdGVsZWZh -eG51bW1lcj4NCgkJCQk8ZW1haWxhZHJlc3NlPm1heC50ZXN0ZXJtYW5uQGdteC5kZTwvZW1haWxh -ZHJlc3NlPg0KCQkJCTxkZW1haWxhZHJlc3NlPm1heC50ZXN0ZXJtYW5uQGdteC5kZS1tYWlsLmRl -PC9kZW1haWxhZHJlc3NlPg0KCQkJPC9rb250YWt0Pg0KCQk8L2Fuc3ByZWNocGFydG5lcj4NCgkJ -PHZlcndhbHR1bmdzbGVpc3R1bmdlbj4NCgkJCTx2ZXJ3YWx0dW5nc2xlaXN0dW5nPg0KCQkJCTxh -dXNnZXdhZWhsdGVfenVzdGFlbmRpZ2VzdGVsbGU+DQoJCQkJCTxPcmdhbmlzYXRpb25zZWluaGVp -dGVuSUQ+OTUzNTY2OTwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbklEPg0KCQkJCQk8T3JnYW5pc2F0 -aW9uc2VpbmhlaXRlbkJFWkVJQ0hOVU5HPktyZWlzDQoJCQkJCQlTY2hsZXN3aWctRmxlbnNidXJn -L0tyZWlzdmVyd2FsdHVuZyAtIEFsbGdlbWVpbmUNCgkJCQkJCU9yZG51bmdzYW5nZWxlZ2VuaGVp -dGVuPC9PcmdhbmlzYXRpb25zZWluaGVpdGVuQkVaRUlDSE5VTkc+DQoJCQkJPC9hdXNnZXdhZWhs -dGVfenVzdGFlbmRpZ2VzdGVsbGU+DQoJCQkJPEdlYmlldElEPjkwMDczMTQ8L0dlYmlldElEPg0K -CQkJCTxHZWJpZXRCRVpFSUNITlVORz5TY2hsZXN3aWc8L0dlYmlldEJFWkVJQ0hOVU5HPg0KCQkJ -CTxBbmxpZWdlbklEPjg5NjY2NzE8L0FubGllZ2VuSUQ+DQoJCQkJPEFubGllZ2VuQkVaRUlDSE5V -Tkc+V2FmZmVuc2NoZWluIC8gS2xlaW5lciBXYWZmZW5zY2hlaW48L0FubGllZ2VuQkVaRUlDSE5V -Tkc+DQoJCQkJPGxlaWthS0VZTElTVD45OTA4OTAwODAwMDAwMDs5OTA4OTAwODAwMTAwMDwvbGVp -a2FLRVlMSVNUPg0KCQkJCTxsZWlrYUJFWkVJQ0hOVU5HIC8+DQoJCQk8L3ZlcndhbHR1bmdzbGVp -c3R1bmc+DQoJCTwvdmVyd2FsdHVuZ3NsZWlzdHVuZ2VuPg0KCTwvZm0+DQo8L215Rm9ybT4= - </content> - <!--Optional:--> - <contentType>application/xml</contentType> - <!--Optional:--> - <description>?</description> - <!--Optional:--> - <id>1</id> - <!--Optional:--> - <name>XML-Daten.xml</name> - </attachments> - <!--Optional:--> - <caller>?</caller> - <!--Optional:--> - <client>?</client> - <!--Optional:--> - <clientId>?</clientId> - <!--Zero or more repetitions:--> - <customParameters> - <!--Optional:--> - <key>?</key> - <!--Optional:--> - <value>?</value> - </customParameters> - <!--Optional:--> - <customer>?</customer> - <!--Optional:--> - <customerId>?</customerId> - <!--Optional:--> - <form>?</form> - <!--Optional:--> - <formId>?</formId> - <!--Optional:--> - <id>?</id> - <!--Optional:--> - <primaryDataAttachmentId>?</primaryDataAttachmentId> - <!--Optional:--> - <primaryFormAttachmentId>?</primaryFormAttachmentId> - <!--Optional:--> - <sender>?</sender> - <!--Optional:--> - <timestamp>?</timestamp> - <!--Optional:--> - <username>?</username> - </data> - </bac:deposit> - </soapenv:Body> -</soapenv:Envelope> diff --git a/intelliform-adapter/src/test/resources/intelliform/soaprequest_other-name.xml b/intelliform-adapter/src/test/resources/intelliform/soaprequest_other-name.xml deleted file mode 100644 index f16ef1ff..00000000 --- a/intelliform-adapter/src/test/resources/intelliform/soaprequest_other-name.xml +++ /dev/null @@ -1,35 +0,0 @@ -<soap:Envelope - xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> - <soap:Body> - <ns2:deposit - xmlns:ns2="http://xmlns.cit.de/intelliform/2009/webservices/backend"> - <data> - <attachments> - <attributes> - <key>X-IntelliForm-Signed</key> - <value>false</value> - </attributes> - <content> - PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG15Rm9ybSB4bWxuczpwZGY9Imh0dHA6Ly94bWxucy5jaXQuZGUvYXNzaXN0YW50cy9wZGYiCgl4bWxuczp0PSJodHRwOi8veG1sbnMuY2l0LmRlL2ludGVsbGlmb3JtL3RyYW5zYWN0aW9uIgoJdDppZD0iMjAyMDExMTgzNjU2NzA4NjYxMDEiIHQ6dGltZXN0YW1wPSIyMDIwLTExLTE4VDA5OjA5OjI3LjYyN1oiCgl0OnNlbmRlcj0iYWZtLnNjaGxlc3dpZy1ob2xzdGVpbi5kZSIKCXQ6Zm9ybT0iS2xlaW5lciBXYWZmZW5zY2hlaW4gZ2VtLiDCpyAxMCBBYnMuIDQgU2F0eiA0IFdhZmZlbmdlc2V0eiAoV2FmZkcpIgoJdDpmb3JtLWlkPSJ3YWZmZW4va2xlaW5lcldhZmZlbnNjaGVpbiIKCXQ6Y3VzdG9tZXI9IkVpbmhlaXRsaWNoZXIgQW5zcHJlY2hwYXJ0bmVyIiB0OmN1c3RvbWVyLWlkPSJlYS1zaCIKCXQ6Y2xpZW50PSJTY2hsZXN3aWctSG9sc3RlaW4iIHQ6Y2xpZW50LWlkPSJsYW5kIj4KCQoJPHp1c3RhZW5kaWdlc3RlbGxlPgoJCTxPcmdhbmlzYXRpb25zZWluaGVpdGVuSUQ+MDgxNTwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbklEPgoJPC96dXN0YWVuZGlnZXN0ZWxsZT4KPC9teUZvcm0+ - </content> - <contentType>text/xml</contentType> - <id>myForm-xml</id> - <name>anderer-name-Daten.xml</name> - </attachments> - - <caller /> - <client>sh-dev</client> - <clientId>sh-dev</clientId> - <customer>Kiel</customer> - <customerId>Kiel</customerId> - <form>SimpleFormSendetAnHomeServer</form> - <formId>SimpleFormSendetAnHomeServer</formId> - <id>20210415307020414701</id> - <primaryDataAttachmentId>myForm-xml</primaryDataAttachmentId> - <sender>intelliform.by.kop-cloud.de</sender> - <timestamp>2021-04-15T08:33:39.443Z</timestamp> - <username /> - </data> - </ns2:deposit> - </soap:Body> -</soap:Envelope> \ No newline at end of file diff --git a/intelliform-adapter/src/test/resources/itcase/EinfachesFormularZweiAnhaengeSoapRequest.xml b/intelliform-adapter/src/test/resources/itcase/EinfachesFormularZweiAnhaengeSoapRequest.xml deleted file mode 100644 index 2f54eb6e..00000000 --- a/intelliform-adapter/src/test/resources/itcase/EinfachesFormularZweiAnhaengeSoapRequest.xml +++ /dev/null @@ -1,158 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> - <soap:Body> - <ns2:deposit xmlns:ns2="http://xmlns.cit.de/intelliform/2009/webservices/backend"> - <data> - <attachments> - <attributes> - <key>X-IntelliForm-Signed</key> - <value>false</value> - </attributes> - <content>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG15Rm9ybQoJeG1sbnM6cGRm -PSJodHRwOi8veG1sbnMuY2l0LmRlL2Fzc2lzdGFudHMvcGRmIgoJeG1sbnM6dD0iaHR0cDovL3ht -bG5zLmNpdC5kZS9pbnRlbGxpZm9ybS90cmFuc2FjdGlvbiIgdDp1dWlkPSJlYWMyNDgwZS03MTY2 -LTRiMTYtYmRkZC04ODA1OTFlN2Q5M2IiIHQ6aWQ9IjIwMjEwNDE1MzA3MDIwNDE0NzAxIiB0OnRp -bWVzdGFtcD0iMjAyMS0wNC0xNVQwODozMTo0Mi4zOThaIiB0OnNlbmRlcj0iaW50ZWxsaWZvcm0u -b3pnLXNoLmRlIiB0OmZvcm09IlNpbXBsZUZvcm1TZW5kZXRBbkhvbWVTZXJ2ZXJWb25Ub3JzdGVu -IiB0OmZvcm0taWQ9IlNpbXBsZUZvcm1TZW5kZXRBbkhvbWVTZXJ2ZXJWb25Ub3JzdGVuIiB0OmN1 -c3RvbWVyPSJLaWVsIiB0OmN1c3RvbWVyLWlkPSJLaWVsIiB0OmNsaWVudD0ic2gtZGV2IiB0OmNs -aWVudC1pZD0ic2gtZGV2Ij4KCTxLb250YWt0c3lzdGVtVHlwQT4yMzMwMzQ2MDA8L0tvbnRha3Rz -eXN0ZW1UeXBBPgoJPEtvbnRha3RzeXN0ZW1UeXBCPjIzMzAzNDYwMTwvS29udGFrdHN5c3RlbVR5 -cEI+Cgk8QW5saWVnZW5JRD44OTY2NjcxPC9BbmxpZWdlbklEPgoJPG5hbWVpZD5uYW1lSWRBc09z -aVBvc3RmYWNoSWRWMTwvbmFtZWlkPgoJPHJlc3RfcmVzcG9uc2VfbmFtZT4KCQlbeyJtZW1iZXJj -b250ZXh0IjoiNTE1MjI2MjAtMDNkMi00NTA3LWIxZjAtMDhkODY5MjBlZmVkIiwibWVtYmVyc2Nv -cGUiOlt7InRlbmFudCI6IlNIIiwibWFpbGJveGd1aWQiOiI2ODI0ZDU3My1mZjI2LTQzNGQtODFh -ZS0yYzM2NzQwZTNjYjQiLCJtYWlsYm94bmFtZSI6IiIsIm1haWxib3hkZXNjcmlwdGlvbiI6IiIs -Im1haWxib3h0eXBlIjoxLCJndWlkIjoiMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAw -MDAwIiwiaWQiOjgxMjExNTV9XX1dCgk8L3Jlc3RfcmVzcG9uc2VfbmFtZT4KCTxhbnRyYWdzdGVs -bGVyPgoJCTxzaF9zdHJhc3NlPkFuIGRlciBTY2huZWlkZXJlaTwvc2hfc3RyYXNzZT4KCQk8c2hf -aGF1c251bW1lcj4xPC9zaF9oYXVzbnVtbWVyPgoJCTxzaF9wbHo+MjQxMDM8L3NoX3Bsej4KCQk8 -b3J0X2F1c3dhaGw+OTAwNjQwMiQwMTAwMjAwMDwvb3J0X2F1c3dhaGw+CgkJPG9ydD5LaWVsPC9v -cnQ+CgkJPEdlYmlldElEPjkwMDY0MDI8L0dlYmlldElEPgoJCTxHZWJpZXRCRVpFSUNITlVORz5L -aWVsPC9HZWJpZXRCRVpFSUNITlVORz4KCQk8R2ViaWV0R05SOTRfR05SPjAxMDAyMDAwPC9HZWJp -ZXRHTlI5NF9HTlI+CgkJPHN0YWF0PjAwMDwvc3RhYXQ+CgkJPGlzbzMxNjZudW1lcmlzY2g+Mjc2 -PC9pc28zMTY2bnVtZXJpc2NoPgoJCTxrb250X3RlbGVmb25udW1tZXIvPgoJCTxrb250X21vYmls -bnVtbWVyLz4KCQk8a29udF90ZWxlZmF4bnVtbWVyLz4KCQk8a29udF9lbWFpbD5zY2huZWlkZXJA -aGVsZ2VzY2huZWlkZXIubG9jYWw8L2tvbnRfZW1haWw+CgkJPGtvbnRfZGVtYWlsLz4KCTwvYW50 -cmFnc3RlbGxlcj4KCTxVcGxvYWQxPgoJCTxmaWxlIGNvbnRlbnQtdHlwZT0iaW1hZ2UvanBlZyIg -ZGVzY3JpcHRpb249IiIgaWQ9ImFzc2lzdGFudHMuRTBGQkEzNjFDMTkxRjhCNzIzOTQ5NDY3QUUz -MDJCRUEyNEU0NzQ1RSIgbGVuZ3RoPSIxNTUyNTEiPkhlbGdlMS5qcGc8L2ZpbGU+Cgk8L1VwbG9h -ZDE+Cgk8VXBsb2FkMj4KCQk8ZmlsZSBjb250ZW50LXR5cGU9ImFwcGxpY2F0aW9uL3ZuZC5vYXNp -cy5vcGVuZG9jdW1lbnQudGV4dCIgZGVzY3JpcHRpb249IiIgaWQ9ImFzc2lzdGFudHMuNTJENzlF -NUIyMTE4RDE3NDAwNDVBQjg3MTUxNTM1RENBRDI0RTlBNyIgbGVuZ3RoPSI3OTkzIj5IZWxnZXRl -eHQyLm9kdDwvZmlsZT4KCTwvVXBsb2FkMj4KCTxHZWJpZXRJRD45MDA2NDAyPC9HZWJpZXRJRD4K -CTx6dXN0YWVuZGlnZXN0ZWxsZT4KCQk8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbkF1c3dhaGw+MTAz -NjM0NTU8L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5BdXN3YWhsPgoJCTxPcmdhbmlzYXRpb25zZWlu -aGVpdGVuSUQ+MTAzNjM0NTU8L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5JRD4KCQk8T3JnYW5pc2F0 -aW9uc2VpbmhlaXRlbkJFWkVJQ0hOVU5HPkxhbmRlc2hhdXB0c3RhZHQgS2llbCAtIELDvHJnZXIt -IHVuZCBPcmRudW5nc2FtdCwgU2FjaGJlcmVpY2ggR2VmYWhyZW5hYndlaHIsIFdhZmZlbmFuZ2Vs -ZWdlbmhlaXRlbiwgSmFnZGJlaMO2cmRlLCBCZXN0YXR0dW5nc2FuZ2VsZWdlbmhlaXRlbjwvT3Jn -YW5pc2F0aW9uc2VpbmhlaXRlbkJFWkVJQ0hOVU5HPgoJCTxzdHJhc3NlPlN0cmVzZW1hbm5wbGF0 -ejwvc3RyYXNzZT4KCQk8aGF1c251bW1lcj41PC9oYXVzbnVtbWVyPgoJCTxwb3N0bGVpdHphaGw+ -MjQxMDM8L3Bvc3RsZWl0emFobD4KCQk8b3J0SUQ+OTAwNjQwMjwvb3J0SUQ+CgkJPG9ydD5LaWVs -PC9vcnQ+CgkJPHRlbGVmb25udW1tZXIvPgoJCTx0ZWxlZmF4bnVtbWVyPis0OSA0MzEgOTAxLTYy -MTgxPC90ZWxlZmF4bnVtbWVyPgoJCTxlbWFpbGFkcmVzc2U+R2VmYWhyZW5hYndlaHJAS2llbC5k -ZTwvZW1haWxhZHJlc3NlPgoJCTxkZW1haWxhZHJlc3NlLz4KCQk8a29udGFrdHN5c3RlbV9rZW5u -dW5nLz4KCQk8a29udGFrdHN5c3RlbV9rZW5udW5nenVzYXR6Lz4KCQk8QW5saWVnZW5CRVpFSUNI -TlVORz5XYWZmZW5zY2hlaW4gLyBLbGVpbmVyIFdhZmZlbnNjaGVpbjwvQW5saWVnZW5CRVpFSUNI -TlVORz4KCQk8bGVpa2FLRVlMSVNUPjk5MDg5MDA4MDAwMDAwOzk5MDg5MDA4MDAxMDAwPC9sZWlr -YUtFWUxJU1Q+Cgk8L3p1c3RhZW5kaWdlc3RlbGxlPgoJPGVtcGZhbmdlbmRlc3RlbGxlPgoJCTxP -cmdhbmlzYXRpb25zZWluaGVpdGVuQXVzd2FobD45MDY4ODczPC9PcmdhbmlzYXRpb25zZWluaGVp -dGVuQXVzd2FobD4KCQk8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbklEPjkwNjg4NzM8L09yZ2FuaXNh -dGlvbnNlaW5oZWl0ZW5JRD4KCQk8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbkJFWkVJQ0hOVU5HPkVp -bmhlaXRsaWNoZXIgQW5zcHJlY2hwYXJ0bmVyIFNjaGxlc3dpZy1Ib2xzdGVpbjwvT3JnYW5pc2F0 -aW9uc2VpbmhlaXRlbkJFWkVJQ0hOVU5HPgoJCTxzdHJhc3NlPlJldmVudGxvdWFsbGVlPC9zdHJh -c3NlPgoJCTxoYXVzbnVtbWVyPjY8L2hhdXNudW1tZXI+CgkJPHBvc3RsZWl0emFobD4yNDEwNTwv -cG9zdGxlaXR6YWhsPgoJCTxvcnRJRD45MDA2NDAyPC9vcnRJRD4KCQk8b3J0PktpZWw8L29ydD4K -CQk8dGVsZWZvbm51bW1lcj4rNDkgNDMxIDk4OC04NjUwPC90ZWxlZm9ubnVtbWVyPgoJCTx0ZWxl -ZmF4bnVtbWVyPis0OSA0MzEgOTg4LTYxNjExMTE8L3RlbGVmYXhudW1tZXI+CgkJPGVtYWlsYWRy -ZXNzZT5pbmZvQGVhLXNoLmRlPC9lbWFpbGFkcmVzc2U+CgkJPGRlbWFpbGFkcmVzc2U+ZWEtcG9z -dHN0ZWxsZUBlYS1zaC5kZS1tYWlsLmRlPC9kZW1haWxhZHJlc3NlPgoJCTxrb250YWt0c3lzdGVt -X2tlbm51bmc+YWZtc2g6OTA2ODg3M19BdXNuYWhtZUxLV0ZhaHJ2ZXJib3Q8L2tvbnRha3RzeXN0 -ZW1fa2VubnVuZz4KCQk8a29udGFrdHN5c3RlbV9rZW5udW5nenVzYXR6PmFsbGU8L2tvbnRha3Rz -eXN0ZW1fa2VubnVuZ3p1c2F0ej4KCTwvZW1wZmFuZ2VuZGVzdGVsbGU+Cgk8ZXJrbGFlcnVuZ2Vu -PgoJCTxjaGVja19nZWJ1ZWhyZW4+dHJ1ZTwvY2hlY2tfZ2VidWVocmVuPgoJCTxjaGVja19yaWNo -dGlna2VpdD50cnVlPC9jaGVja19yaWNodGlna2VpdD4KCQk8Y2hlY2tfZGF0ZW5zY2h1dHo+dHJ1 -ZTwvY2hlY2tfZGF0ZW5zY2h1dHo+CgkJPGNoZWNrX21pc3NicmF1Y2g+dHJ1ZTwvY2hlY2tfbWlz -c2JyYXVjaD4KCQk8Yl9nZWJ1ZWhyZW5fYmVzY2hyaWZ0dW5nPiogTWlyIGlzdCBiZWthbm50LCBk -YXNzIGR1cmNoIGRhcyBFaW5yZWljaGVuIGRlcyBlbGVrdHJvbmlzY2hlbiBBbnRyYWdlcyB2b24g -ZGVyIHp1c3TDpG5kaWdlbiBTdGVsbGUgR2Viw7xocmVuIGVyaG9iZW4gd2VyZGVuIGvDtm5uZW4u -PC9iX2dlYnVlaHJlbl9iZXNjaHJpZnR1bmc+CgkJPGJfZ2VidWVocmVuX2ludHJvPkdlYsO8aHIg -YmVpIEF1c3N0ZWxsdW5nIGRlcyBrbGVpbmVuIFdhZmZlbnNjaGVpbnM6IDYwLDAwIEV1cm8uIEJl -YXJiZWl0dW5nc2dlYsO8aHIgYmVpIFZlcnNhZ3VuZzogNDUsMDAgRXVyby4gClNpZSBzaW5kIGdl -bcOkw58gwqcgMzkgV2FmZkcgdmVycGZsaWNodGV0LCBkZXIgenVzdMOkbmRpZ2VuIEJlaMO2cmRl -IGRpZSB6dXIgRHVyY2hmw7xocnVuZyBkZXMgR2VzZXR6ZXMgZXJmb3JkZXJsaWNoZW4gQXVza8O8 -bmZ0ZSB6dSBlcnRlaWxlbi4gWnVyIFByw7xmdW5nIElocmVyIHdhZmZlbnJlY2h0bGljaGVuIFp1 -dmVybMOkc3NpZ2tlaXQgdW5kIEVpZ251bmcgaG9sdCBkaWUgQmVow7ZyZGUgZWluZSB1bmJlc2No -csOkbmt0ZSBBdXNrdW5mdCBhdXMgZGVtIEJ1bmRlc3plbnRyYWxyZWdpc3RlciwgZWluZSBBdXNr -dW5mdCBhdXMgZGVtIHplbnRyYWxlbiBzdGFhdHNhbndhbHRzY2hhZnRsaWNoZW4gVmVyZmFocmVu -c3JlZ2lzdGVyLCBlaW5lIFN0ZWxsdW5nbmFobWUgZGVyIMO2cnRsaWNoZW4gUG9saXplaWRpZW5z -dHN0ZWxsZSB1bmQgSWhyZXIgV29obnNpdHpnZW1laW5kZSBlaW4uPC9iX2dlYnVlaHJlbl9pbnRy -bz4KCQk8Yl9yaWNodGlna2VpdD4qIEljaCBiZXN0w6R0aWdlIGRpZSBSaWNodGlna2VpdCBtZWlu -ZXIgQW5nYWJlbi48L2JfcmljaHRpZ2tlaXQ+CgkJPGJfZGF0ZW5zY2h1dHo+KiBJY2ggZXJrbMOk -cmUgbWljaCBkYW1pdCBlaW52ZXJzdGFuZGVuLCBkYXNzIGRlciBFaW5oZWl0bGljaGVyIEFuc3By -ZWNocGFydG5lciBTY2hsZXN3aWctSG9sc3RlaW4genVyIEVyZsO8bGx1bmcgc2VpbmVyIEF1Zmdh -YmVuIG1laW5lIERhdGVuIHVudGVyIEVpbmhhbHR1bmcgZGVyIEJlc3RpbW11bmdlbiBkZXIgRGF0 -ZW5zY2h1dHotR3J1bmR2ZXJvcmRudW5nIChEUy1HVk8pIHVuZCBkZXMgTGFuZGVzZGF0ZW5zY2h1 -dHpnZXNldHplcyBTY2hsZXN3aWctSG9sc3RlaW4gKExEU0ctU0gpIHNwZWljaGVydCwgdmVyYXJi -ZWl0ZXQgIHVuZCBkaWVzZSBpbSBSYWhtZW4gZGVyIGdlc2V0emxpY2hlbiBCZXN0aW1tdW5nZW4g -YW4gZGllIGbDvHIgZGllIEVudHNjaGVpZHVuZyB6dXN0w6RuZGlnZSBTdGVsbGUgd2VpdGVybGVp -dGV0LiBFYmVuc28gYmluIGljaCBtaXQgZGVyIHJlY2h0c2tvbmZvcm1lbiAgRGF0ZW52ZXJhcmJl -aXR1bmcgdW5kIFNwZWljaGVydW5nIGR1cmNoIGRpZSB6dXN0w6RuZGlnZSBTdGVsbGUgZWludmVy -c3RhbmRlbi4gTWlyIGlzdCBiZWthbm50LCBkYXNzIGljaCBkaWUgRWlud2lsbGlndW5nIGluIGRp -ZSBWZXJhcmJlaXR1bmcgdW5kIMOcYmVybWl0dGx1bmcgamVkZXJ6ZWl0IGdlZ2Vuw7xiZXIgZGVt -IEVpbmhlaXRsaWNoZXIgQW5zcHJlY2hwYXJ0bmVyIFNjaGxlc3dpZy1Ib2xzdGVpbiwgUmV2ZW50 -bG91YWxsZWUgNiwgMjQxMDUgS2llbCB3aWRlcnJ1ZmVuIGthbm4uIEVpbiBXaWRlcnJ1ZiBpc3Qg -YWJlciBudXIgd2lya3NhbSBmw7xyIGRpZSBadWt1bmZ0LiBWZXJhcmJlaXR1bmdlbiwgZGllIHZv -ciBkZW0gV2lkZXJydWYgZXJmb2xndCBzaW5kLCBzaW5kIGRhdm9uIG5pY2h0IGJldHJvZmZlbi4g -w5xiZXIgZGllIFZlcmFyYmVpdHVuZyBtZWluZXIgcGVyc29uZW5iZXpvZ2VuZW4gRGF0ZW4gdW5k -IGRpZSBtaXIgbmFjaCBkZW4gZGF0ZW5zY2h1dHpyZWNodGxpY2hlbiBSZWdlbHVuZ2VuIHp1c3Rl -aGVuZGVuIEFuc3Byw7xjaGUgdW5kIFJlY2h0ZSBoYWJlIGljaCB1bnRlciBEYXRlbnNjaHV0emVy -a2zDpHJ1bmcgS2VubnRuaXMgZXJsYW5ndC48L2JfZGF0ZW5zY2h1dHo+CgkJPGJfbWlzc2JyYXVj -aD4qIE1pciBpc3QgYmVrYW5udCwgZGFzcyB6dXIgVmVyZm9sZ3VuZyB3aWRlcnJlY2h0bGljaGVy -IE51dHp1bmcgZGllIERhdGVuIG1laW5lcyB6dXIgRGF0ZW5laW5nYWJlIGdlbnV0enRlbiBFbmRn -ZXLDpHRlcyBhdWZnZXplaWNobmV0IHVuZCB2ZXJ3ZW5kZXQgd2VyZGVuIGvDtm5uZW4uPC9iX21p -c3NicmF1Y2g+CgkJPHBvbGljeXVybD5odHRwOi8vd3d3LmVhLXNoLmluZm8vZGF0ZW5zY2h1dHov -ZGF0ZW5zY2h1dHplcmtsYWVydW5nRUFfZGUuZG9jPC9wb2xpY3l1cmw+Cgk8L2Vya2xhZXJ1bmdl -bj4KCTxsb2dvdXJsPmh0dHA6Ly93d3cuZWEtc2guaW5mby9sb2dvcy9rb3BmXzkwNjg4NzMuZG9j -PC9sb2dvdXJsPgo8L215Rm9ybT4=</content> - <contentType>text/xml</contentType> - <id>myForm-xml</id> - <name>XML-Daten.xml</name> - </attachments> - <attachments> - <attributes> - <key>X-IntelliForm-Signed</key> - <value>false</value> - </attributes> - <content>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</content> - <contentType>image/jpeg</contentType> - <id>assistants.E0FBA361C191F8B723949467AE302BEA24E4745E</id> - <name>Helge1.jpg</name> - </attachments> - <attachments> - <attributes> - <key>X-IntelliForm-Signed</key> - <value>false</value> - </attributes> - <content>UEsDBBQAAAgAACxEj1JexjIMJwAAACcAAAAIAAAAbWltZXR5cGVhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnRleHRQSwMEFAAACAAALESPUgYCUOZqAQAAagEAABgAAABUaHVtYm5haWxzL3RodW1ibmFpbC5wbmeJUE5HDQoaCgAAAA1JSERSAAAAtQAAAQAIAwAAAML9x+kAAAA8UExURYyQkJCTlZ6fo6qknrm2tri6vMW2qsrGv8rQ1d/Uytvm79vq9ezn5O/0+fDq5fT3+vj39////wAAAP///81aQL0AAADpSURBVHja7dK5DYAwEADB4zU2j6H/ZskpAOmk2Qom2HgyFtTU1NTU1NTU1NTU1J+us99Hz6ZexyGmPZu6LluZm6+pqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqan/6AXwWwUaPv4WoAAAAABJRU5ErkJgglBLAwQUAAgICAAsRI9SAAAAAAAAAAAAAAAACwAAAGNvbnRlbnQueG1spVddb9s2FH3vrxA0YG8M7bgDEi12H1oU2JoURZ0Be2UoSiYmiRpJWfa/3yVp0ZRjOVz8Ilu851zeb1IPn3Z1lWyZVFw0y3R+M0sT1lCR86Zcpn89f0V36afVhwdRFJyyLBe0q1mjERWNht8E2I3KnHSZdrLJBFFcZQ2pmco0zUTLmoGVhejM7uVWlN5X0XQLDtma7XQs2WBHXPISv7MFh+xckj6WbLAQ1JBeiFjyTlWoEBD1uiWan1ixq3jzzzLdaN1mGPd9f9MvboQs8fz+/h5bqTeYelzbycqicopZxcxmCs9v5njA1kyTWPsMNjSp6eoXJqNDQzR5lVW1LaMrYltOhIZuiIyuDQsep3eRx6d3kYfcmujNRE7u8BMI7ePp8VgLso7dy2BHoaKSt9FuOnTIF0J4Uw3BNag193Y2+4jde4DuL8J7yTWTAZxehFNSUR9xUZ8LGuDmGBCIbU2Z+sI3gVAThFvsxB6s8knV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</content> - <contentType>application/vnd.oasis.opendocument.text</contentType> - <id>assistants.52D79E5B2118D1740045AB87151535DCAD24E9A7</id> - <name>Helgetext2.odt</name> - </attachments> - <caller /> - <client>sh-dev</client> - <clientId>sh-dev</clientId> - <customer>Kiel</customer> - <customerId>Kiel</customerId> - <form>SimpleFormSendetAnHomeServer</form> - <formId>SimpleFormSendetAnHomeServer</formId> - <id>20210415307020414701</id> - <primaryDataAttachmentId>myForm-xml</primaryDataAttachmentId> - <sender>intelliform.by.kop-cloud.de</sender> - <timestamp>2021-04-15T08:33:39.443Z</timestamp> - <username /> - </data> - </ns2:deposit> - </soap:Body> -</soap:Envelope> \ No newline at end of file diff --git a/intelliform-adapter/src/test/resources/itcase/EinfachesFormularZweiAnhaengeSoapRequest_XML-Daten.xml b/intelliform-adapter/src/test/resources/itcase/EinfachesFormularZweiAnhaengeSoapRequest_XML-Daten.xml deleted file mode 100644 index 11382eb7..00000000 --- a/intelliform-adapter/src/test/resources/itcase/EinfachesFormularZweiAnhaengeSoapRequest_XML-Daten.xml +++ /dev/null @@ -1,84 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<myForm - xmlns:pdf="http://xmlns.cit.de/assistants/pdf" - xmlns:t="http://xmlns.cit.de/intelliform/transaction" t:uuid="eac2480e-7166-4b16-bddd-880591e7d93b" t:id="20210415307020414701" t:timestamp="2021-04-15T08:31:42.398Z" t:sender="intelliform.ozg-sh.de" t:form="SimpleFormSendetAnHomeServer" t:form-id="SimpleFormSendetAnHomeServer" t:customer="Kiel" t:customer-id="Kiel" t:client="sh-dev" t:client-id="sh-dev"> - <KontaktsystemTypA>233034600</KontaktsystemTypA> - <KontaktsystemTypB>233034601</KontaktsystemTypB> - <AnliegenID>8966671</AnliegenID> - <nameid>nameIdAsOsiPostfachIdV1</nameid> - <rest_response_name> - [{"membercontext":"51522620-03d2-4507-b1f0-08d86920efed","memberscope":[{"tenant":"SH","mailboxguid":"6824d573-ff26-434d-81ae-2c36740e3cb4","mailboxname":"","mailboxdescription":"","mailboxtype":1,"guid":"00000000-0000-0000-0000-000000000000","id":8121155}]}] - </rest_response_name> - <antragsteller> - <sh_strasse>An der Schneiderei</sh_strasse> - <sh_hausnummer>1</sh_hausnummer> - <sh_plz>24103</sh_plz> - <ort_auswahl>9006402$01002000</ort_auswahl> - <ort>Kiel</ort> - <GebietID>9006402</GebietID> - <GebietBEZEICHNUNG>Kiel</GebietBEZEICHNUNG> - <GebietGNR94_GNR>01002000</GebietGNR94_GNR> - <staat>000</staat> - <iso3166numerisch>276</iso3166numerisch> - <kont_telefonnummer/> - <kont_mobilnummer/> - <kont_telefaxnummer/> - <kont_email>noreply@ozg-sh.de</kont_email> - <kont_demail/> - </antragsteller> - <Upload1> - <file content-type="image/jpeg" description="" id="assistants.E0FBA361C191F8B723949467AE302BEA24E4745E" length="155251">Helge1.jpg</file> - </Upload1> - <Upload2> - <file content-type="application/vnd.oasis.opendocument.text" description="" id="assistants.52D79E5B2118D1740045AB87151535DCAD24E9A7" length="7993">Helgetext2.odt</file> - </Upload2> - <GebietID>9006402</GebietID> - <zustaendigestelle> - <OrganisationseinheitenAuswahl>10363455</OrganisationseinheitenAuswahl> - <OrganisationseinheitenID>10363455</OrganisationseinheitenID> - <OrganisationseinheitenBEZEICHNUNG>Landeshauptstadt Kiel - Bürger- und Ordnungsamt, Sachbereich Gefahrenabwehr, Waffenangelegenheiten, Jagdbehörde, Bestattungsangelegenheiten</OrganisationseinheitenBEZEICHNUNG> - <strasse>Stresemannplatz</strasse> - <hausnummer>5</hausnummer> - <postleitzahl>24103</postleitzahl> - <ortID>9006402</ortID> - <ort>Kiel</ort> - <telefonnummer/> - <telefaxnummer>+49 431 901-62181</telefaxnummer> - <emailadresse>Gefahrenabwehr@Kiel.de</emailadresse> - <demailadresse/> - <kontaktsystem_kennung/> - <kontaktsystem_kennungzusatz/> - <AnliegenBEZEICHNUNG>Waffenschein / Kleiner Waffenschein</AnliegenBEZEICHNUNG> - <leikaKEYLIST>99089008000000;99089008001000</leikaKEYLIST> - </zustaendigestelle> - <empfangendestelle> - <OrganisationseinheitenAuswahl>9068873</OrganisationseinheitenAuswahl> - <OrganisationseinheitenID>9068873</OrganisationseinheitenID> - <OrganisationseinheitenBEZEICHNUNG>Einheitlicher Ansprechpartner Schleswig-Holstein</OrganisationseinheitenBEZEICHNUNG> - <strasse>Reventlouallee</strasse> - <hausnummer>6</hausnummer> - <postleitzahl>24105</postleitzahl> - <ortID>9006402</ortID> - <ort>Kiel</ort> - <telefonnummer>+49 431 988-8650</telefonnummer> - <telefaxnummer>+49 431 988-6161111</telefaxnummer> - <emailadresse>info@ea-sh.de</emailadresse> - <demailadresse>ea-poststelle@ea-sh.de-mail.de</demailadresse> - <kontaktsystem_kennung>afmsh:9068873_AusnahmeLKWFahrverbot</kontaktsystem_kennung> - <kontaktsystem_kennungzusatz>alle</kontaktsystem_kennungzusatz> - </empfangendestelle> - <erklaerungen> - <check_gebuehren>true</check_gebuehren> - <check_richtigkeit>true</check_richtigkeit> - <check_datenschutz>true</check_datenschutz> - <check_missbrauch>true</check_missbrauch> - <b_gebuehren_beschriftung>* Mir ist bekannt, dass durch das Einreichen des elektronischen Antrages von der zuständigen Stelle Gebühren erhoben werden können.</b_gebuehren_beschriftung> - <b_gebuehren_intro>Gebühr bei Ausstellung des kleinen Waffenscheins: 60,00 Euro. Bearbeitungsgebühr bei Versagung: 45,00 Euro. -Sie sind gemäß § 39 WaffG verpflichtet, der zuständigen Behörde die zur Durchführung des Gesetzes erforderlichen Auskünfte zu erteilen. Zur Prüfung Ihrer waffenrechtlichen Zuverlässigkeit und Eignung holt die Behörde eine unbeschränkte Auskunft aus dem Bundeszentralregister, eine Auskunft aus dem zentralen staatsanwaltschaftlichen Verfahrensregister, eine Stellungnahme der örtlichen Polizeidienststelle und Ihrer Wohnsitzgemeinde ein.</b_gebuehren_intro> - <b_richtigkeit>* Ich bestätige die Richtigkeit meiner Angaben.</b_richtigkeit> - <b_datenschutz>* Ich erkläre mich damit einverstanden, dass der Einheitlicher Ansprechpartner Schleswig-Holstein zur Erfüllung seiner Aufgaben meine Daten unter Einhaltung der Bestimmungen der Datenschutz-Grundverordnung (DS-GVO) und des Landesdatenschutzgesetzes Schleswig-Holstein (LDSG-SH) speichert, verarbeitet und diese im Rahmen der gesetzlichen Bestimmungen an die für die Entscheidung zuständige Stelle weiterleitet. Ebenso bin ich mit der rechtskonformen Datenverarbeitung und Speicherung durch die zuständige Stelle einverstanden. Mir ist bekannt, dass ich die Einwilligung in die Verarbeitung und Übermittlung jederzeit gegenüber dem Einheitlicher Ansprechpartner Schleswig-Holstein, Reventlouallee 6, 24105 Kiel widerrufen kann. Ein Widerruf ist aber nur wirksam für die Zukunft. Verarbeitungen, die vor dem Widerruf erfolgt sind, sind davon nicht betroffen. Über die Verarbeitung meiner personenbezogenen Daten und die mir nach den datenschutzrechtlichen Regelungen zustehenden Ansprüche und Rechte habe ich unter Datenschutzerklärung Kenntnis erlangt.</b_datenschutz> - <b_missbrauch>* Mir ist bekannt, dass zur Verfolgung widerrechtlicher Nutzung die Daten meines zur Dateneingabe genutzten Endgerätes aufgezeichnet und verwendet werden können.</b_missbrauch> - <policyurl>http://www.ea-sh.info/datenschutz/datenschutzerklaerungEA_de.doc</policyurl> - </erklaerungen> - <logourl>http://www.ea-sh.info/logos/kopf_9068873.doc</logourl> -</myForm> \ No newline at end of file diff --git a/intelliform-adapter/src/test/resources/itcase/EinfachesFormularZweiAnhaengeSoapResponse.xml b/intelliform-adapter/src/test/resources/itcase/EinfachesFormularZweiAnhaengeSoapResponse.xml deleted file mode 100644 index c9ad8890..00000000 --- a/intelliform-adapter/src/test/resources/itcase/EinfachesFormularZweiAnhaengeSoapResponse.xml +++ /dev/null @@ -1 +0,0 @@ -<ns3:depositResponse xmlns:ns3="http://xmlns.cit.de/intelliform/2009/webservices/backend"/> diff --git a/intelliform-adapter/src/test/resources/itcase/XML-Daten-1-SoapRequest.xml b/intelliform-adapter/src/test/resources/itcase/XML-Daten-1-SoapRequest.xml deleted file mode 100644 index 373c0682..00000000 --- a/intelliform-adapter/src/test/resources/itcase/XML-Daten-1-SoapRequest.xml +++ /dev/null @@ -1,31 +0,0 @@ -<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> - <soap:Body> - <ns2:deposit xmlns:ns2="http://xmlns.cit.de/intelliform/2009/webservices/backend"> - <data> - <attachments> - <attributes> - <key>X-IntelliForm-Signed</key> - <value>false</value> - </attributes> - <content>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG15Rm9ybSB4bWxuczpwZGY9Imh0dHA6Ly94bWxucy5jaXQuZGUvYXNzaXN0YW50cy9wZGYiCgl4bWxuczp0PSJodHRwOi8veG1sbnMuY2l0LmRlL2ludGVsbGlmb3JtL3RyYW5zYWN0aW9uIgoJdDppZD0iMjAyMDExMTgzNjU2NzA4NjYxMDEiIHQ6dGltZXN0YW1wPSIyMDIwLTExLTE4VDA5OjA5OjI3LjYyN1oiCgl0OnNlbmRlcj0iYWZtLnNjaGxlc3dpZy1ob2xzdGVpbi5kZSIKCXQ6Zm9ybT0iS2xlaW5lciBXYWZmZW5zY2hlaW4gZ2VtLiDCpyAxMCBBYnMuIDQgU2F0eiA0IFdhZmZlbmdlc2V0eiAoV2FmZkcpIgoJdDpmb3JtLWlkPSJ3YWZmZW4va2xlaW5lcldhZmZlbnNjaGVpbiIKCXQ6Y3VzdG9tZXI9IkVpbmhlaXRsaWNoZXIgQW5zcHJlY2hwYXJ0bmVyIiB0OmN1c3RvbWVyLWlkPSJlYS1zaCIKCXQ6Y2xpZW50PSJTY2hsZXN3aWctSG9sc3RlaW4iIHQ6Y2xpZW50LWlkPSJsYW5kIj4KCTxrb250YWt0c3lzdGVtdHlwaWQ+MjMzMDM0NjAwPC9rb250YWt0c3lzdGVtdHlwaWQ+Cgk8a29udGFrdHN5c3RlbXR5cGlkbG4+MjMzMDM0NjAxPC9rb250YWt0c3lzdGVtdHlwaWRsbj4KCTxBbmxpZWdlbklEPjg5NjY2NzE8L0FubGllZ2VuSUQ+Cgk8bWFpbGJveGd1aWQ+Zjk3NzM2OGItNjk5MS00NmI5LWFmMTgtOGEyYTAzZDlhZDFiPC9tYWlsYm94Z3VpZD4KCTxuYW1laWQ+Y2JhY2IwMWEtMjgxMC0xMWVjLWJiNmYtYzMxOTM5Zjg4NzRlPC9uYW1laWQ+Cgk8YW50cmFnc3RlbGxlcj4KCQk8cGVyc19hbnJlZGU+SGVyciQwMzwvcGVyc19hbnJlZGU+CgkJPHBlcnNfbmFjaG5hbWU+VGVzdGVybWFubjwvcGVyc19uYWNobmFtZT4KCQk8cGVyc192b3JuYW1lPk1heDwvcGVyc192b3JuYW1lPgoJCTxwZXJzX2dlYnVydHNuYW1lPk1heCBUZXN0ZXJtYW5uPC9wZXJzX2dlYnVydHNuYW1lPgoJCTxwZXJzX2dlYnVydHNkYXR1bT4xOTk1LTAzLTIxPC9wZXJzX2dlYnVydHNkYXR1bT4KCQk8cGVyc19nZWJ1cnRzb3J0PkZsZW5zYnVyZzwvcGVyc19nZWJ1cnRzb3J0PgoJCTxwZXJzX2dlYnVydHNsYW5kPmRldXRzY2gkRGV1dHNjaGxhbmQkMDAwPC9wZXJzX2dlYnVydHNsYW5kPgoJCTxwZXJzX3N0YWF0c2FuZ2Vob2VyaWdrZWl0PmRldXRzY2gkRGV1dHNjaGxhbmQkMDAwPC9wZXJzX3N0YWF0c2FuZ2Vob2VyaWdrZWl0PgoJCTxiX2FucmVkZT5IZXJyPC9iX2FucmVkZT4KCQk8Yl9hbnJlZGVfc2NobHVlc3NlbG5yPjAzPC9iX2FucmVkZV9zY2hsdWVzc2VsbnI+CgkJPGJfZ2VidXJ0c2xhbmQ+RGV1dHNjaGxhbmQ8L2JfZ2VidXJ0c2xhbmQ+CgkJPGJfZ2VidXJ0c2xhbmRfc2lnbmF0dXI+MDAwPC9iX2dlYnVydHNsYW5kX3NpZ25hdHVyPgoJCTxiX3N0YWF0c2FuZ2Vob2VyaWdrZWl0PmRldXRzY2g8L2Jfc3RhYXRzYW5nZWhvZXJpZ2tlaXQ+CgkJPGJfc3RhYXRzYW5nZWhvZXJpZ2tlaXRfc2lnbmF0dXI+MDAwPC9iX3N0YWF0c2FuZ2Vob2VyaWdrZWl0X3NpZ25hdHVyPgoJCTxzaF9zdHJhc3NlPkvDtm5pZ3N3ZWc8L3NoX3N0cmFzc2U+CgkJPHNoX2hhdXNudW1tZXI+NzQ8L3NoX2hhdXNudW1tZXI+CgkJPHNoX3Bsej4yNDgzNzwvc2hfcGx6PgoJCTxvcnRfYXVzd2FobD45MDA3MzE0JDAxMDU5MDc1PC9vcnRfYXVzd2FobD4KCQk8b3J0PlNjaGxlc3dpZzwvb3J0PgoJCTxHZWJpZXRJRD45MDA3MzE0PC9HZWJpZXRJRD4KCQk8R2ViaWV0QkVaRUlDSE5VTkc+U2NobGVzd2lnPC9HZWJpZXRCRVpFSUNITlVORz4KCQk8R2ViaWV0R05SOTRfR05SPjAxMDU5MDc1PC9HZWJpZXRHTlI5NF9HTlI+CgkJPHN0YWF0PjAwMDwvc3RhYXQ+CgkJPGlzbzMxNjZudW1lcmlzY2g+Mjc2PC9pc28zMTY2bnVtZXJpc2NoPgoJCTxrb250X3RlbGVmb25udW1tZXI+KyA0OSA0NjIxIDk2NTQ8L2tvbnRfdGVsZWZvbm51bW1lcj4KCQk8a29udF9tb2JpbG51bW1lcj4rNDkgMTIzPC9rb250X21vYmlsbnVtbWVyPgoJCTxrb250X3RlbGVmYXhudW1tZXI+KyA0OSA0NjIxIDk2NTQ8L2tvbnRfdGVsZWZheG51bW1lcj4KCQk8a29udF9lbWFpbD5tYXgudGVzdGVybWFubkBnbXguZGU8L2tvbnRfZW1haWw+CgkJPGtvbnRfZGVtYWlsPm1heC50ZXN0ZXJtYW5uQGdteC5kZS1tYWlsLmRlPC9rb250X2RlbWFpbD4KCQk8cGVyc29lbmxpY2hlRWlnbnVuZz4KCQkJPG1hZW5nZWx2b3JoYW5kZW4+ZmFsc2U8L21hZW5nZWx2b3JoYW5kZW4+CgkJCTxlcm1pdHRsdW5nc3ZlcmZhaHJlbj5mYWxzZTwvZXJtaXR0bHVuZ3N2ZXJmYWhyZW4+CgkJCTxNaXRnbGllZHNjaGFmdEluVmVyYm90ZXJuZXJWZXJlaW5pZ3VuZz5mYWxzZTwvTWl0Z2xpZWRzY2hhZnRJblZlcmJvdGVybmVyVmVyZWluaWd1bmc+CgkJPC9wZXJzb2VubGljaGVFaWdudW5nPgoJPC9hbnRyYWdzdGVsbGVyPgoJPEdlYmlldElEPjkwMDczMTQ8L0dlYmlldElEPgoJPHp1c3RhZW5kaWdlc3RlbGxlPgoJCTxPcmdhbmlzYXRpb25zZWluaGVpdGVuQXVzd2FobD45NTM1NjY5PC9PcmdhbmlzYXRpb25zZWluaGVpdGVuQXVzd2FobD4KCQk8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbklEPjk1MzU2Njk8L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5JRD4KCQk8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbkJFWkVJQ0hOVU5HPktyZWlzCgkJCVNjaGxlc3dpZy1GbGVuc2J1cmcvS3JlaXN2ZXJ3YWx0dW5nIC0gQWxsZ2VtZWluZQoJCQlPcmRudW5nc2FuZ2VsZWdlbmhlaXRlbjwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbkJFWkVJQ0hOVU5HPgoJCTxzdHJhc3NlPkZsZW5zYnVyZ2VyIFN0cmHDn2U8L3N0cmFzc2U+CgkJPGhhdXNudW1tZXI+NzwvaGF1c251bW1lcj4KCQk8cG9zdGxlaXR6YWhsPjI0ODM3PC9wb3N0bGVpdHphaGw+CgkJPG9ydElEPjkwMDczMTQ8L29ydElEPgoJCTxvcnQ+U2NobGVzd2lnPC9vcnQ+CgkJPHRlbGVmb25udW1tZXI+MDQ2MjEgODctMDwvdGVsZWZvbm51bW1lcj4KCQk8dGVsZWZheG51bW1lcj4wNDYyMSA4Ny0zNjY8L3RlbGVmYXhudW1tZXI+CgkJPGVtYWlsYWRyZXNzZT5HZWZhaHJlbmFid2VockBLaWVsLmRlPC9lbWFpbGFkcmVzc2U+CgkJPGRlbWFpbGFkcmVzc2UgLz4KCQk8a29udGFrdHN5c3RlbV9rZW5udW5nPmFmbXNoOjk1MzU2Njlfa2xlaW5lcldhZmZlbnNjaGVpbjwva29udGFrdHN5c3RlbV9rZW5udW5nPgoJCTxrb250YWt0c3lzdGVtX2tlbm51bmd6dXNhdHogLz4KCQk8QW5saWVnZW5CRVpFSUNITlVORz5XYWZmZW5zY2hlaW4gLyBLbGVpbmVyIFdhZmZlbnNjaGVpbjwvQW5saWVnZW5CRVpFSUNITlVORz4KCQk8bGVpa2FLRVlMSVNUPjk5MDg5MDA4MDAwMDAwOzk5MDg5MDA4MDAxMDAwPC9sZWlrYUtFWUxJU1Q+CgkJPGF1c3dhaGxfenVzdGVsbHVuZz5hYmhvbGVuPC9hdXN3YWhsX3p1c3RlbGx1bmc+CgkJPGJfenVzdGVsbHVuZz5JY2ggaG9sZSBkZW4gS2xlaW5lbiBXYWZmZW5zY2hlaW4gc2VsYnN0IGFiLjwvYl96dXN0ZWxsdW5nPgoJPC96dXN0YWVuZGlnZXN0ZWxsZT4KCTxlbXBmYW5nZW5kZXN0ZWxsZT4KCQk8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbkF1c3dhaGw+OTA2ODg3MzwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbkF1c3dhaGw+CgkJPE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5JRD45MDY4ODczPC9PcmdhbmlzYXRpb25zZWluaGVpdGVuSUQ+CgkJPE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz5FaW5oZWl0bGljaGVyIEFuc3ByZWNocGFydG5lcgoJCQlTY2hsZXN3aWctSG9sc3RlaW48L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz4KCQk8c3RyYXNzZT5SZXZlbnRsb3VhbGxlZTwvc3RyYXNzZT4KCQk8aGF1c251bW1lcj42PC9oYXVzbnVtbWVyPgoJCTxwb3N0bGVpdHphaGw+MjQxMDU8L3Bvc3RsZWl0emFobD4KCQk8b3J0SUQ+OTAwNjQwMjwvb3J0SUQ+CgkJPG9ydD5LaWVsPC9vcnQ+CgkJPHRlbGVmb25udW1tZXI+KzQ5IDQzMSA5ODgtODY1MDwvdGVsZWZvbm51bW1lcj4KCQk8dGVsZWZheG51bW1lcj4rNDkgNDMxIDk4OC02MTYxMTExPC90ZWxlZmF4bnVtbWVyPgoJCTxlbWFpbGFkcmVzc2U+aW5mb0BlYS1zaC5kZTwvZW1haWxhZHJlc3NlPgoJCTxkZW1haWxhZHJlc3NlPmVhLXBvc3RzdGVsbGVAZWEtc2guZGUtbWFpbC5kZTwvZGVtYWlsYWRyZXNzZT4KCQk8a29udGFrdHN5c3RlbV9rZW5udW5nPmFmbXNoOjkwNjg4NzNfQXVzbmFobWVMS1dGYWhydmVyYm90PC9rb250YWt0c3lzdGVtX2tlbm51bmc+CgkJPGtvbnRha3RzeXN0ZW1fa2VubnVuZ3p1c2F0ej5hbGxlPC9rb250YWt0c3lzdGVtX2tlbm51bmd6dXNhdHo+Cgk8L2VtcGZhbmdlbmRlc3RlbGxlPgoJPGVya2xhZXJ1bmdlbj4KCQk8Y2hlY2tfZ2VidWVocmVuPnRydWU8L2NoZWNrX2dlYnVlaHJlbj4KCQk8Y2hlY2tfcmljaHRpZ2tlaXQ+dHJ1ZTwvY2hlY2tfcmljaHRpZ2tlaXQ+CgkJPGNoZWNrX2RhdGVuc2NodXR6PnRydWU8L2NoZWNrX2RhdGVuc2NodXR6PgoJCTxjaGVja19taXNzYnJhdWNoPnRydWU8L2NoZWNrX21pc3NicmF1Y2g+CgkJPGJfZ2VidWVocmVuX2Jlc2NocmlmdHVuZz4qIE1pciBpc3QgYmVrYW5udCwgZGFzcyBkdXJjaCBkYXMgRWlucmVpY2hlbgoJCQlkZXMgZWxla3Ryb25pc2NoZW4gQW50cmFnZXMgdm9uIGRlciB6dXN0w6RuZGlnZW4gU3RlbGxlIEdlYsO8aHJlbgoJCQllcmhvYmVuIHdlcmRlbiBrw7ZubmVuLjwvYl9nZWJ1ZWhyZW5fYmVzY2hyaWZ0dW5nPgoJCTxiX2dlYnVlaHJlbl9pbnRybz5HZWLDvGhyIGJlaSBBdXNzdGVsbHVuZyBkZXMga2xlaW5lbiBXYWZmZW5zY2hlaW5zOgoJCQk2MCwwMCBFdXJvLiBCZWFyYmVpdHVuZ3NnZWLDvGhyIGJlaSBWZXJzYWd1bmc6IDQ1LDAwIEV1cm8uCgkJCVNpZSBzaW5kIGdlbcOkw58gwqcgMzkgV2FmZkcgdmVycGZsaWNodGV0LCBkZXIgenVzdMOkbmRpZ2VuIEJlaMO2cmRlIGRpZSB6dXIKCQkJRHVyY2hmw7xocnVuZyBkZXMgR2VzZXR6ZXMgZXJmb3JkZXJsaWNoZW4gQXVza8O8bmZ0ZSB6dSBlcnRlaWxlbi4gWnVyCgkJCVByw7xmdW5nIElocmVyIHdhZmZlbnJlY2h0bGljaGVuIFp1dmVybMOkc3NpZ2tlaXQgdW5kIEVpZ251bmcgaG9sdCBkaWUKCQkJQmVow7ZyZGUgZWluZSB1bmJlc2NocsOkbmt0ZSBBdXNrdW5mdCBhdXMgZGVtIEJ1bmRlc3plbnRyYWxyZWdpc3RlciwKCQkJZWluZSBBdXNrdW5mdCBhdXMgZGVtIHplbnRyYWxlbiBzdGFhdHNhbndhbHRzY2hhZnRsaWNoZW4KCQkJVmVyZmFocmVuc3JlZ2lzdGVyLCBlaW5lIFN0ZWxsdW5nbmFobWUgZGVyIMO2cnRsaWNoZW4KCQkJUG9saXplaWRpZW5zdHN0ZWxsZSB1bmQgSWhyZXIgV29obnNpdHpnZW1laW5kZSBlaW4uPC9iX2dlYnVlaHJlbl9pbnRybz4KCQk8Yl9yaWNodGlna2VpdD4qIEljaCBiZXN0w6R0aWdlIGRpZSBSaWNodGlna2VpdCBtZWluZXIgQW5nYWJlbi48L2JfcmljaHRpZ2tlaXQ+CgkJPGJfZGF0ZW5zY2h1dHo+KiBJY2ggZXJrbMOkcmUgbWljaCBkYW1pdCBlaW52ZXJzdGFuZGVuLCBkYXNzIGRlcgoJCQlFaW5oZWl0bGljaGVyIEFuc3ByZWNocGFydG5lciBTY2hsZXN3aWctSG9sc3RlaW4genVyIEVyZsO8bGx1bmcgc2VpbmVyCgkJCUF1ZmdhYmVuIG1laW5lIERhdGVuIHVudGVyIEVpbmhhbHR1bmcgZGVyIEJlc3RpbW11bmdlbiBkZXIKCQkJRGF0ZW5zY2h1dHotR3J1bmR2ZXJvcmRudW5nIChEUy1HVk8pIHVuZCBkZXMKCQkJTGFuZGVzZGF0ZW5zY2h1dHpnZXNldHplcyBTY2hsZXN3aWctSG9sc3RlaW4gKExEU0ctU0gpIHNwZWljaGVydCwKCQkJdmVyYXJiZWl0ZXQgdW5kIGRpZXNlIGltIFJhaG1lbiBkZXIgZ2VzZXR6bGljaGVuIEJlc3RpbW11bmdlbiBhbiBkaWUKCQkJZsO8ciBkaWUgRW50c2NoZWlkdW5nIHp1c3TDpG5kaWdlIFN0ZWxsZSB3ZWl0ZXJsZWl0ZXQuIEViZW5zbyBiaW4gaWNoCgkJCW1pdCBkZXIgcmVjaHRza29uZm9ybWVuIERhdGVudmVyYXJiZWl0dW5nIHVuZCBTcGVpY2hlcnVuZyBkdXJjaCBkaWUKCQkJenVzdMOkbmRpZ2UgU3RlbGxlIGVpbnZlcnN0YW5kZW4uIE1pciBpc3QgYmVrYW5udCwgZGFzcyBpY2ggZGllCgkJCUVpbndpbGxpZ3VuZyBpbiBkaWUgVmVyYXJiZWl0dW5nIHVuZCDDnGJlcm1pdHRsdW5nIGplZGVyemVpdCBnZWdlbsO8YmVyCgkJCWRlbSBFaW5oZWl0bGljaGVyIEFuc3ByZWNocGFydG5lciBTY2hsZXN3aWctSG9sc3RlaW4sIFJldmVudGxvdWFsbGVlCgkJCTYsIDI0MTA1IEtpZWwgd2lkZXJydWZlbiBrYW5uLiBFaW4gV2lkZXJydWYgaXN0IGFiZXIgbnVyIHdpcmtzYW0gZsO8cgoJCQlkaWUgWnVrdW5mdC4gVmVyYXJiZWl0dW5nZW4sIGRpZSB2b3IgZGVtIFdpZGVycnVmIGVyZm9sZ3Qgc2luZCwgc2luZAoJCQlkYXZvbiBuaWNodCBiZXRyb2ZmZW4uIMOcYmVyIGRpZSBWZXJhcmJlaXR1bmcgbWVpbmVyIHBlcnNvbmVuYmV6b2dlbmVuCgkJCURhdGVuIHVuZCBkaWUgbWlyIG5hY2ggZGVuIGRhdGVuc2NodXR6cmVjaHRsaWNoZW4gUmVnZWx1bmdlbgoJCQl6dXN0ZWhlbmRlbiBBbnNwcsO8Y2hlIHVuZCBSZWNodGUgaGFiZSBpY2ggdW50ZXIgRGF0ZW5zY2h1dHplcmtsw6RydW5nCgkJCUtlbm50bmlzIGVybGFuZ3QuPC9iX2RhdGVuc2NodXR6PgoJCTxiX21pc3NicmF1Y2g+KiBNaXIgaXN0IGJla2FubnQsIGRhc3MgenVyIFZlcmZvbGd1bmcgd2lkZXJyZWNodGxpY2hlcgoJCQlOdXR6dW5nIGRpZSBEYXRlbiBtZWluZXMgenVyIERhdGVuZWluZ2FiZSBnZW51dHp0ZW4gRW5kZ2Vyw6R0ZXMKCQkJYXVmZ2V6ZWljaG5ldCB1bmQgdmVyd2VuZGV0IHdlcmRlbiBrw7ZubmVuLjwvYl9taXNzYnJhdWNoPgoJCTxwb2xpY3l1cmw+aHR0cDovL3dhZm14cGEwMDIuZHBhb3IuZGUvc2gvZGF0ZW5zY2h1dHovZGF0ZW5zY2h1dHplcmtsYWVydW5nRUFfZGUuZG9jPC9wb2xpY3l1cmw+Cgk8L2Vya2xhZXJ1bmdlbj4KCTxsb2dvdXJsPmh0dHA6Ly93YWZteHBhMDAyLmRwYW9yLmRlL3NoL2xvZ29zL2tvcGZfOTA2ODg3My5kb2M8L2xvZ291cmw+Cgk8Zm0+CgkJPGFuc3ByZWNocGFydG5lcj4KCQkJPGZpcm1lbm5hbWUgLz4KCQkJPGFucmVkZT5IZXJyPC9hbnJlZGU+CgkJCTx2b3JuYW1lPk1heDwvdm9ybmFtZT4KCQkJPGZhbWlsaWVubmFtZT5UZXN0ZXJtYW5uPC9mYW1pbGllbm5hbWU+CgkJCTxhbnNjaHJpZnQ+CgkJCQk8c3RyYXNzZT5Lw7ZuaWdzd2VnPC9zdHJhc3NlPgoJCQkJPGhhdXNudW1tZXI+NzQ8L2hhdXNudW1tZXI+CgkJCQk8cG9zdGZhY2ggLz4KCQkJCTxwb3N0bGVpdHphaGw+MjQ4Mzc8L3Bvc3RsZWl0emFobD4KCQkJCTxvcnQ+U2NobGVzd2lnPC9vcnQ+CgkJCQk8b3J0c3RlaWwgLz4KCQkJCTx6dXNhdHogLz4KCQkJCTxzdGFhdD5EZXV0c2NobGFuZDwvc3RhYXQ+CgkJCTwvYW5zY2hyaWZ0PgoJCQk8a29udGFrdD4KCQkJCTx0ZWxlZm9ubnVtbWVyPisgNDkgNDYyMSA5NjU0PC90ZWxlZm9ubnVtbWVyPgoJCQkJPG1vYmlsbnVtbWVyPis0OSAxMjM8L21vYmlsbnVtbWVyPgoJCQkJPHRlbGVmYXhudW1tZXI+KyA0OSA0NjIxIDk2NTQ8L3RlbGVmYXhudW1tZXI+CgkJCQk8ZW1haWxhZHJlc3NlPm1heC50ZXN0ZXJtYW5uQGdteC5kZTwvZW1haWxhZHJlc3NlPgoJCQkJPGRlbWFpbGFkcmVzc2U+bWF4LnRlc3Rlcm1hbm5AZ214LmRlLW1haWwuZGU8L2RlbWFpbGFkcmVzc2U+CgkJCTwva29udGFrdD4KCQk8L2Fuc3ByZWNocGFydG5lcj4KCQk8dmVyd2FsdHVuZ3NsZWlzdHVuZ2VuPgoJCQk8dmVyd2FsdHVuZ3NsZWlzdHVuZz4KCQkJCTxhdXNnZXdhZWhsdGVfenVzdGFlbmRpZ2VzdGVsbGU+CgkJCQkJPE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5JRD45NTM1NjY5PC9PcmdhbmlzYXRpb25zZWluaGVpdGVuSUQ+CgkJCQkJPE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz5LcmVpcwoJCQkJCQlTY2hsZXN3aWctRmxlbnNidXJnL0tyZWlzdmVyd2FsdHVuZyAtIEFsbGdlbWVpbmUKCQkJCQkJT3JkbnVuZ3NhbmdlbGVnZW5oZWl0ZW48L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz4KCQkJCTwvYXVzZ2V3YWVobHRlX3p1c3RhZW5kaWdlc3RlbGxlPgoJCQkJPEdlYmlldElEPjkwMDczMTQ8L0dlYmlldElEPgoJCQkJPEdlYmlldEJFWkVJQ0hOVU5HPlNjaGxlc3dpZzwvR2ViaWV0QkVaRUlDSE5VTkc+CgkJCQk8QW5saWVnZW5JRD44OTY2NjcxPC9BbmxpZWdlbklEPgoJCQkJPEFubGllZ2VuQkVaRUlDSE5VTkc+V2FmZmVuc2NoZWluIC8gS2xlaW5lciBXYWZmZW5zY2hlaW48L0FubGllZ2VuQkVaRUlDSE5VTkc+CgkJCQk8bGVpa2FLRVlMSVNUPjk5MDg5MDA4MDAwMDAwOzk5MDg5MDA4MDAxMDAwPC9sZWlrYUtFWUxJU1Q+CgkJCQk8bGVpa2FCRVpFSUNITlVORyAvPgoJCQk8L3ZlcndhbHR1bmdzbGVpc3R1bmc+CgkJPC92ZXJ3YWx0dW5nc2xlaXN0dW5nZW4+Cgk8L2ZtPgo8L215Rm9ybT4=</content> - <contentType>text/xml</contentType> - <id>myForm-xml</id> - <name>XML-Daten.xml</name> - </attachments> - <caller /> - <client>sh-dev</client> - <clientId>sh-dev</clientId> - <customer>Kiel</customer> - <customerId>Kiel</customerId> - <form>SimpleFormSendetAnTestServer</form> - <formId>SimpleFormSendetAnTestServer</formId> - <id>20221212092912345678</id> - <primaryDataAttachmentId>myForm-xml</primaryDataAttachmentId> - <sender>intelliform.ozg-sh.de</sender> - <timestamp>2022-12-12T09:30:29.443Z</timestamp> - <nameid>nameIdAsPostfachIdV1</nameid> - <username /> - </data> - </ns2:deposit> - </soap:Body> -</soap:Envelope> diff --git a/intelliform-adapter/src/test/resources/itcase/XML-Daten-1-other_name_SoapRequest.xml b/intelliform-adapter/src/test/resources/itcase/XML-Daten-1-other_name_SoapRequest.xml deleted file mode 100644 index 14458c0a..00000000 --- a/intelliform-adapter/src/test/resources/itcase/XML-Daten-1-other_name_SoapRequest.xml +++ /dev/null @@ -1,30 +0,0 @@ -<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> - <soap:Body> - <ns2:deposit xmlns:ns2="http://xmlns.cit.de/intelliform/2009/webservices/backend"> - <data> - <attachments> - <attributes> - <key>X-IntelliForm-Signed</key> - <value>false</value> - </attributes> - <content>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG15Rm9ybSB4bWxuczpwZGY9Imh0dHA6Ly94bWxucy5jaXQuZGUvYXNzaXN0YW50cy9wZGYiCgl4bWxuczp0PSJodHRwOi8veG1sbnMuY2l0LmRlL2ludGVsbGlmb3JtL3RyYW5zYWN0aW9uIgoJdDppZD0iMjAyMDExMTgzNjU2NzA4NjYxMDEiIHQ6dGltZXN0YW1wPSIyMDIwLTExLTE4VDA5OjA5OjI3LjYyN1oiCgl0OnNlbmRlcj0iYWZtLnNjaGxlc3dpZy1ob2xzdGVpbi5kZSIKCXQ6Zm9ybT0iS2xlaW5lciBXYWZmZW5zY2hlaW4gZ2VtLiDCpyAxMCBBYnMuIDQgU2F0eiA0IFdhZmZlbmdlc2V0eiAoV2FmZkcpIgoJdDpmb3JtLWlkPSJ3YWZmZW4va2xlaW5lcldhZmZlbnNjaGVpbiIKCXQ6Y3VzdG9tZXI9IkVpbmhlaXRsaWNoZXIgQW5zcHJlY2hwYXJ0bmVyIiB0OmN1c3RvbWVyLWlkPSJlYS1zaCIKCXQ6Y2xpZW50PSJTY2hsZXN3aWctSG9sc3RlaW4iIHQ6Y2xpZW50LWlkPSJsYW5kIj4KCQoJPHp1c3RhZW5kaWdlc3RlbGxlPgoJCTxPcmdhbmlzYXRpb25zZWluaGVpdGVuSUQ+MDgxNTwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbklEPgoJPC96dXN0YWVuZGlnZXN0ZWxsZT4KPC9teUZvcm0+</content> - <contentType>text/xml</contentType> - <id>myForm-xml</id> - <name>anderer-name-Daten.xml</name> - </attachments> - <caller /> - <client>sh-dev</client> - <clientId>sh-dev</clientId> - <customer>Kiel</customer> - <customerId>Kiel</customerId> - <form>SimpleFormSendetAnHomeServer</form> - <formId>SimpleFormSendetAnHomeServer</formId> - <id>20210415307020414701</id> - <primaryDataAttachmentId>myForm-xml</primaryDataAttachmentId> - <sender>intelliform.by.kop-cloud.de</sender> - <timestamp>2021-04-15T08:33:39.443Z</timestamp> - <username /> - </data> - </ns2:deposit> - </soap:Body> -</soap:Envelope> \ No newline at end of file diff --git a/intelliform-adapter/src/test/resources/junit-platform.properties b/intelliform-adapter/src/test/resources/junit-platform.properties deleted file mode 100644 index 1cebb76d..00000000 --- a/intelliform-adapter/src/test/resources/junit-platform.properties +++ /dev/null @@ -1 +0,0 @@ -junit.jupiter.extensions.autodetection.enabled = true \ No newline at end of file diff --git a/intelliform-adapter/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker b/intelliform-adapter/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker deleted file mode 100644 index ca6ee9ce..00000000 --- a/intelliform-adapter/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker +++ /dev/null @@ -1 +0,0 @@ -mock-maker-inline \ No newline at end of file diff --git a/pom.xml b/pom.xml index 065dc6a0..68d57529 100644 --- a/pom.xml +++ b/pom.xml @@ -1,211 +1,256 @@ -<?xml version="1.0"?> -<!-- - - Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - Ministerpräsidenten des Landes Schleswig-Holstein - Staatskanzlei - Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - - Lizenziert unter der EUPL, Version 1.2 oder - sobald - diese von der Europäischen Kommission genehmigt wurden - - Folgeversionen der EUPL ("Lizenz"); - Sie dürfen dieses Werk ausschließlich gemäß - dieser Lizenz nutzen. - Eine Kopie der Lizenz finden Sie hier: - - https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - - Sofern nicht durch anwendbare Rechtsvorschriften - gefordert oder in schriftlicher Form vereinbart, wird - die unter der Lizenz verbreitete Software "so wie sie - ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - ausdrücklich oder stillschweigend - verbreitet. - Die sprachspezifischen Genehmigungen und Beschränkungen - unter der Lizenz sind dem Lizenztext zu entnehmen. - ---> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> - +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>de.ozgcloud.common</groupId> <artifactId>ozgcloud-common-parent</artifactId> - <version>4.7.0</version> - <relativePath/> <!-- lookup parent from repository --> + <version>4.6.0</version> </parent> <groupId>de.ozgcloud.eingang</groupId> - <artifactId>eingang-manager</artifactId> + <artifactId>formsolutions-adapter</artifactId> <version>2.16.0-SNAPSHOT</version> - <packaging>pom</packaging> - <name>OZG-Cloud Eingang Manager</name> - - <modules> - <module>common</module> - <module>formsolutions-adapter</module> - <module>intelliform-adapter</module> - <module>router</module> - <module>forwarder</module> - <module>semantik-adapter</module> - <module>formcycle-adapter</module> - <module>xta-adapter</module> - <module>enterprise-adapter</module> - <module>fim-adapter</module> - </modules> - <properties> - <vorgang-manager.version>2.10.0</vorgang-manager.version> - <zufi-manager.version>1.2.0</zufi-manager.version> + <name>FormSolutions-Adapter</name> + <description>Eingang-Adapter für FormSolutions</description> + <packaging>jar</packaging> - <jsoup.version>1.14.3</jsoup.version> - <xmlschema.version>2.3.0</xmlschema.version> + <properties> + <eingang-manager.version>2.15.0</eingang-manager.version> + <formsolutions-semantik.version>0.2.0-SNAPSHOT</formsolutions-semantik.version> - <!-- plugins --> - <jaxb2-plugin.version>0.15.2</jaxb2-plugin.version> <jaxb3-plugin.version>0.15.0</jaxb3-plugin.version> - <mojo-jaxb2-plugin.version>3.1.0</mojo-jaxb2-plugin.version> + <xmlschema.version>2.3.0</xmlschema.version> </properties> + <dependencies> + <!-- OZG-Cloud --> + <dependency> + <groupId>de.ozgcloud.eingang</groupId> + <artifactId>common</artifactId> + <version>${eingang-manager.version}</version> + </dependency> + <dependency> + <groupId>de.ozgcloud.eingang</groupId> + <artifactId>formsolutions-semantik</artifactId> + <version>${formsolutions-semantik.version}</version> + </dependency> + <dependency> + <groupId>de.ozgcloud.eingang</groupId> + <artifactId>semantik-adapter</artifactId> + <version>${eingang-manager.version}</version> + </dependency> - <dependencyManagement> - <dependencies> - - <!-- own projects --> - <dependency> - <groupId>de.ozgcloud.eingang</groupId> - <artifactId>common</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>de.ozgcloud.eingang</groupId> - <artifactId>router</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>de.ozgcloud.eingang</groupId> - <artifactId>semantik-adapter</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>de.ozgcloud.eingang</groupId> - <artifactId>fim-adapter</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>de.ozgcloud.vorgang</groupId> - <artifactId>vorgang-manager-interface</artifactId> - <version>${vorgang-manager.version}</version> - </dependency> - <dependency> - <groupId>de.ozgcloud.vorgang</groupId> - <artifactId>vorgang-manager-utils</artifactId> - <version>${vorgang-manager.version}</version> - </dependency> - <dependency> - <groupId>de.ozgcloud.zufi</groupId> - <artifactId>zufi-manager-interface</artifactId> - <version>${zufi-manager.version}</version> - </dependency> - - <dependency> - <groupId>org.jsoup</groupId> - <artifactId>jsoup</artifactId> - <version>${jsoup.version}</version> - </dependency> - - <dependency> - <groupId>org.apache.ws.xmlschema</groupId> - <artifactId>xmlschema-core</artifactId> - <version>${xmlschema.version}</version> - </dependency> - - <!-- Test --> - <dependency> - <groupId>de.ozgcloud.eingang</groupId> - <artifactId>common</artifactId> - <type>test-jar</type> - <scope>test</scope> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>de.ozgcloud.vorgang</groupId> - <artifactId>vorgang-manager-utils</artifactId> - <version>${vorgang-manager.version}</version> - <type>test-jar</type> - <scope>test</scope> - </dependency> - </dependencies> - </dependencyManagement> + <dependency> + <groupId>org.mapstruct</groupId> + <artifactId>mapstruct</artifactId> + </dependency> - <build> - <pluginManagement> - <plugins> - <plugin> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-maven-plugin</artifactId> - <configuration> - <mainClass>de.ozgcloud.eingang.Application</mainClass> - </configuration> - </plugin> - - <!-- tag::webservice[] --> - <plugin> - <groupId>org.codehaus.mojo</groupId> - <artifactId>jaxb2-maven-plugin</artifactId> - <version>${mojo-jaxb2-plugin.version} </version> - <executions> - <execution> - <id>xjc</id> - <goals> - <goal>xjc</goal> - </goals> - </execution> - </executions> - </plugin> - <plugin> - <groupId>com.evolvedbinary.maven.jvnet</groupId> - <artifactId>jaxb30-maven-plugin</artifactId> - <version>${jaxb3-plugin.version}</version> - <executions> - <execution> - <goals> - <goal>generate</goal> - </goals> - </execution> - </executions> - </plugin> - <plugin> - <groupId>org.jvnet.jaxb2.maven2</groupId> - <artifactId>maven-jaxb2-plugin</artifactId> - <version>${jaxb2-plugin.version}</version> - <executions> - <execution> - <goals> - <goal>generate</goal> - </goals> - </execution> - </executions> - </plugin> - <!-- end::webservice --> - </plugins> - </pluginManagement> + <!-- Spring --> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-web-services</artifactId> + </dependency> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-actuator</artifactId> + </dependency> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-json</artifactId> + </dependency> + + <!-- tag::springws[] --> + <dependency> + <groupId>wsdl4j</groupId> + <artifactId>wsdl4j</artifactId> + </dependency> + + <dependency> + <groupId>org.apache.ws.xmlschema</groupId> + <artifactId>xmlschema-core</artifactId> + <version>${xmlschema.version}</version> + </dependency> + <!-- end::springws[] --> + + <!-- Dev --> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-devtools</artifactId> + <scope>runtime</scope> + </dependency> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-configuration-processor</artifactId> + <optional>true</optional> + </dependency> + <dependency> + <groupId>org.projectlombok</groupId> + <artifactId>lombok</artifactId> + </dependency> + + <!-- test --> + <dependency> + <groupId>de.ozgcloud.common</groupId> + <artifactId>ozgcloud-common-test</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>de.ozgcloud.eingang</groupId> + <artifactId>common</artifactId> + <version>${eingang-manager.version}</version> + <type>test-jar</type> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-test</artifactId> + <scope>test</scope> + <exclusions> + <exclusion> + <groupId>org.junit.vintage</groupId> + <artifactId>junit-vintage-engine</artifactId> + </exclusion> + </exclusions> + </dependency> + + <!-- commons --> + <dependency> + <groupId>org.apache.commons</groupId> + <artifactId>commons-lang3</artifactId> + </dependency> + + <!-- used by generated code --> + <!-- @Nullable annotation --> + <dependency> + <groupId>com.google.code.findbugs</groupId> + <artifactId>jsr305</artifactId> + </dependency> + </dependencies> + + <build> + <finalName>${project.artifactId}</finalName> <plugins> + <!-- tag::wsdl/xsd[] --> + <plugin> + <groupId>com.evolvedbinary.maven.jvnet</groupId> + <artifactId>jaxb30-maven-plugin</artifactId> + <version>${jaxb3-plugin.version}</version> + <executions> + <execution> + <goals> + <goal>generate</goal> + </goals> + </execution> + </executions> + <configuration> + <schemaLanguage>WSDL</schemaLanguage> + <generatePackage>de.ozgcloud.eingang.formsolutions</generatePackage> + <schemas> + <schema> + <fileset> + <directory>${basedir}/src/main/resources/wsdl</directory> + <includes> + <include>*.wsdl</include> + </includes> + </fileset> + </schema> + </schemas> + <schemaLanguage>WSDL</schemaLanguage> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-failsafe-plugin</artifactId> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-plugin</artifactId> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-compiler-plugin</artifactId> + </plugin> + <plugin> + <groupId>org.jacoco</groupId> + <artifactId>jacoco-maven-plugin</artifactId> + </plugin> + <plugin> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-maven-plugin</artifactId> + <configuration> + <mainClass>de.ozgcloud.eingang.Application</mainClass> + </configuration> + <executions> + <execution> + <phase>install</phase> + <goals> + <goal>build-image-no-fork</goal> + </goals> + </execution> + </executions> + </plugin> </plugins> </build> - <distributionManagement> - <repository> - <id>ozg-nexus</id> - <name>ozg-releases</name> - <url>https://nexus.ozg-sh.de/repository/ozg-releases/</url> - </repository> - <snapshotRepository> - <id>ozg-snapshots-nexus</id> - <name>ozg-snapshots</name> - <url>https://nexus.ozg-sh.de/repository/ozg-snapshots/</url> - </snapshotRepository> - </distributionManagement> - + <profiles> + <!-- Deployment Profiles --> + <profile> + <id>gitlab-deploy</id> + <activation> + <activeByDefault>false</activeByDefault> + </activation> + <build> + <plugins> + <plugin> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-maven-plugin</artifactId> + <configuration> + <image> + <name>${CI_REGISTRY_IMAGE}/${project.artifactId}:${project.version}</name> + <publish>true</publish> + </image> + <docker> + <publishRegistry> + <url>${CI_REGISTRY}</url> + <username>${CI_REGISTRY_USER}</username> + <password>${CI_REGISTRY_PASSWORD}</password> + </publishRegistry> + </docker> + </configuration> + </plugin> + </plugins> + </build> + </profile> + <profile> + <id>nexus-deploy</id> + <activation> + <activeByDefault>false</activeByDefault> + </activation> + <build> + <plugins> + <plugin> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-maven-plugin</artifactId> + <configuration> + <image> + <name>docker.ozg-sh.de/${project.artifactId}:${project.version}</name> + <publish>true</publish> + </image> + <docker> + <publishRegistry> + <url>docker.ozg-sh.de</url> + <username>${NEXUS_USER}</username> + <password>${NEXUS_PASSWORD}</password> + </publishRegistry> + </docker> + </configuration> + </plugin> + </plugins> + </build> + </profile> + </profiles> </project> diff --git a/release-erstellen.sh b/release-erstellen.sh deleted file mode 100755 index dfe2a755..00000000 --- a/release-erstellen.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/sh - -if [ "$#" -ne 1 ]; then - echo "Aufruf: ozg-release-erstellen.sh JA" - echo "Als Parameter bitte 'JA' eintragen zur Sicherheit" - exit 1 -fi - - -## alle -SNAPSHOT in pom.xmls entfernen -SED_PARAMS="-i" -if [[ "$OSTYPE" =~ ^darwin ]]; then - SED_PARAMS="$SED_PARAMS '' -e" -fi -find . -name pom.xml -exec sed $SED_PARAMS 's/-SNAPSHOT//g' {} + - -## release version auslesen -NEWVERSION=$(xmlstarlet sel -N w="http://maven.apache.org/POM/4.0.0" -t -v '//w:project/w:version' -n pom.xml) - -echo -echo "NEXT STEPS:" -echo "***********" -echo "Änderungen prüfen" -echo "git commit -a -m 'release version "$NEWVERSION"'" -echo "git push" -echo "git tag "$NEWVERSION -echo "git push --tags" diff --git a/release-startdev.sh b/release-startdev.sh deleted file mode 100755 index 5d6a39e4..00000000 --- a/release-startdev.sh +++ /dev/null @@ -1,63 +0,0 @@ -#!/bin/bash - -#set -x - -if [ "$#" -ne 1 ]; then - echo "Aufruf: ozg-release-startdev.sh NEWVERSION" - exit 1 -fi - -NEWVERSION=$1 - -echo - -# pom.xml:main -> project.version setzen -# projectname/pom.xml:parent -> project.parent.version setzen -# projectname/pom.xml:parent,main -> project.parent.version und project.version setzen -# -PROJECTS="pom.xml:main - common/pom.xml:parent - enterprise-adapter/pom.xml:parent - formcycle-adapter/formcycle-adapter-impl/pom.xml:parent - formcycle-adapter/formcycle-adapter-interface/pom.xml:main - formcycle-adapter/pom.xml:parent - formsolutions-adapter/pom.xml:parent - xta-adapter/pom.xml:parent - forwarder/pom.xml:parent - intelliform-adapter/pom.xml:parent - router/pom.xml:parent - semantik-adapter/pom.xml:parent - " - -for PROJECT in $PROJECTS; -do - POMFILE=$(echo $PROJECT | cut -d':' -f1) - ACTIONS=$(echo $PROJECT | cut -d':' -f2) - - ## Auf SNAPSHOT Versionen testen - if fgrep -q "SNAPSHOT" $POMFILE; then - RED='\033[0;31m' - NC='\033[0m' - echo "${RED}ERROR: Datei "$POMFILE" enthält noch SNAPSHOT Versionen, das sollte hier nicht passieren.${NC}" - exit 1 - fi - - ## Versionen setzen - if [[ $ACTIONS == *"main"* ]] ; then - xmlstarlet ed --pf -L -N w="http://maven.apache.org/POM/4.0.0" -u '//w:project/w:version' -v $NEWVERSION $POMFILE - fi - - if [[ $ACTIONS == *"parent"* ]]; then - xmlstarlet ed --pf -L -N w="http://maven.apache.org/POM/4.0.0" -u '//w:project/w:parent/w:version' -v $NEWVERSION $POMFILE - fi -done - - - -echo -echo "NEXT STEPS:" -echo "***********" -echo "Änderungen prüfen" -echo "git commit -a -m 'start development "$NEWVERSION"'" -echo "git push" - diff --git a/router/pom.xml b/router/pom.xml deleted file mode 100644 index 695c7e22..00000000 --- a/router/pom.xml +++ /dev/null @@ -1,113 +0,0 @@ -<?xml version="1.0"?> -<!-- - - Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - Ministerpräsidenten des Landes Schleswig-Holstein - Staatskanzlei - Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - - Lizenziert unter der EUPL, Version 1.2 oder - sobald - diese von der Europäischen Kommission genehmigt wurden - - Folgeversionen der EUPL ("Lizenz"); - Sie dürfen dieses Werk ausschließlich gemäß - dieser Lizenz nutzen. - Eine Kopie der Lizenz finden Sie hier: - - https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - - Sofern nicht durch anwendbare Rechtsvorschriften - gefordert oder in schriftlicher Form vereinbart, wird - die unter der Lizenz verbreitete Software "so wie sie - ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - ausdrücklich oder stillschweigend - verbreitet. - Die sprachspezifischen Genehmigungen und Beschränkungen - unter der Lizenz sind dem Lizenztext zu entnehmen. - ---> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>de.ozgcloud.eingang</groupId> - <artifactId>eingang-manager</artifactId> - <version>2.16.0-SNAPSHOT</version> - <relativePath>../</relativePath> - </parent> - - <artifactId>router</artifactId> - <name>Eingangs Adapter - Router</name> - - <dependencies> - <!-- own Projects --> - <dependency> - <groupId>de.ozgcloud.eingang</groupId> - <artifactId>common</artifactId> - </dependency> - <dependency> - <groupId>de.ozgcloud.vorgang</groupId> - <artifactId>vorgang-manager-interface</artifactId> - </dependency> - <dependency> - <groupId>de.ozgcloud.vorgang</groupId> - <artifactId>vorgang-manager-utils</artifactId> - </dependency> - <dependency> - <groupId>de.ozgcloud.zufi</groupId> - <artifactId>zufi-manager-interface</artifactId> - </dependency> - - <!-- spring --> - <dependency> - <groupId>net.devh</groupId> - <artifactId>grpc-client-spring-boot-starter</artifactId> - </dependency> - <dependency> - <groupId>io.grpc</groupId> - <artifactId>grpc-inprocess</artifactId> - </dependency> - - <!-- Tools --> - <dependency> - <groupId>org.apache.commons</groupId> - <artifactId>commons-lang3</artifactId> - </dependency> - - <!-- Dev --> - <dependency> - <groupId>org.projectlombok</groupId> - <artifactId>lombok</artifactId> - </dependency> - - <!-- Test --> - <dependency> - <groupId>de.ozgcloud.eingang</groupId> - <artifactId>common</artifactId> - <type>test-jar</type> - <scope>test</scope> - </dependency> - <dependency> - <groupId>de.ozgcloud.vorgang</groupId> - <artifactId>vorgang-manager-utils</artifactId> - <type>test-jar</type> - <scope>test</scope> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.jacoco</groupId> - <artifactId>jacoco-maven-plugin</artifactId> - </plugin> - - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-surefire-plugin</artifactId> - </plugin> - - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-failsafe-plugin</artifactId> - </plugin> - </plugins> - </build> -</project> diff --git a/router/src/main/java/de/ozgcloud/eingang/common/zufi/OrganisationsEinheit.java b/router/src/main/java/de/ozgcloud/eingang/common/zufi/OrganisationsEinheit.java deleted file mode 100644 index 6b02d545..00000000 --- a/router/src/main/java/de/ozgcloud/eingang/common/zufi/OrganisationsEinheit.java +++ /dev/null @@ -1,16 +0,0 @@ -package de.ozgcloud.eingang.common.zufi; - -import lombok.Builder; -import lombok.Getter; -import lombok.ToString; - -@ToString -@Getter -@Builder -class OrganisationsEinheit { - - private String id; - private String name; - private String synonyme; - private String vorgangManagerAddress; -} \ No newline at end of file diff --git a/router/src/main/java/de/ozgcloud/eingang/common/zufi/OrganisationsEinheitMapper.java b/router/src/main/java/de/ozgcloud/eingang/common/zufi/OrganisationsEinheitMapper.java deleted file mode 100644 index ad048c2c..00000000 --- a/router/src/main/java/de/ozgcloud/eingang/common/zufi/OrganisationsEinheitMapper.java +++ /dev/null @@ -1,11 +0,0 @@ -package de.ozgcloud.eingang.common.zufi; - -import org.mapstruct.Mapper; - -import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcOrganisationsEinheit; - -@Mapper -interface OrganisationsEinheitMapper { - - OrganisationsEinheit fromGrpc(GrpcOrganisationsEinheit organisationsEinheit); -} \ No newline at end of file diff --git a/router/src/main/java/de/ozgcloud/eingang/common/zufi/OrganisationsEinheitRemoteService.java b/router/src/main/java/de/ozgcloud/eingang/common/zufi/OrganisationsEinheitRemoteService.java deleted file mode 100644 index d7ec3990..00000000 --- a/router/src/main/java/de/ozgcloud/eingang/common/zufi/OrganisationsEinheitRemoteService.java +++ /dev/null @@ -1,24 +0,0 @@ -package de.ozgcloud.eingang.common.zufi; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import de.ozgcloud.eingang.Application; -import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcOrganisationsEinheitGetRequest; -import de.ozgcloud.zufi.grpc.organisationseinheit.OrganisationsEinheitServiceGrpc.OrganisationsEinheitServiceBlockingStub; -import net.devh.boot.grpc.client.inject.GrpcClient; - -@Service -class OrganisationsEinheitRemoteService { - - @GrpcClient(Application.ZUFI_MANAGER_GRPC_CLIENT) - private OrganisationsEinheitServiceBlockingStub serviceStub; - @Autowired - private OrganisationsEinheitMapper mapper; - - public OrganisationsEinheit getById(String id) { - var response = serviceStub.getById(GrpcOrganisationsEinheitGetRequest.newBuilder().setId(id).build()); - - return mapper.fromGrpc(response.getOrganisationsEinheit()); - } -} diff --git a/router/src/main/java/de/ozgcloud/eingang/common/zufi/ZufiService.java b/router/src/main/java/de/ozgcloud/eingang/common/zufi/ZufiService.java deleted file mode 100644 index 7992033c..00000000 --- a/router/src/main/java/de/ozgcloud/eingang/common/zufi/ZufiService.java +++ /dev/null @@ -1,16 +0,0 @@ -package de.ozgcloud.eingang.common.zufi; - -import org.springframework.stereotype.Service; - -import lombok.RequiredArgsConstructor; - -@RequiredArgsConstructor -@Service -public class ZufiService { - - private final OrganisationsEinheitRemoteService remoteService; - - public String getVorgangManagerUrl(String organisationsEinheitId) { - return remoteService.getById(organisationsEinheitId).getVorgangManagerAddress(); - } -} \ No newline at end of file diff --git a/router/src/main/java/de/ozgcloud/eingang/router/CallContext.java b/router/src/main/java/de/ozgcloud/eingang/router/CallContext.java deleted file mode 100644 index 9dc38d03..00000000 --- a/router/src/main/java/de/ozgcloud/eingang/router/CallContext.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.router; - -import jakarta.validation.constraints.NotNull; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Getter; -import lombok.ToString; - -@ToString -@Getter -@Builder -@AllArgsConstructor // https://mapstruct.org/documentation/stable/reference/html/#mapping-with-builders -public class CallContext { - - @NotNull - private String client; -} diff --git a/router/src/main/java/de/ozgcloud/eingang/router/ClosableStub.java b/router/src/main/java/de/ozgcloud/eingang/router/ClosableStub.java deleted file mode 100644 index ba15eaff..00000000 --- a/router/src/main/java/de/ozgcloud/eingang/router/ClosableStub.java +++ /dev/null @@ -1,44 +0,0 @@ -package de.ozgcloud.eingang.router; - -import java.util.Objects; -import java.util.concurrent.TimeUnit; - -import de.ozgcloud.eingang.common.errorhandling.TechnicalException; -import io.grpc.ManagedChannel; -import io.grpc.stub.AbstractStub; -import lombok.Builder; - -@Builder -class ClosableStub<T extends AbstractStub<?>> implements ManagableStub<T> { - - private static final int SHUTDOWN_TIME_IN_SEC = 3; - - private T stub; - private ManagedChannel channel; - - @Override - public T get() { - return stub; - } - - public void close() { - if (Objects.nonNull(stub)) { - shutdownChannel(); - stub = null; - } - } - - private void shutdownChannel() { - try { - channel.shutdown().awaitTermination(ClosableStub.SHUTDOWN_TIME_IN_SEC, TimeUnit.SECONDS); - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); - throw new TechnicalException("Error shutting down grpc channel.", e); - } - } - - @Override - public boolean isShutdownable() { - return true; - } -} \ No newline at end of file diff --git a/router/src/main/java/de/ozgcloud/eingang/router/ConsistentStub.java b/router/src/main/java/de/ozgcloud/eingang/router/ConsistentStub.java deleted file mode 100644 index 25c54350..00000000 --- a/router/src/main/java/de/ozgcloud/eingang/router/ConsistentStub.java +++ /dev/null @@ -1,20 +0,0 @@ -package de.ozgcloud.eingang.router; - -import io.grpc.stub.AbstractStub; -import lombok.Builder; - -@Builder -class ConsistentStub<T extends AbstractStub<?>> implements ManagableStub<T> { - - private T stub; - - @Override - public T get() { - return stub; - } - - @Override - public boolean isShutdownable() { - return false; - } -} \ No newline at end of file diff --git a/router/src/main/java/de/ozgcloud/eingang/router/FileIdMapper.java b/router/src/main/java/de/ozgcloud/eingang/router/FileIdMapper.java deleted file mode 100644 index 1049ab85..00000000 --- a/router/src/main/java/de/ozgcloud/eingang/router/FileIdMapper.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.router; - -import org.mapstruct.Mapper; - -import de.ozgcloud.common.binaryfile.FileId; - -@Mapper -interface FileIdMapper { - - default FileId toFileId(String fileId) { - return FileId.from(fileId); - } - - default String toString(FileId fileId) { - return fileId.toString(); - } -} diff --git a/router/src/main/java/de/ozgcloud/eingang/router/GrpcClientsProperties.java b/router/src/main/java/de/ozgcloud/eingang/router/GrpcClientsProperties.java deleted file mode 100644 index 376bdc14..00000000 --- a/router/src/main/java/de/ozgcloud/eingang/router/GrpcClientsProperties.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.router; - -import java.util.Map; - -import jakarta.validation.constraints.NotEmpty; - -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.context.annotation.Configuration; -import org.springframework.validation.annotation.Validated; - -import lombok.Getter; -import lombok.Setter; - -@Getter -@Setter -@Configuration -@Validated -@ConfigurationProperties(prefix = "grpc") -public class GrpcClientsProperties { - - private Map<String, ClientProperty> client; - - @Getter - @Setter - static class ClientProperty { - @NotEmpty - private String address; - private String negotiationType = "TLS"; - } - -} diff --git a/router/src/main/java/de/ozgcloud/eingang/router/GrpcEingangMapper.java b/router/src/main/java/de/ozgcloud/eingang/router/GrpcEingangMapper.java deleted file mode 100644 index c69b8397..00000000 --- a/router/src/main/java/de/ozgcloud/eingang/router/GrpcEingangMapper.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.router; - -import java.util.Optional; -import java.util.UUID; - -import org.mapstruct.CollectionMappingStrategy; -import org.mapstruct.Mapper; -import org.mapstruct.Mapping; -import org.mapstruct.NullValueCheckStrategy; -import org.mapstruct.NullValuePropertyMappingStrategy; -import org.mapstruct.ReportingPolicy; - -import de.ozgcloud.eingang.common.formdata.Antragsteller; -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; -import de.ozgcloud.eingang.common.formdata.ZustaendigeStelle; -import de.ozgcloud.vorgang.common.grpc.GrpcFormDataMapper; -import de.ozgcloud.vorgang.vorgang.GrpcAntragsteller; -import de.ozgcloud.vorgang.vorgang.GrpcEingang; -import de.ozgcloud.vorgang.vorgang.GrpcIncomingFileGroup; -import de.ozgcloud.vorgang.vorgang.GrpcZustaendigeStelle; - -@Mapper(unmappedTargetPolicy = ReportingPolicy.WARN, // - unmappedSourcePolicy = ReportingPolicy.WARN, // - nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE, // - nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS, // - collectionMappingStrategy = CollectionMappingStrategy.ADDER_PREFERRED, // - uses = { GrpcFormDataMapper.class, ServiceKontoMapper.class }) -public interface GrpcEingangMapper { - - @Mapping(target = "antragsteller.otherData", source = "formData.antragsteller.data") - @Mapping(target = "attachmentsList", source = "formData.attachments") - @Mapping(target = "representationsList", source = "formData.representations") - @Mapping(target = "zustaendigeStelle", expression = "java( toZustaendigeStelle(getZustaendigeStelle(formData, organisationsEinheitenId)) )") - GrpcEingang toEingang(FormData formData, Optional<String> organisationsEinheitenId); - - default ZustaendigeStelle getZustaendigeStelle(FormData formData, Optional<String> organisationsEinheitenId) { - return organisationsEinheitenId.flatMap(oeId -> formData.getZustaendigeStelles().stream() - .filter(zustaendigeStelle -> zustaendigeStelle.getOrganisationseinheitenId().equals(oeId)) - .findFirst()) - .orElseGet(() -> ZustaendigeStelle.builder().build()); - } - - @Mapping(source = "files", target = "filesList") - GrpcIncomingFileGroup map(IncomingFileGroup fileGroup); - - @Mapping(target = "mergeFrom", ignore = true) - @Mapping(target = "clearField", ignore = true) - @Mapping(target = "clearOneof", ignore = true) - @Mapping(target = "mergeUnknownFields", ignore = true) - @Mapping(target = "bezeichnungBytes", ignore = true) - @Mapping(target = "emailBytes", ignore = true) - @Mapping(target = "organisationseinheitenIdBytes", ignore = true) - @Mapping(target = "unknownFields", ignore = true) - @Mapping(target = "allFields", ignore = true) - GrpcZustaendigeStelle toZustaendigeStelle(ZustaendigeStelle zustaendigeStelle); - - GrpcAntragsteller toAntragsteller(Antragsteller antragsteller); - - default String uuidToString(UUID id) { - return id.toString(); - } - - // FIXME map representations and attachments - @Mapping(target = "attachment", ignore = true) - @Mapping(target = "attachments", ignore = true) - @Mapping(target = "representation", ignore = true) - @Mapping(target = "representations", ignore = true) - // TOASK: Wird aktuell nicht gebraucht, trotzdem implementiern? - @Mapping(target = "header.serviceKonto", ignore = true) - FormData toFormData(GrpcEingang eingang); - -} diff --git a/router/src/main/java/de/ozgcloud/eingang/router/ManagableStub.java b/router/src/main/java/de/ozgcloud/eingang/router/ManagableStub.java deleted file mode 100644 index bce38696..00000000 --- a/router/src/main/java/de/ozgcloud/eingang/router/ManagableStub.java +++ /dev/null @@ -1,8 +0,0 @@ -package de.ozgcloud.eingang.router; - -public interface ManagableStub<T> { - - T get(); - - boolean isShutdownable(); -} \ No newline at end of file diff --git a/router/src/main/java/de/ozgcloud/eingang/router/ServiceKontoMapper.java b/router/src/main/java/de/ozgcloud/eingang/router/ServiceKontoMapper.java deleted file mode 100644 index d822731a..00000000 --- a/router/src/main/java/de/ozgcloud/eingang/router/ServiceKontoMapper.java +++ /dev/null @@ -1,54 +0,0 @@ -package de.ozgcloud.eingang.router; - -import java.util.List; -import java.util.Map; -import java.util.Optional; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import de.ozgcloud.eingang.common.formdata.PostfachAddressIdentifier; -import de.ozgcloud.eingang.common.formdata.ServiceKonto; -import de.ozgcloud.eingang.common.formdata.StringBasedIdentifier; -import de.ozgcloud.eingang.common.formdata.ServiceKonto.PostfachAddress; -import de.ozgcloud.vorgang.common.GrpcObject; -import de.ozgcloud.vorgang.common.grpc.GrpcObjectMapper; -import de.ozgcloud.vorgang.vorgang.GrpcPostfachAddress; -import de.ozgcloud.vorgang.vorgang.GrpcServiceKonto; - -@Component -class ServiceKontoMapper { - - static final String DEFAULT_TRUST_LEVEL = "STORK-QAA-Level-1"; - - @Autowired - private GrpcObjectMapper grpcObjectMapper; - - public GrpcServiceKonto toServiceKonto(ServiceKonto serviceKonto) { - return GrpcServiceKonto.newBuilder() - .setType(serviceKonto.getType()) - .addAllPostfachAddresses(getPostfachAddresses(serviceKonto)) - .setTrustLevel(Optional.ofNullable(serviceKonto.getTrustLevel()).orElse(DEFAULT_TRUST_LEVEL)) - .build(); - } - - private List<GrpcPostfachAddress> getPostfachAddresses(ServiceKonto serviceKonto) { - return serviceKonto.getPostfachAddresses().stream().map(this::fromPostfachAddress).toList(); - } - - private GrpcPostfachAddress fromPostfachAddress(PostfachAddress postfachAddress) { - return GrpcPostfachAddress.newBuilder() - .setVersion(postfachAddress.getVersion()) - .setType(postfachAddress.getType()) - .setIdentifier(mapFromIdentifier(postfachAddress.getIdentifier())) - .build(); - } - - GrpcObject mapFromIdentifier(PostfachAddressIdentifier identifier) { - return grpcObjectMapper.fromMap(Map.of(StringBasedIdentifier.POSTFACH_ID_FIELD, getStringBasedValue(identifier))); - } - - private String getStringBasedValue(PostfachAddressIdentifier identifier) { - return ((StringBasedIdentifier) identifier).getPostfachId(); - } -} \ No newline at end of file diff --git a/router/src/main/java/de/ozgcloud/eingang/router/VorgangManagerListProperties.java b/router/src/main/java/de/ozgcloud/eingang/router/VorgangManagerListProperties.java deleted file mode 100644 index 7d615b5d..00000000 --- a/router/src/main/java/de/ozgcloud/eingang/router/VorgangManagerListProperties.java +++ /dev/null @@ -1,147 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.router; - -import java.lang.annotation.Documented; -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; -import java.util.Collections; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; -import java.util.function.Predicate; -import java.util.stream.Collectors; - -import jakarta.validation.Constraint; -import jakarta.validation.ConstraintValidator; -import jakarta.validation.ConstraintValidatorContext; -import jakarta.validation.Payload; -import jakarta.validation.constraints.NotNull; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.context.annotation.Configuration; -import org.springframework.validation.annotation.Validated; - -import de.ozgcloud.eingang.Application; -import de.ozgcloud.eingang.router.VorgangManagerListProperties.VorgangManagerListPropertiesConstraint; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.Setter; - -@Getter -@Setter -@Configuration -@ConfigurationProperties(prefix = "ozgcloud.adapter") -@Validated -@VorgangManagerListPropertiesConstraint -class VorgangManagerListProperties { - - enum FallbackStrategy { - DENY, FUNDSTELLE - } - - enum RoutingStrategy { - MULTI, SINGLE, ZUFI - } - - @Autowired(required = false) - private Optional<GrpcClientsProperties> clientProperties = Optional.empty(); - - @NotNull - private RoutingStrategy routingStrategy; - private Optional<FallbackStrategy> fallbackStrategy = Optional.empty(); - - private Optional<String> targetVorgangManagerName = Optional.empty(); - private Optional<String> fundstelleVorgangManagerName = Optional.empty(); - - private Map<String, String> organisationseinheiten = Collections.emptyMap(); - - @Documented - @Constraint(validatedBy = VorgangManagerListPropertiesValidator.class) - @Target({ ElementType.TYPE }) - @Retention(RetentionPolicy.RUNTIME) - static @interface VorgangManagerListPropertiesConstraint { - String message() default "Routing Configuration invalid"; - - Class<?>[] groups() default {}; - - Class<? extends Payload>[] payload() default {}; - } - - @AllArgsConstructor - public static class VorgangManagerListPropertiesValidator - implements ConstraintValidator<VorgangManagerListPropertiesConstraint, VorgangManagerListProperties> { - - private static final Predicate<VorgangManagerListProperties> IS_SINGLE_ROUTING = props -> props - .getRoutingStrategy() == RoutingStrategy.SINGLE; - private static final Predicate<VorgangManagerListProperties> HAS_TARGET_NAME = props -> props.getTargetVorgangManagerName().isPresent(); - - private static final Predicate<VorgangManagerListProperties> IS_MULTI_ROUTING = props -> props.getRoutingStrategy() == RoutingStrategy.MULTI; - private static final Predicate<VorgangManagerListProperties> HAS_FALLBACK_STRATEGY = props -> Objects.nonNull(props.getFallbackStrategy()); - - private static final Predicate<VorgangManagerListProperties> IS_ZUFI_ROUTING = props -> props.getRoutingStrategy() == RoutingStrategy.ZUFI; - - private static final Predicate<VorgangManagerListProperties> IS_FALLBACK_TO_FUNDSTELLE = props -> props.getFallbackStrategy() - .map(strategy -> strategy == FallbackStrategy.FUNDSTELLE).orElse(false); - private static final Predicate<VorgangManagerListProperties> HAS_FUNDSTELLE = props -> props.getFundstelleVorgangManagerName().isPresent(); - - @Override - public boolean isValid(VorgangManagerListProperties value, ConstraintValidatorContext context) { - return isVorgangManagerRoutingValid(value) || isZufiManagerRoutingValid(value); - } - - private boolean isVorgangManagerRoutingValid(VorgangManagerListProperties value) { - return IS_SINGLE_ROUTING.and(HAS_TARGET_NAME) - .or(IS_MULTI_ROUTING.and(HAS_FALLBACK_STRATEGY)) - .and(IS_FALLBACK_TO_FUNDSTELLE.negate().or(HAS_FUNDSTELLE)) - .and(this::hasAllVorgangManagersConfigured) - .test(value); - } - - private boolean isZufiManagerRoutingValid(VorgangManagerListProperties value) { - return IS_ZUFI_ROUTING.and(this::isZufiConfigured).test(value); - } - - private boolean hasAllVorgangManagersConfigured(VorgangManagerListProperties props) { - var clientNames = props.getClientProperties() - .map(ps -> ps.getClient()) - .map(Map::keySet) - .orElse(Collections.emptySet()); - - return props.getOrganisationseinheiten().values().stream() - .map(organisationseinheitName -> clientNames.contains("vorgang-manager-" + organisationseinheitName)) - .collect(Collectors.reducing(true, Boolean::logicalAnd)); - } - - private boolean isZufiConfigured(VorgangManagerListProperties props) { - return props.getClientProperties() - .map(ps -> ps.getClient()) - .map(client -> client.get(Application.ZUFI_MANAGER_GRPC_CLIENT)) - .isPresent(); - } - } -} diff --git a/router/src/main/java/de/ozgcloud/eingang/router/VorgangManagerServerResolver.java b/router/src/main/java/de/ozgcloud/eingang/router/VorgangManagerServerResolver.java deleted file mode 100644 index 6108c9ce..00000000 --- a/router/src/main/java/de/ozgcloud/eingang/router/VorgangManagerServerResolver.java +++ /dev/null @@ -1,190 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.router; - -import java.util.Collection; -import java.util.Collections; -import java.util.Optional; - -import jakarta.annotation.PostConstruct; -import jakarta.validation.Valid; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import de.ozgcloud.common.errorhandling.TechnicalException; -import de.ozgcloud.eingang.common.zufi.ZufiService; -import de.ozgcloud.eingang.router.VorgangManagerListProperties.FallbackStrategy; -import de.ozgcloud.eingang.router.VorgangManagerListProperties.RoutingStrategy; -import de.ozgcloud.eingang.router.errorhandling.AdapterConfigurationException; -import de.ozgcloud.eingang.router.errorhandling.UnknownOrganisationseinheitException; -import de.ozgcloud.vorgang.grpc.binaryFile.BinaryFileServiceGrpc.BinaryFileServiceStub; -import de.ozgcloud.vorgang.vorgang.VorgangServiceGrpc.VorgangServiceBlockingStub; -import io.grpc.Channel; -import io.grpc.ManagedChannel; -import io.grpc.ManagedChannelBuilder; -import io.grpc.stub.AbstractStub; -import lombok.NonNull; -import lombok.extern.log4j.Log4j2; -import net.devh.boot.grpc.client.channelfactory.GrpcChannelFactory; -import net.devh.boot.grpc.client.inject.StubTransformer; -import net.devh.boot.grpc.client.stubfactory.StubFactory; - -@Log4j2 -@Component -public class VorgangManagerServerResolver { - - static final String CHANNEL_NAME_PREFIX = "vorgang-manager-"; - - @Autowired - private GrpcChannelFactory grpcChannelFactory; - @Autowired - @Valid - private VorgangManagerListProperties properties; - - @Autowired(required = false) - private Collection<StubFactory> stubFactories = Collections.emptyList(); - @Autowired(required = false) - private Collection<StubTransformer> stubTransformers = Collections.emptyList(); - - private StubFactory vorgangBlockingStubFactory; - private StubFactory binaryFileStubFactory; - - @Autowired - private ZufiService zufiService; - - @PostConstruct - void findApplicableStubFactories() { - vorgangBlockingStubFactory = findStubFactory(VorgangServiceBlockingStub.class); - binaryFileStubFactory = findStubFactory(BinaryFileServiceStub.class); - } - - StubFactory findStubFactory(Class<? extends AbstractStub<?>> stubClass) { - return stubFactories.stream() - .filter(factory -> factory.isApplicable(stubClass)) - .findFirst().orElseThrow(() -> new AdapterConfigurationException("Cannot find Stub-Factory for GRPC-" + stubClass)); - } - - public ManagableStub<VorgangServiceBlockingStub> resolveVorgangServiceBlockingStubByOrganisationseinheitenId( - Optional<String> organisationsEinheitId) { - return createStub(organisationsEinheitId, vorgangBlockingStubFactory, VorgangServiceBlockingStub.class); - } - - public ManagableStub<BinaryFileServiceStub> resolveBinaryFileServiceStubByOrganisationsEinheitId(Optional<String> organisationsEinheitId) { - return createStub(organisationsEinheitId, binaryFileStubFactory, BinaryFileServiceStub.class); - } - - <T extends AbstractStub<T>> ManagableStub<T> createStub(Optional<String> organisationsEinheitId, StubFactory stubFactory, Class<T> stubClass) { - if (isZufiStrategy()) { - return createCloseableStub(organisationsEinheitId, stubFactory, stubClass); - } - return createStubByConfiguredChannels(organisationsEinheitId, stubFactory, stubClass); - } - - private boolean isZufiStrategy() { - return properties.getRoutingStrategy() == RoutingStrategy.ZUFI; - } - - <T extends AbstractStub<T>> ManagableStub<T> createCloseableStub(Optional<String> organisationsEinheitId, StubFactory stubFactory, - Class<T> stubClass) { - var channelName = getVorgangManagerAddress(organisationsEinheitId); - var channel = createChannel(channelName); - var stub = stubFactory.createStub(stubClass, channel); - stub = applyStubTransformers(stub, channelName); - return buildClosableStub(stub, channel); - } - - @SuppressWarnings("unchecked") - private <T extends AbstractStub<?>> ClosableStub<T> buildClosableStub(AbstractStub<?> stub, ManagedChannel channel) { - return ClosableStub.<T>builder().stub((T) stub).channel(channel).build(); - } - - ManagedChannel createChannel(String channelName) { - return ManagedChannelBuilder.forTarget(channelName).usePlaintext().build(); - } - - String getVorgangManagerAddress(Optional<String> organisationsEinheitId) { - if (organisationsEinheitId.isEmpty()) { - throw new TechnicalException("No organisationsEinheitId exists, can not build connection to vorgang-manager."); - } - return zufiService.getVorgangManagerUrl(organisationsEinheitId.get()); - } - - <T extends AbstractStub<T>> ManagableStub<T> createStubByConfiguredChannels(Optional<String> organisationsEinheitId, StubFactory stubFactory, - Class<T> stubClass) { - var channelName = getChannelName(organisationsEinheitId); - var stub = stubFactory.createStub(stubClass, createChannelByName(channelName)); - stub = applyStubTransformers(stub, channelName); - return buildConsistentStub(stub); - } - - @SuppressWarnings("unchecked") - private <T extends AbstractStub<?>> ConsistentStub<T> buildConsistentStub(AbstractStub<?> stub) { - return ConsistentStub.<T>builder().stub((T) stub).build(); - } - - String getChannelName(Optional<String> organisationsEinheitId) { - return getChannelTarget(organisationsEinheitId).map(this::addChannelPrefix).orElseGet(this::getFundstelleChannelName); - } - - private Optional<String> getChannelTarget(Optional<String> organisationsEinheitId) { - return isSingleRoutingStrategy() - ? properties.getTargetVorgangManagerName() - : organisationsEinheitId.map(properties.getOrganisationseinheiten()::get); - - } - - private boolean isSingleRoutingStrategy() { - return properties.getRoutingStrategy() == RoutingStrategy.SINGLE; - } - - private String addChannelPrefix(@NonNull String name) { - return CHANNEL_NAME_PREFIX + name; - } - - String getFundstelleChannelName() { - return properties.getFallbackStrategy().map(fallbackStrategy -> { - if (fallbackStrategy == FallbackStrategy.DENY) { - throw new UnknownOrganisationseinheitException(); - } else { - return properties.getFundstelleVorgangManagerName().map(this::addChannelPrefix).orElseThrow(() -> new AdapterConfigurationException( - "Property 'fundstelleVorgangManagerName' is missing but required for fallbackStrategy 'FUNDSTELLE'")); - } - }).orElseThrow(() -> { - LOG.warn("Missing required routing fallback Strategy. Falling back to 'DENY'"); - return new UnknownOrganisationseinheitException(); - }); - } - - Channel createChannelByName(String name) { - return grpcChannelFactory.createChannel(name); - } - - AbstractStub<?> applyStubTransformers(AbstractStub<?> stub, String channelName) { // NOSONAR wildcard given by StubTransformer - for (var transformer : stubTransformers) { - stub = transformer.transform(channelName, stub); - } - return stub; - } -} \ No newline at end of file diff --git a/router/src/main/java/de/ozgcloud/eingang/router/VorgangRemoteService.java b/router/src/main/java/de/ozgcloud/eingang/router/VorgangRemoteService.java deleted file mode 100644 index 260cdc38..00000000 --- a/router/src/main/java/de/ozgcloud/eingang/router/VorgangRemoteService.java +++ /dev/null @@ -1,243 +0,0 @@ -/* - * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.router; - -import java.io.InputStream; -import java.util.List; -import java.util.Optional; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.TimeoutException; - -import org.apache.commons.io.IOUtils; -import org.springframework.stereotype.Service; - -import com.google.protobuf.ByteString; - -import de.ozgcloud.common.binaryfile.GrpcFileUploadUtils; -import de.ozgcloud.common.binaryfile.GrpcFileUploadUtils.FileSender; -import de.ozgcloud.common.errorhandling.TechnicalException; -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.IncomingFile; -import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; -import de.ozgcloud.vorgang.grpc.binaryFile.BinaryFileServiceGrpc.BinaryFileServiceStub; -import de.ozgcloud.vorgang.grpc.binaryFile.GrpcUploadBinaryFileMetaData; -import de.ozgcloud.vorgang.grpc.binaryFile.GrpcUploadBinaryFileRequest; -import de.ozgcloud.vorgang.grpc.binaryFile.GrpcUploadBinaryFileResponse; -import de.ozgcloud.vorgang.grpc.command.GrpcCallContext; -import de.ozgcloud.vorgang.vorgang.GrpcCreateVorgangRequest; -import de.ozgcloud.vorgang.vorgang.GrpcEingang; -import de.ozgcloud.vorgang.vorgang.GrpcFinishCreationRequest; -import de.ozgcloud.vorgang.vorgang.GrpcIncomingFile; -import de.ozgcloud.vorgang.vorgang.GrpcIncomingFileGroup; -import de.ozgcloud.vorgang.vorgang.VorgangServiceGrpc.VorgangServiceBlockingStub; -import io.grpc.stub.CallStreamObserver; -import io.grpc.stub.StreamObserver; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.RequiredArgsConstructor; -import lombok.extern.log4j.Log4j2; - -@Log4j2 -@AllArgsConstructor -@Service -public class VorgangRemoteService { - - private final VorgangManagerServerResolver vorgangManagerServerResolver; - - private final GrpcEingangMapper grpcEingangMapper; - - public String createVorgang(FormData formData, Optional<String> organisationsEinheitenId) { - var vorgangServiceStub = getVorgangServiceStub(organisationsEinheitenId); - var binaryFileServiceStub = getBinaryFileServiceStub(organisationsEinheitenId); - - logConnection(organisationsEinheitenId, vorgangServiceStub.get()); - - try { - return createVorgang(formData, grpcEingangMapper.toEingang(formData, organisationsEinheitenId), vorgangServiceStub.get(), binaryFileServiceStub.get()); - } finally { - finishStubConnections(List.of(vorgangServiceStub, binaryFileServiceStub)); - } - } - - void logConnection(Optional<String> organisationsEinheitenId, VorgangServiceBlockingStub vorgangStub) { - LOG.info("Connecting to vorgang-manager {}; OrganisationsEinheitId: {}.", vorgangStub.getChannel().authority(), - organisationsEinheitenId); - } - - private ManagableStub<VorgangServiceBlockingStub> getVorgangServiceStub(Optional<String> organisationsEinheitenId) { - return vorgangManagerServerResolver.resolveVorgangServiceBlockingStubByOrganisationseinheitenId(organisationsEinheitenId); - } - - private ManagableStub<BinaryFileServiceStub> getBinaryFileServiceStub(Optional<String> organisationsEinheitenId) { - return vorgangManagerServerResolver.resolveBinaryFileServiceStubByOrganisationsEinheitId(organisationsEinheitenId); - } - - public String createVorgang(FormData formData, GrpcEingang eingang, VorgangServiceBlockingStub vorgangStub, - BinaryFileServiceStub binaryFileStub) { - return new VorgangCreator(formData, eingang, vorgangStub, binaryFileStub).create(); - } - - void finishStubConnections(List<ManagableStub<?>> stubs) { - stubs.stream().filter(ManagableStub::isShutdownable).map(ClosableStub.class::cast).forEach(ClosableStub::close); - } - - @RequiredArgsConstructor - public class VorgangCreator { - - static final String VORGANG_ATTACHMENT_FIELD = "vorgangAttachment"; - static final String CALL_CONTEXT_CLIENT = "eingangAdpater"; - - private final FormData formData; - private final GrpcEingang eingang; - private final VorgangServiceBlockingStub vorgangRemoteStub; - private final BinaryFileServiceStub binaryFileRemoteStub; - - @Getter - private String vorgangId; - @Getter - private List<IncomingFileGroup> uploadedAttachments; - @Getter - private List<IncomingFile> uploadedRepresentations; - - String create() { - vorgangId = startCreation(); - - uploadedAttachments = uploadAttachments(); - uploadedRepresentations = uploadRepresentations(); - - finishCreation(); - return vorgangId; - } - - String startCreation() { - return vorgangRemoteStub.startCreation(buildStartCreationRequest(eingang)).getVorgangId(); - } - - private GrpcCreateVorgangRequest buildStartCreationRequest(GrpcEingang eingang) { - var eingangWithoutFiles = eingang.toBuilder().clearAttachments().clearRepresentations().build(); - return GrpcCreateVorgangRequest.newBuilder().setEingang(eingangWithoutFiles).build(); - } - - List<IncomingFileGroup> uploadAttachments() { - return formData.getAttachments().stream().map(this::uploadAttachment).toList(); - } - - private IncomingFileGroup uploadAttachment(IncomingFileGroup attachment) { - var filesWithId = attachment.getFiles().stream().map(this::addIncomingFileId).toList(); - - return IncomingFileGroup.builder().name(attachment.getName()).files(filesWithId).build(); - } - - List<IncomingFile> uploadRepresentations() { - return formData.getRepresentations().stream().map(this::addIncomingFileId).toList(); - } - - private IncomingFile addIncomingFileId(IncomingFile file) { - return file.toBuilder().id(uploadIncomingFile(file)).build(); - } - - String uploadIncomingFile(IncomingFile incomingFile) { - var fileContentStream = incomingFile.getContentStream(); - - var resultFuture = GrpcFileUploadUtils.createSender(this::buildChunkRequest, fileContentStream, - this::buildCallStreamObserver) - .withMetaData(buildMetaDataRequest(incomingFile)) - .send(); - - return waitUntilFutureToComplete(resultFuture, fileContentStream).getFileId(); - } - - GrpcUploadBinaryFileRequest buildChunkRequest(byte[] bytes, Integer length) { - return GrpcUploadBinaryFileRequest.newBuilder().setFileContent((ByteString.copyFrom(bytes, 0, length))).build(); - } - - private CallStreamObserver<GrpcUploadBinaryFileRequest> buildCallStreamObserver( - StreamObserver<GrpcUploadBinaryFileResponse> responseObserver) { - return (CallStreamObserver<GrpcUploadBinaryFileRequest>) binaryFileRemoteStub.uploadBinaryFileAsStream(responseObserver); - } - - GrpcUploadBinaryFileRequest buildMetaDataRequest(IncomingFile ingomingFile) { - return GrpcUploadBinaryFileRequest.newBuilder() - .setMetadata(GrpcUploadBinaryFileMetaData.newBuilder() - .setContext(GrpcCallContext.newBuilder().setClient(CALL_CONTEXT_CLIENT).build()) - .setVorgangId(getVorgangId()) - .setField(VORGANG_ATTACHMENT_FIELD) - .setContentType(ingomingFile.getContentType()) - .setSize(ingomingFile.getSize()) - .setFileName(ingomingFile.getName())) - .build(); - } - - GrpcUploadBinaryFileResponse waitUntilFutureToComplete(FileSender<GrpcUploadBinaryFileRequest, GrpcUploadBinaryFileResponse> fileSender, - InputStream fileContentStream) { - try { - return fileSender.getResultFuture().get(2, TimeUnit.MINUTES); - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); - fileSender.cancelOnError(e); - throw new TechnicalException("Waiting for finishing upload was interrupted.", e); - } catch (ExecutionException | TimeoutException e) { - fileSender.cancelOnTimeout(); - throw new TechnicalException("Error / Timeout on uploading data.", e); - } finally { - IOUtils.closeQuietly(fileContentStream); - } - } - - String finishCreation() { - return vorgangRemoteStub.finishCreation(buildFinishCreationRequest()).getMessage(); - } - - GrpcFinishCreationRequest buildFinishCreationRequest() { - return GrpcFinishCreationRequest.newBuilder() - .addAllAttachments(getAttachmentsWithoutContent()) - .addAllRepresentations(getRepresentationsWithoutContent()) - .setVorgangId(getVorgangId()) - .build(); - } - - private List<GrpcIncomingFileGroup> getAttachmentsWithoutContent() { - return getUploadedAttachments().stream().map(this::toIncomingFileGroup).toList(); - } - - private GrpcIncomingFileGroup toIncomingFileGroup(IncomingFileGroup incomingFileGroup) { - return GrpcIncomingFileGroup.newBuilder() - .setName(incomingFileGroup.getName()) - .addAllFiles(incomingFileGroup.getFiles().stream().map(this::toIncomingFile).toList()).build(); - } - - private List<GrpcIncomingFile> getRepresentationsWithoutContent() { - return getUploadedRepresentations().stream().map(this::toIncomingFile).toList(); - } - - private GrpcIncomingFile toIncomingFile(IncomingFile incomingFile) { - return GrpcIncomingFile.newBuilder().clearContent() - .setId(incomingFile.getId()) - .setContentType(incomingFile.getContentType()) - .setName(incomingFile.getName()) - .setSize(incomingFile.getSize()).build(); - } - } -} \ No newline at end of file diff --git a/router/src/main/java/de/ozgcloud/eingang/router/VorgangService.java b/router/src/main/java/de/ozgcloud/eingang/router/VorgangService.java deleted file mode 100644 index a5ae891c..00000000 --- a/router/src/main/java/de/ozgcloud/eingang/router/VorgangService.java +++ /dev/null @@ -1,123 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.router; - -import java.io.File; -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Path; -import java.util.List; -import java.util.Optional; -import java.util.stream.Stream; - -import org.springframework.stereotype.Service; - -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.FormHeader; -import de.ozgcloud.eingang.common.formdata.IncomingFile; -import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; -import de.ozgcloud.eingang.common.formdata.ServiceKonto; -import de.ozgcloud.eingang.common.formdata.ZustaendigeStelle; -import lombok.AllArgsConstructor; -import lombok.extern.log4j.Log4j2; - -@AllArgsConstructor -@Service -@Log4j2 -public class VorgangService { - - private final VorgangRemoteService remoteService; - - public String createVorgang(FormData formData) { - var vorgangId = createVorgangForOrganisationsEinheitIds(getOrganisationsEinheitIds(formData), preserveConsistency(formData)); - cleanupFormDataFiles(formData); - return vorgangId; - } - - void cleanupFormDataFiles(FormData formData) { - getFormDataFiles(formData) - .map(IncomingFile::getFile) - .map(File::toPath) - .forEach(this::deleteIncomingFile); - } - - void deleteIncomingFile(Path path) { - try { - Files.deleteIfExists(path); - } catch (IOException e) { - logErrorOnDeleteFailure(e); - } - } - - void logErrorOnDeleteFailure(Exception e) { - LOG.error("Failed to delete temp-file of incoming file!", e); - } - - Stream<IncomingFile> getFormDataFiles(FormData formData) { - return Stream.concat( - formData.getRepresentations().stream(), - formData.getAttachments().stream() - .map(IncomingFileGroup::getFiles) - .flatMap(List::stream) - ); - } - - String createVorgangForOrganisationsEinheitIds(List<String> organisationsEinheitIds, FormData preparedFormData) { - return organisationsEinheitIds.isEmpty() - ? createVorgangOnMissingZustaendigeStelle(preparedFormData) - : createMultipleVorgangs(preparedFormData, organisationsEinheitIds).getFirst(); - } - - String createVorgangOnMissingZustaendigeStelle(FormData formData) { - return remoteService.createVorgang(formData, Optional.empty()); - } - - List<String> createMultipleVorgangs(FormData formData, List<String> organisationseinheitIds) { - return organisationseinheitIds.stream() - .map(oeId -> remoteService.createVorgang(formData, Optional.of(oeId))) - .toList(); - } - - List<String> getOrganisationsEinheitIds(FormData formData) { - return formData.getZustaendigeStelles().stream() - .map(ZustaendigeStelle::getOrganisationseinheitenId) - .toList(); - } - - FormData preserveConsistency(FormData formData) { - if (hasNoPostfachAddress(formData)) { - return clearServiceKonto(formData); - } - return formData; - } - - private boolean hasNoPostfachAddress(FormData formData) { - return Optional.ofNullable(formData.getHeader()).map(FormHeader::getServiceKonto).map(ServiceKonto::getPostfachAddresses).map(List::isEmpty) - .orElse(true); - } - - private FormData clearServiceKonto(FormData formData) { - return formData.toBuilder().header(formData.getHeader().toBuilder().serviceKonto(null).build()).build(); - } -} \ No newline at end of file diff --git a/router/src/main/java/de/ozgcloud/eingang/router/errorhandling/AdapterConfigurationException.java b/router/src/main/java/de/ozgcloud/eingang/router/errorhandling/AdapterConfigurationException.java deleted file mode 100644 index 170b941b..00000000 --- a/router/src/main/java/de/ozgcloud/eingang/router/errorhandling/AdapterConfigurationException.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.router.errorhandling; - -public class AdapterConfigurationException extends RuntimeException { - - private static final long serialVersionUID = 1L; - - public AdapterConfigurationException(String msg) { - super(msg); - } -} diff --git a/router/src/main/java/de/ozgcloud/eingang/router/errorhandling/UnknownOrganisationseinheitException.java b/router/src/main/java/de/ozgcloud/eingang/router/errorhandling/UnknownOrganisationseinheitException.java deleted file mode 100644 index ef130d52..00000000 --- a/router/src/main/java/de/ozgcloud/eingang/router/errorhandling/UnknownOrganisationseinheitException.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.router.errorhandling; - -public class UnknownOrganisationseinheitException extends RuntimeException { - - private static final long serialVersionUID = 1L; - - public UnknownOrganisationseinheitException() { - super("Unkown or missing Organisationseinheit found. Request is Denied."); - } - -} diff --git a/router/src/main/resources/META-INF/spring/README.md b/router/src/main/resources/META-INF/spring/README.md deleted file mode 100644 index c744f138..00000000 --- a/router/src/main/resources/META-INF/spring/README.md +++ /dev/null @@ -1,6 +0,0 @@ -# Autoconfiguration.imports - -Fix for using grpc starter with spring-boot 3. -Remove wenn PR ist released: - -https://github.com/yidongnan/grpc-spring-boot-starter/pull/775/commits/836fcabaa9327d75640c37dbb0bc7f45a20b563e \ No newline at end of file diff --git a/router/src/test/java/de/ozgcloud/eingang/common/zufi/GrpcOrganisationsEinheitGetResponseTestFactory.java b/router/src/test/java/de/ozgcloud/eingang/common/zufi/GrpcOrganisationsEinheitGetResponseTestFactory.java deleted file mode 100644 index 57f78b5d..00000000 --- a/router/src/test/java/de/ozgcloud/eingang/common/zufi/GrpcOrganisationsEinheitGetResponseTestFactory.java +++ /dev/null @@ -1,15 +0,0 @@ -package de.ozgcloud.eingang.common.zufi; - -import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcOrganisationsEinheitGetResponse; - -public class GrpcOrganisationsEinheitGetResponseTestFactory { - - public static GrpcOrganisationsEinheitGetResponse create() { - return createBuilder().build(); - } - - public static GrpcOrganisationsEinheitGetResponse.Builder createBuilder() { - return GrpcOrganisationsEinheitGetResponse.newBuilder() - .setOrganisationsEinheit(GrpcOrganisationsEinheitTestFactory.create()); - } -} \ No newline at end of file diff --git a/router/src/test/java/de/ozgcloud/eingang/common/zufi/GrpcOrganisationsEinheitTestFactory.java b/router/src/test/java/de/ozgcloud/eingang/common/zufi/GrpcOrganisationsEinheitTestFactory.java deleted file mode 100644 index 49c01b10..00000000 --- a/router/src/test/java/de/ozgcloud/eingang/common/zufi/GrpcOrganisationsEinheitTestFactory.java +++ /dev/null @@ -1,18 +0,0 @@ -package de.ozgcloud.eingang.common.zufi; - -import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcOrganisationsEinheit; - -public class GrpcOrganisationsEinheitTestFactory { - - public static GrpcOrganisationsEinheit create() { - return createBuilder().build(); - } - - public static GrpcOrganisationsEinheit.Builder createBuilder() { - return GrpcOrganisationsEinheit.newBuilder() - .setId(OrganisationsEinheitTestFactory.ID) - .setName(OrganisationsEinheitTestFactory.NAME) - .setSynonyme(OrganisationsEinheitTestFactory.SYNONYME) - .setVorgangManagerAddress(OrganisationsEinheitTestFactory.VORGANG_MANAGER_ADDRESS); - } -} \ No newline at end of file diff --git a/router/src/test/java/de/ozgcloud/eingang/common/zufi/OrganisationsEinheitMapperTest.java b/router/src/test/java/de/ozgcloud/eingang/common/zufi/OrganisationsEinheitMapperTest.java deleted file mode 100644 index 3086fd4f..00000000 --- a/router/src/test/java/de/ozgcloud/eingang/common/zufi/OrganisationsEinheitMapperTest.java +++ /dev/null @@ -1,20 +0,0 @@ -package de.ozgcloud.eingang.common.zufi; - -import static org.assertj.core.api.Assertions.*; - -import org.junit.jupiter.api.Test; -import org.mapstruct.factory.Mappers; - -import de.ozgcloud.eingang.common.zufi.OrganisationsEinheitMapper; - -class OrganisationsEinheitMapperTest { - - private final OrganisationsEinheitMapper mapper = Mappers.getMapper(OrganisationsEinheitMapper.class); - - @Test - void shouldMapFromGrpc() { - var organisationsEinheit = mapper.fromGrpc(GrpcOrganisationsEinheitTestFactory.create()); - - assertThat(organisationsEinheit).usingRecursiveComparison().isEqualTo(OrganisationsEinheitTestFactory.create()); - } -} \ No newline at end of file diff --git a/router/src/test/java/de/ozgcloud/eingang/common/zufi/OrganisationsEinheitRemoteServiceTest.java b/router/src/test/java/de/ozgcloud/eingang/common/zufi/OrganisationsEinheitRemoteServiceTest.java deleted file mode 100644 index 32021763..00000000 --- a/router/src/test/java/de/ozgcloud/eingang/common/zufi/OrganisationsEinheitRemoteServiceTest.java +++ /dev/null @@ -1,70 +0,0 @@ -package de.ozgcloud.eingang.common.zufi; - -import static org.assertj.core.api.Assertions.*; -import static org.mockito.ArgumentMatchers.*; -import static org.mockito.Mockito.*; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mockito.ArgumentCaptor; -import org.mockito.Captor; -import org.mockito.InjectMocks; -import org.mockito.Mock; - -import de.ozgcloud.eingang.common.zufi.OrganisationsEinheit; -import de.ozgcloud.eingang.common.zufi.OrganisationsEinheitMapper; -import de.ozgcloud.eingang.common.zufi.OrganisationsEinheitRemoteService; -import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcOrganisationsEinheitGetRequest; -import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcOrganisationsEinheitGetResponse; -import de.ozgcloud.zufi.grpc.organisationseinheit.OrganisationsEinheitServiceGrpc.OrganisationsEinheitServiceBlockingStub; - -class OrganisationsEinheitRemoteServiceTest { - - @InjectMocks - private OrganisationsEinheitRemoteService service; - @Mock - private OrganisationsEinheitServiceBlockingStub stub; - @Mock - private OrganisationsEinheitMapper mapper; - - @DisplayName("Get by id") - @Nested - class TestGetById { - - private final GrpcOrganisationsEinheitGetResponse response = GrpcOrganisationsEinheitGetResponseTestFactory.create(); - private final OrganisationsEinheit mappedOrganisationsEinheit = OrganisationsEinheitTestFactory.create(); - - @BeforeEach - void mock() { - when(stub.getById(any())).thenReturn(response); - when(mapper.fromGrpc(any())).thenReturn(mappedOrganisationsEinheit); - } - - @Captor - private ArgumentCaptor<GrpcOrganisationsEinheitGetRequest> requestCaptor; - - @Test - void shouldCallRemoteService() { - service.getById(OrganisationsEinheitTestFactory.ID); - - verify(stub).getById(requestCaptor.capture()); - assertThat(requestCaptor.getValue().getId()).isEqualTo(OrganisationsEinheitTestFactory.ID); - } - - @Test - void shouldCallMapper() { - service.getById(OrganisationsEinheitTestFactory.ID); - - verify(mapper).fromGrpc(response.getOrganisationsEinheit()); - } - - @Test - void shouldReturnValue() { - var organisationsEinheit = service.getById(OrganisationsEinheitTestFactory.ID); - - assertThat(organisationsEinheit).isEqualTo(mappedOrganisationsEinheit); - } - } -} diff --git a/router/src/test/java/de/ozgcloud/eingang/common/zufi/OrganisationsEinheitTestFactory.java b/router/src/test/java/de/ozgcloud/eingang/common/zufi/OrganisationsEinheitTestFactory.java deleted file mode 100644 index 2be652a7..00000000 --- a/router/src/test/java/de/ozgcloud/eingang/common/zufi/OrganisationsEinheitTestFactory.java +++ /dev/null @@ -1,27 +0,0 @@ -package de.ozgcloud.eingang.common.zufi; - -import java.util.UUID; - -import com.thedeanda.lorem.LoremIpsum; - -import de.ozgcloud.eingang.common.zufi.OrganisationsEinheit; - -public class OrganisationsEinheitTestFactory { - - public final static String ID = UUID.randomUUID().toString(); - public final static String NAME = LoremIpsum.getInstance().getName(); - public final static String SYNONYME = LoremIpsum.getInstance().getName(); - public final static String VORGANG_MANAGER_ADDRESS = LoremIpsum.getInstance().getUrl(); - - public static OrganisationsEinheit create() { - return createBuilder().build(); - } - - public static OrganisationsEinheit.OrganisationsEinheitBuilder createBuilder() { - return OrganisationsEinheit.builder() - .id(ID) - .name(NAME) - .synonyme(SYNONYME) - .vorgangManagerAddress(VORGANG_MANAGER_ADDRESS); - } -} \ No newline at end of file diff --git a/router/src/test/java/de/ozgcloud/eingang/common/zufi/ZufiServiceTest.java b/router/src/test/java/de/ozgcloud/eingang/common/zufi/ZufiServiceTest.java deleted file mode 100644 index 04a03ee5..00000000 --- a/router/src/test/java/de/ozgcloud/eingang/common/zufi/ZufiServiceTest.java +++ /dev/null @@ -1,46 +0,0 @@ -package de.ozgcloud.eingang.common.zufi; - -import static org.assertj.core.api.Assertions.*; -import static org.mockito.ArgumentMatchers.*; -import static org.mockito.Mockito.*; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Mock; - -class ZufiServiceTest { - - @InjectMocks - private ZufiService service; - @Mock - private OrganisationsEinheitRemoteService remoteService; - - @DisplayName("Get vorgangManager url") - @Nested - class TestGetVorgangManagerUrl { - - private final OrganisationsEinheit organisationsEinheit = OrganisationsEinheitTestFactory.create(); - - @BeforeEach - void mock() { - when(remoteService.getById(any())).thenReturn(organisationsEinheit); - } - - @Test - void shouldCallRemoteService() { - service.getVorgangManagerUrl(OrganisationsEinheitTestFactory.ID); - - verify(remoteService).getById(OrganisationsEinheitTestFactory.ID); - } - - @Test - void shouldReturnValue() { - var vorgangManagerAddress = service.getVorgangManagerUrl(OrganisationsEinheitTestFactory.ID); - - assertThat(vorgangManagerAddress).isEqualTo(OrganisationsEinheitTestFactory.VORGANG_MANAGER_ADDRESS); - } - } -} \ No newline at end of file diff --git a/router/src/test/java/de/ozgcloud/eingang/router/GrpcEingangHeaderTestFactory.java b/router/src/test/java/de/ozgcloud/eingang/router/GrpcEingangHeaderTestFactory.java deleted file mode 100644 index a19f2a90..00000000 --- a/router/src/test/java/de/ozgcloud/eingang/router/GrpcEingangHeaderTestFactory.java +++ /dev/null @@ -1,25 +0,0 @@ -package de.ozgcloud.eingang.router; - -import static de.ozgcloud.eingang.common.formdata.FormHeaderTestFactory.*; - -import de.ozgcloud.vorgang.vorgang.GrpcEingangHeader; -import de.ozgcloud.vorgang.vorgang.GrpcServiceKonto; - -public class GrpcEingangHeaderTestFactory { - - public static GrpcEingangHeader create() { - return createBuilder().build(); - } - - public static GrpcEingangHeader.Builder createBuilder() { - return GrpcEingangHeader.newBuilder() - .setRequestId(REQUEST_ID) - .setCreatedAt(CREATED_AT_STR) - .setFormId(FORM_ID) - .setFormEngineName(FORM_ENGINE_NAME) - .setFormName(FORM_NAME) - .setSender(SENDER) - .setServiceKonto(GrpcServiceKonto.newBuilder().build()) - .setVorgangNummer(VORGANG_NUMMER); - } -} diff --git a/router/src/test/java/de/ozgcloud/eingang/router/GrpcEingangMapperITCase.java b/router/src/test/java/de/ozgcloud/eingang/router/GrpcEingangMapperITCase.java deleted file mode 100644 index f3c15dea..00000000 --- a/router/src/test/java/de/ozgcloud/eingang/router/GrpcEingangMapperITCase.java +++ /dev/null @@ -1,207 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.router; - -import static org.assertj.core.api.Assertions.*; - -import java.util.List; -import java.util.Map; -import java.util.Optional; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; - -import de.ozgcloud.eingang.common.formdata.AntragstellerTestFactory; -import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; -import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory; -import de.ozgcloud.eingang.common.formdata.ZustaendigeStelleTestFactory; -import de.ozgcloud.vorgang.vorgang.GrpcEingang; -import de.ozgcloud.vorgang.vorgang.GrpcIncomingFile; - -@SpringBootTest -class GrpcEingangMapperITCase { - - @Autowired - private GrpcEingangMapper grpcEingangMapper; - - @DisplayName("Mapped GrpcEingang") - @Nested - class TestToEingang { - - @Nested - @DisplayName("Mapped Antragsteller") - class TestMappingAntragsteller { - - @Test - void antragstellerShouldBeMapped() { - var antragSteller = grpcEingangMapper.toEingang(FormDataTestFactory.create(), Optional.of(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID)).getAntragsteller(); - - assertThat(antragSteller.getPostfachId()).isEqualTo(AntragstellerTestFactory.POSTFACH_ID); - assertThat(antragSteller.getVorname()).isEqualTo(AntragstellerTestFactory.VORNAME); - assertThat(antragSteller.getTelefon()).isEqualTo(AntragstellerTestFactory.TELEFON); - } - - @Test - void dataShouldBeMapped() { - var antragsteller = grpcEingangMapper.toEingang(FormDataTestFactory.create(), Optional.of(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID)).getAntragsteller(); - - assertThat(antragsteller.getOtherData().getFieldList()).hasSize(1); - assertThat(antragsteller.getOtherData().getField(0).getName()).isEqualTo(AntragstellerTestFactory.GEBIET_BEZEICHNUNG_KEY); - assertThat(antragsteller.getOtherData().getField(0).getValue()).isEqualTo(AntragstellerTestFactory.GEBIET_BEZEICHNUNG_VALUE); - } - } - - @Nested - @DisplayName("Mapped Zustaendinge Stelle") - class TestZustaendigeStelle { - @Test - void eingangShouldHaveZustaendigeStelle() { - var zustaendigeStelle = grpcEingangMapper.toEingang(FormDataTestFactory.create(), Optional.of(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID)).getZustaendigeStelle(); - - assertThat(zustaendigeStelle).isNotNull(); - assertThat(zustaendigeStelle.getOrganisationseinheitenId()).isEqualTo(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID); - assertThat(zustaendigeStelle.getEmail()).isEqualTo(ZustaendigeStelleTestFactory.EMAIL); - } - - @DisplayName("should map empty organisationeinheitId if missing") - @Test - void shouldMapEmptyOrganisationeinheitIdIfMissing() { - var zustaendigeStelle = grpcEingangMapper.toEingang(FormDataTestFactory.create(), Optional.empty()).getZustaendigeStelle(); - - assertThat(zustaendigeStelle).isNotNull(); - assertThat(zustaendigeStelle.getOrganisationseinheitenId()).isEmpty(); - } - } - - @Nested - @DisplayName("Test mapped Attachments") - class TestAttachments { - - private GrpcEingang eingang; - - @BeforeEach - void init() { - - eingang = grpcEingangMapper.toEingang(FormDataTestFactory.create(), Optional.empty()); - } - - @Test - void validateNumberOfAttachments() { - - assertThat(eingang.getNumberOfAttachments()).isEqualTo(2); - } - - @Test - void validateNumberOfAttachmentGroups() { - - assertThat(eingang.getAttachmentsCount()).isEqualTo(2); - } - - @Test - void validateGroup1AttachmentCount() { - - assertThat(eingang.getAttachmentsList().get(0).getFilesCount()).isEqualTo(1); - } - - @Test - void validateGroup1Attachment() { - - GrpcIncomingFile attachment = eingang.getAttachmentsList().get(0).getFilesList().get(0); - - assertThat(attachment.getId()).isEqualTo(IncomingFileTestFactory.ID); - assertThat(attachment.getVendorId()).isEqualTo(IncomingFileTestFactory.VENDOR_ID); - assertThat(attachment.getName()).isEqualTo(IncomingFileTestFactory.NAME); - assertThat(attachment.getContentType()).isEqualTo(IncomingFileTestFactory.CONTENT_TYPE); - assertThat(attachment.getContent()).isEmpty(); - } - - @Test - void validateGroup2AttachmentCount() { - - assertThat(eingang.getAttachmentsList().get(1).getFilesCount()).isEqualTo(1); - } - - @Test - void validateGroup2Attachment() { - - GrpcIncomingFile attachment = eingang.getAttachmentsList().get(1).getFilesList().get(0); - - assertThat(attachment.getId()).isEqualTo(IncomingFileTestFactory.ID); - assertThat(attachment.getVendorId()).isEqualTo(IncomingFileTestFactory.VENDOR_ID); - assertThat(attachment.getName()).isEqualTo(IncomingFileTestFactory.NAME); - assertThat(attachment.getContentType()).isEqualTo(IncomingFileTestFactory.CONTENT_TYPE); - assertThat(attachment.getContent()).isEmpty(); - } - } - - @Nested - @DisplayName("Test mapped Representations") - class TestRepresentations { - - @Test - void testRepresentations() { - - GrpcEingang eingang = grpcEingangMapper.toEingang(FormDataTestFactory.create(), Optional.empty()); - - assertThat(eingang.getRepresentationsCount()).isEqualTo(1); - - GrpcIncomingFile representation = eingang.getRepresentationsList().get(0); - assertThat(representation.getId()).isEqualTo(IncomingFileTestFactory.ID); - assertThat(representation.getVendorId()).isEqualTo(IncomingFileTestFactory.VENDOR_ID); - assertThat(representation.getName()).isEqualTo(IncomingFileTestFactory.NAME); - assertThat(representation.getContentType()).isEqualTo(IncomingFileTestFactory.CONTENT_TYPE); - assertThat(representation.getContent()).isEmpty(); - } - } - - @Nested - @DisplayName("Test mapping for formdata duplicate values") - class TestDuplicateFormData { - - @Test - void valueListShouldGenerateFields() { - - GrpcEingang eingang = grpcEingangMapper - .toEingang(FormDataTestFactory.createBuilder().formData(Map.of("key", List.of("value1", "value2"))).build(), Optional.empty()); - - assertThat(eingang.getFormData().getFieldCount()).isEqualTo(2); - } - - @Test - void objectListShouldGenerateSubForms() { - - GrpcEingang eingang = grpcEingangMapper - .toEingang(FormDataTestFactory.createBuilder() - .formData(Map.of("key-1", List.of(Map.of("sub_key", "value1"), Map.of("sub_key", "value2")))).build(), Optional.empty()); - - assertThat(eingang.getFormData().getFormCount()).isEqualTo(2); - assertThat(eingang.getFormData().getForm(0).getFieldCount()).isEqualTo(1); - } - } - } -} diff --git a/router/src/test/java/de/ozgcloud/eingang/router/GrpcEingangMapperTest.java b/router/src/test/java/de/ozgcloud/eingang/router/GrpcEingangMapperTest.java deleted file mode 100644 index df68e82b..00000000 --- a/router/src/test/java/de/ozgcloud/eingang/router/GrpcEingangMapperTest.java +++ /dev/null @@ -1,220 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.router; - -import static org.assertj.core.api.Assertions.*; -import static org.mockito.ArgumentMatchers.*; -import static org.mockito.Mockito.*; - -import java.util.Optional; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mapstruct.factory.Mappers; -import org.mockito.InjectMocks; -import org.mockito.Mock; - -import de.ozgcloud.eingang.common.formdata.AntragstellerTestFactory; -import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; -import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory; -import de.ozgcloud.eingang.common.formdata.ZustaendigeStelleTestFactory; -import de.ozgcloud.vorgang.common.grpc.GrpcFormDataMapper; -import de.ozgcloud.vorgang.vorgang.GrpcAntragsteller; -import de.ozgcloud.vorgang.vorgang.GrpcEingang; -import de.ozgcloud.vorgang.vorgang.GrpcFormData; -import de.ozgcloud.vorgang.vorgang.GrpcServiceKonto; -import de.ozgcloud.vorgang.vorgang.GrpcZustaendigeStelle; - -class GrpcEingangMapperTest { - - @InjectMocks - private GrpcEingangMapper mapper = Mappers.getMapper(GrpcEingangMapper.class); - @Mock - private GrpcFormDataMapper grpcFormDataMapper; - @Mock - private ServiceKontoMapper serviceKontoMapper; - - @DisplayName("To antragsteller") - @Nested - class TestToAntragsteller { - - @Test - void antragstellerShouldBeMapped() { - var mapped = toAntragsteller(); - - assertThat(mapped.getPostfachId()).isEqualTo(AntragstellerTestFactory.POSTFACH_ID); - assertThat(mapped.getVorname()).isEqualTo(AntragstellerTestFactory.VORNAME); - assertThat(mapped.getTelefon()).isEqualTo(AntragstellerTestFactory.TELEFON); - - } - - @Test - void shouldMapFirmaName() { - var mapped = mapper.toAntragsteller(AntragstellerTestFactory.createFirm()); - - assertThat(mapped.getFirmaName()).isEqualTo(AntragstellerTestFactory.FIRMA_NAME); - } - - private GrpcAntragsteller toAntragsteller() { - return mapper.toAntragsteller(AntragstellerTestFactory.create()); - } - } - - @DisplayName("To zustaendigeStelle") - @Nested - class TestToZustaendigeStelle { - - @Test - void eingangShouldHaveZustaendigeStelle() { - var zustaendigeStelle = toZustaendigeStelle(); - - assertThat(zustaendigeStelle).isNotNull(); - assertThat(zustaendigeStelle.getOrganisationseinheitenId()).isEqualTo(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID); - assertThat(zustaendigeStelle.getEmail()).isEqualTo(ZustaendigeStelleTestFactory.EMAIL); - } - - private GrpcZustaendigeStelle toZustaendigeStelle() { - return mapper.toZustaendigeStelle(ZustaendigeStelleTestFactory.create()); - } - } - - @DisplayName("To eingang") - @Nested - class TestToEingang { - - @BeforeEach - void mockMapperReturnValues() { - when(grpcFormDataMapper.mapToFormData(anyMap())) - .thenReturn(GrpcFormData.newBuilder().addField(GrpcFormFieldTestFactory.create()).build()); - when(serviceKontoMapper.toServiceKonto(any())).thenReturn(GrpcServiceKonto.newBuilder().build()); - } - - @Nested - @DisplayName("Mapped Antragsteller") - class TestMappingAntragsteller { - - @Test - void dataShouldBeMapped() { - var antragsteller = toEingang().getAntragsteller(); - - assertThat(antragsteller.getOtherData().getFieldList()).hasSize(1); - assertThat(antragsteller.getOtherData().getField(0).getName()).isEqualTo(GrpcFormFieldTestFactory.TEST_NAME); - assertThat(antragsteller.getOtherData().getField(0).getValue()).isEqualTo(GrpcFormFieldTestFactory.TEST_VALUE); - } - } - - @Nested - @DisplayName("Test mapped Attachments") - class TestAttachments { - - @Test - void validateNumberOfAttachments() { - var eingang = toEingang(); - - assertThat(eingang.getNumberOfAttachments()).isEqualTo(2); - } - - @Test - void validateNumberOfAttachmentGroups() { - var eingang = toEingang(); - - assertThat(eingang.getAttachmentsCount()).isEqualTo(2); - } - - @Test - void validateGroup1AttachmentCount() { - var eingang = toEingang(); - - assertThat(eingang.getAttachmentsList().get(0).getFilesCount()).isEqualTo(1); - } - - @Test - void validateGroup1Attachment() { - var eingang = toEingang(); - - var attachment = eingang.getAttachmentsList().get(0).getFilesList().get(0); - assertThat(attachment.getId()).isEqualTo(IncomingFileTestFactory.ID); - assertThat(attachment.getVendorId()).isEqualTo(IncomingFileTestFactory.VENDOR_ID); - assertThat(attachment.getName()).isEqualTo(IncomingFileTestFactory.NAME); - assertThat(attachment.getContentType()).isEqualTo(IncomingFileTestFactory.CONTENT_TYPE); - assertThat(attachment.getContent()).isEmpty(); - } - - @Test - void validateGroup2AttachmentCount() { - var eingang = toEingang(); - - assertThat(eingang.getAttachmentsList().get(1).getFilesCount()).isEqualTo(1); - } - - @Test - void validateGroup2Attachment() { - var eingang = toEingang(); - - var attachment = eingang.getAttachmentsList().get(1).getFilesList().get(0); - assertThat(attachment.getId()).isEqualTo(IncomingFileTestFactory.ID); - assertThat(attachment.getVendorId()).isEqualTo(IncomingFileTestFactory.VENDOR_ID); - assertThat(attachment.getName()).isEqualTo(IncomingFileTestFactory.NAME); - assertThat(attachment.getContentType()).isEqualTo(IncomingFileTestFactory.CONTENT_TYPE); - assertThat(attachment.getContent()).isEmpty(); - } - } - - @Nested - @DisplayName("Test mapped Representations") - class TestRepresentations { - - @Test - void testRepresentations() { - var eingang = toEingang(); - - assertThat(eingang.getRepresentationsCount()).isEqualTo(1); - var representation = eingang.getRepresentationsList().get(0); - assertThat(representation.getId()).isEqualTo(IncomingFileTestFactory.ID); - assertThat(representation.getVendorId()).isEqualTo(IncomingFileTestFactory.VENDOR_ID); - assertThat(representation.getName()).isEqualTo(IncomingFileTestFactory.NAME); - assertThat(representation.getContentType()).isEqualTo(IncomingFileTestFactory.CONTENT_TYPE); - assertThat(representation.getContent()).isEmpty(); - } - } - - @Nested - @DisplayName("Test mapped Header") - class TestHeader { - @Test - void shouldMapAllFields() { - var header = toEingang().getHeader(); - - assertThat(header).usingRecursiveAssertion().isEqualTo(GrpcEingangHeaderTestFactory.create()); - - } - } - - private GrpcEingang toEingang() { - return mapper.toEingang(FormDataTestFactory.create(), Optional.of(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID)); - } - } -} \ No newline at end of file diff --git a/router/src/test/java/de/ozgcloud/eingang/router/GrpcFormFieldTestFactory.java b/router/src/test/java/de/ozgcloud/eingang/router/GrpcFormFieldTestFactory.java deleted file mode 100644 index 2471dac0..00000000 --- a/router/src/test/java/de/ozgcloud/eingang/router/GrpcFormFieldTestFactory.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.router; - -import de.ozgcloud.vorgang.vorgang.GrpcFormField; - -public class GrpcFormFieldTestFactory { - - public static final String TEST_NAME = "name"; - public static final String TEST_VALUE = "value"; - - public static GrpcFormField create() { - return createBuilder().build(); - } - - private static GrpcFormField.Builder createBuilder() { - return GrpcFormField.newBuilder() - .setName(TEST_NAME) - .setValue(TEST_VALUE); - } -} diff --git a/router/src/test/java/de/ozgcloud/eingang/router/GrpcIncomingFileGroupTestFactory.java b/router/src/test/java/de/ozgcloud/eingang/router/GrpcIncomingFileGroupTestFactory.java deleted file mode 100644 index 3c700a36..00000000 --- a/router/src/test/java/de/ozgcloud/eingang/router/GrpcIncomingFileGroupTestFactory.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.router; - -import de.ozgcloud.vorgang.vorgang.GrpcIncomingFile; -import de.ozgcloud.vorgang.vorgang.GrpcIncomingFileGroup; - -public class GrpcIncomingFileGroupTestFactory { - - public static final String NAME = "FileGroup1"; - public static final GrpcIncomingFile FILE = GrpcIncomingFileTestFactory.create(); - - public static GrpcIncomingFileGroup create() { - return createBuilder().build(); - } - - public static GrpcIncomingFileGroup.Builder createBuilder() { - return GrpcIncomingFileGroup.newBuilder() - .setName(NAME) - .addFiles(FILE); - } -} \ No newline at end of file diff --git a/router/src/test/java/de/ozgcloud/eingang/router/GrpcIncomingFileTestFactory.java b/router/src/test/java/de/ozgcloud/eingang/router/GrpcIncomingFileTestFactory.java deleted file mode 100644 index 2700f212..00000000 --- a/router/src/test/java/de/ozgcloud/eingang/router/GrpcIncomingFileTestFactory.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.router; - -import com.google.protobuf.ByteString; - -import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory; -import de.ozgcloud.vorgang.vorgang.GrpcIncomingFile; - -public class GrpcIncomingFileTestFactory { - - public static final String ID = IncomingFileTestFactory.ID.toString(); - public static final String VENDOR_ID = IncomingFileTestFactory.VENDOR_ID; - public static final String NAME = IncomingFileTestFactory.NAME; - public static final String CONTENT_TYPE = IncomingFileTestFactory.CONTENT_TYPE; - public static final long SIZE = IncomingFileTestFactory.SIZE; - public static final ByteString CONTENT = ByteString.copyFrom(IncomingFileTestFactory.CONTENT); - - public static GrpcIncomingFile create() { - return createBuilder().build(); - } - - public static GrpcIncomingFile.Builder createBuilder() { - return GrpcIncomingFile.newBuilder() - .setId(ID) - .setVendorId(VENDOR_ID) - .setName(NAME) - .setContentType(CONTENT_TYPE) - .setSize(SIZE) - .setContent(CONTENT); - } -} \ No newline at end of file diff --git a/router/src/test/java/de/ozgcloud/eingang/router/ServiceKontoMapperTest.java b/router/src/test/java/de/ozgcloud/eingang/router/ServiceKontoMapperTest.java deleted file mode 100644 index 3b521610..00000000 --- a/router/src/test/java/de/ozgcloud/eingang/router/ServiceKontoMapperTest.java +++ /dev/null @@ -1,122 +0,0 @@ -package de.ozgcloud.eingang.router; - -import static org.assertj.core.api.Assertions.*; -import static org.mockito.ArgumentMatchers.*; -import static org.mockito.Mockito.*; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Mock; - -import de.ozgcloud.eingang.common.formdata.PostfachAddressTestFactory; -import de.ozgcloud.eingang.common.formdata.ServiceKontoTestFactory; -import de.ozgcloud.eingang.common.formdata.StringBasedIdentifier; -import de.ozgcloud.vorgang.common.GrpcObject; -import de.ozgcloud.vorgang.common.GrpcProperty; -import de.ozgcloud.vorgang.common.grpc.GrpcObjectMapper; -import de.ozgcloud.vorgang.vorgang.GrpcServiceKonto; - -class ServiceKontoMapperTest { - - @InjectMocks - private ServiceKontoMapper mapper; - @Mock - private GrpcObjectMapper grpcObjectMapper; - - @Nested - @DisplayName("To servicekonto") - class TestMapServiceKonto { - - private final GrpcProperty grpcProperty = GrpcProperty.newBuilder() - .setName(StringBasedIdentifier.POSTFACH_ID_FIELD) - .addValue(PostfachAddressTestFactory.POSTFACH_ID) - .build(); - private final GrpcObject grpcObject = GrpcObject.newBuilder() - .addProperty(grpcProperty) - .build(); - - @BeforeEach - void mockGrpcObjectMapper() { - when(grpcObjectMapper.fromMap(any())).thenReturn(grpcObject); - } - - @Test - void shouldCallGrpcMapper() { - getServiceKontoFromMappedEingang(); - - verify(grpcObjectMapper).fromMap(any()); - } - - @Test - void shouldBeExist() { - var serviceKonto = getServiceKontoFromMappedEingang(); - - assertThat(serviceKonto).isNotNull(); - } - - @Test - void shouldContainsType() { - var serviceKonto = getServiceKontoFromMappedEingang(); - - assertThat(serviceKonto.getType()).isEqualTo(ServiceKontoTestFactory.TYPE); - } - - @Test - void shouldContainsDefaultTrustLevel() { - var serviceKonto = mapper.toServiceKonto(ServiceKontoTestFactory.createBuilder().trustLevel(null).build()); - - assertThat(serviceKonto.getTrustLevel()).isEqualTo(ServiceKontoMapper.DEFAULT_TRUST_LEVEL); - } - - @Test - void shouldContainsTrustLevel() { - var serviceKonto = getServiceKontoFromMappedEingang(); - - assertThat(serviceKonto.getTrustLevel()).isEqualTo(ServiceKontoTestFactory.TRUST_LEVEL); - } - - @DisplayName("postfach address") - @Nested - class TestPostfachAddress { - - @Test - void shouldHasSize() { - var serviceKonto = getServiceKontoFromMappedEingang(); - - assertThat(serviceKonto.getPostfachAddressesList()).hasSize(1); - } - - @Test - void shouldContainsVersion() { - var serviceKonto = getServiceKontoFromMappedEingang(); - - assertThat(serviceKonto.getPostfachAddressesList().get(0).getVersion()).isEqualTo(PostfachAddressTestFactory.VERSION); - } - - @Test - void shouldContainsIdentifier() { - var serviceKonto = getServiceKontoFromMappedEingang(); - - assertThat(serviceKonto.getPostfachAddressesList().get(0).getIdentifier().getPropertyList()).hasSize(1); - - var property = serviceKonto.getPostfachAddressesList().get(0).getIdentifier().getPropertyList().get(0); - assertThat(property.getName()).isEqualTo(StringBasedIdentifier.POSTFACH_ID_FIELD); - assertThat(property.getValue(0)).isEqualTo(PostfachAddressTestFactory.POSTFACH_ID); - } - - @Test - void shouldContainsType() { - var serviceKonto = getServiceKontoFromMappedEingang(); - - assertThat(serviceKonto.getPostfachAddressesList().get(0).getType()).isEqualTo(PostfachAddressTestFactory.POSTFACH_ADDRESS_TYPE); - } - } - - private GrpcServiceKonto getServiceKontoFromMappedEingang() { - return mapper.toServiceKonto(ServiceKontoTestFactory.create()); - } - } -} \ No newline at end of file diff --git a/router/src/test/java/de/ozgcloud/eingang/router/VorgangManagerListPropertiesTest.java b/router/src/test/java/de/ozgcloud/eingang/router/VorgangManagerListPropertiesTest.java deleted file mode 100644 index b6295122..00000000 --- a/router/src/test/java/de/ozgcloud/eingang/router/VorgangManagerListPropertiesTest.java +++ /dev/null @@ -1,171 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.router; - -import static org.assertj.core.api.Assertions.*; - -import java.util.HashMap; -import java.util.Map; -import java.util.Optional; - -import jakarta.validation.Validation; -import jakarta.validation.Validator; -import jakarta.validation.ValidatorFactory; - -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; - -import com.thedeanda.lorem.LoremIpsum; - -import de.ozgcloud.eingang.Application; -import de.ozgcloud.eingang.router.GrpcClientsProperties.ClientProperty; - -class VorgangManagerListPropertiesTest { - - @Nested - class TestSingleRouting { - - private VorgangManagerListProperties props = VorgangManagerListPropertiesTestFactory.createForSingleRouting(); - - @Test - void shouldBeValid() { - var violations = getValidator().validate(props); - - assertThat(violations).isEmpty(); - } - - @Test - void shouldViolateMissingRoutingStrategy() { - props.setRoutingStrategy(null); - - var violations = getValidator().validate(props); - - assertThat(violations).isNotEmpty(); - } - - @Test - void shouldViolateMissingTargetVorgangManagerName() { - props.setTargetVorgangManagerName(Optional.empty()); - - var violations = getValidator().validate(props); - - assertThat(violations).isNotEmpty(); - } - } - - @Nested - class TestMultiRouting { - private VorgangManagerListProperties props = VorgangManagerListPropertiesTestFactory.createForMultiRouting(); - - @Test - void shouldBeValid() { - var violations = getValidator().validate(props); - - assertThat(violations).isEmpty(); - } - - @Test - void shouldViolateMissingFallbackStrategy() { - props.setFallbackStrategy(null); - - var violations = getValidator().validate(props); - - assertThat(violations).isNotEmpty(); - } - - } - - @Nested - class TestFallbackFundstelle { - private VorgangManagerListProperties props = VorgangManagerListPropertiesTestFactory.createWithFundstelle(); - - @Test - void shouldBeValid() { - var violations = getValidator().validate(props); - - assertThat(violations).isEmpty(); - } - - @Test - void shouldViolateMissingFundstelle() { - props.setFundstelleVorgangManagerName(Optional.empty()); - - var violations = getValidator().validate(props); - - assertThat(violations).isNotEmpty(); - } - } - - @Nested - class TestZufiRouting { - - @Test - void shouldBeValid() { - var props = VorgangManagerListPropertiesTestFactory.createForZufiRouting(); - props.setClientProperties(Optional.of(createZufiClientProperties())); - - var violations = getValidator().validate(props); - - assertThat(violations).isEmpty(); - } - - @Test - void shouldViolateMissingAddress() { - var props = VorgangManagerListPropertiesTestFactory.createForZufiRouting(); - - var violations = getValidator().validate(props); - - assertThat(violations).isNotEmpty(); - } - - static GrpcClientsProperties createZufiClientProperties() { - var property = new ClientProperty(); - property.setAddress(LoremIpsum.getInstance().getUrl()); - var properties = new GrpcClientsProperties(); - properties.setClient(Map.of(Application.ZUFI_MANAGER_GRPC_CLIENT, property)); - return properties; - } - } - - @Nested - class TestClientProperties { - private VorgangManagerListProperties props = VorgangManagerListPropertiesTestFactory.createForMultiRouting(); - - @Test - void shouldViolateMissingVorgangManager() { - Map<String, ClientProperty> clientMap = new HashMap<>(props.getClientProperties().get().getClient()); - clientMap.remove("vorgang-manager-kiel"); - props.getClientProperties().get().setClient(clientMap); - - var violations = getValidator().validate(props); - - assertThat(violations).isNotEmpty(); - } - } - - private Validator getValidator() { - ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); - return factory.getValidator(); - } -} diff --git a/router/src/test/java/de/ozgcloud/eingang/router/VorgangManagerListPropertiesTestFactory.java b/router/src/test/java/de/ozgcloud/eingang/router/VorgangManagerListPropertiesTestFactory.java deleted file mode 100644 index 8425acf8..00000000 --- a/router/src/test/java/de/ozgcloud/eingang/router/VorgangManagerListPropertiesTestFactory.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.router; - -import java.util.Map; -import java.util.Optional; - -import de.ozgcloud.eingang.router.GrpcClientsProperties.ClientProperty; -import de.ozgcloud.eingang.router.VorgangManagerListProperties.FallbackStrategy; -import de.ozgcloud.eingang.router.VorgangManagerListProperties.RoutingStrategy; - -class VorgangManagerListPropertiesTestFactory { - - static final FallbackStrategy FALLBACK_STRATEGY = FallbackStrategy.DENY; - static final String FUNDSTELLE_VORGANG_MANAGER_NAME = "fundstelle"; - static final String FUNDSTELLE_CHANNEL_NAME = "vorgang-manager-" + FUNDSTELLE_VORGANG_MANAGER_NAME; - - static final String ORGANISATIONSEINHEIT_ID = "123"; - static final String VORGANG_MANAGER_NAME = "kiel"; - static final String CHANNEL_NAME = "vorgang-manager-" + VORGANG_MANAGER_NAME; - - static final String ADDRESS = "127.0.0.1"; - - static VorgangManagerListProperties createWithFundstelle() { - var props = createForMultiRouting(); - props.setFallbackStrategy(Optional.of(FallbackStrategy.FUNDSTELLE)); - props.setFundstelleVorgangManagerName(Optional.of(FUNDSTELLE_VORGANG_MANAGER_NAME)); - - return props; - } - - static VorgangManagerListProperties createForMultiRouting() { - var props = new VorgangManagerListProperties(); - props.setFallbackStrategy(Optional.of(FALLBACK_STRATEGY)); - props.setRoutingStrategy(RoutingStrategy.MULTI); - props.setOrganisationseinheiten(Map.of(ORGANISATIONSEINHEIT_ID, VORGANG_MANAGER_NAME)); - props.setClientProperties(Optional.of(createClientProperties())); - return props; - } - - static VorgangManagerListProperties createForSingleRouting() { - var props = new VorgangManagerListProperties(); - props.setRoutingStrategy(RoutingStrategy.SINGLE); - props.setTargetVorgangManagerName(Optional.of(VORGANG_MANAGER_NAME)); - props.setClientProperties(Optional.of(createClientProperties())); - - return props; - } - - static VorgangManagerListProperties createForZufiRouting() { - var props = new VorgangManagerListProperties(); - props.setRoutingStrategy(RoutingStrategy.ZUFI); - props.setFallbackStrategy(Optional.of(FallbackStrategy.DENY)); - - return props; - } - - static GrpcClientsProperties createClientProperties() { - var property = new ClientProperty(); - property.setAddress(ADDRESS); - var properties = new GrpcClientsProperties(); - properties.setClient(Map.of(CHANNEL_NAME, property)); - return properties; - } - -} diff --git a/router/src/test/java/de/ozgcloud/eingang/router/VorgangManagerServerResolverITCase.java b/router/src/test/java/de/ozgcloud/eingang/router/VorgangManagerServerResolverITCase.java deleted file mode 100644 index cf378140..00000000 --- a/router/src/test/java/de/ozgcloud/eingang/router/VorgangManagerServerResolverITCase.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.router; - -import static org.assertj.core.api.Assertions.*; - -import java.util.Optional; - -import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; - -import de.ozgcloud.vorgang.grpc.binaryFile.BinaryFileServiceGrpc.BinaryFileServiceStub; -import de.ozgcloud.vorgang.vorgang.VorgangServiceGrpc.VorgangServiceBlockingStub; - -@SpringBootTest(properties = { - "grpc.client.vorgang-manager-kiel.address=static://127.0.0.1:9090" -}) -class VorgangManagerServerResolverITCase { - - @Autowired - private VorgangManagerServerResolver resolver; - - @Test - void shouldReturnVorgangServiceBlockingStub() { - var created = resolver - .resolveVorgangServiceBlockingStubByOrganisationseinheitenId( - Optional.of(VorgangManagerListPropertiesTestFactory.ORGANISATIONSEINHEIT_ID)); - - assertThat(created.get()).isNotNull().isInstanceOf(VorgangServiceBlockingStub.class); - } - - @Test - void shouldReturnBinaryFileServiceStub() { - var created = resolver - .resolveBinaryFileServiceStubByOrganisationsEinheitId(Optional.of(VorgangManagerListPropertiesTestFactory.ORGANISATIONSEINHEIT_ID)); - - assertThat(created.get()).isNotNull().isInstanceOf(BinaryFileServiceStub.class); - } -} diff --git a/router/src/test/java/de/ozgcloud/eingang/router/VorgangManagerServerResolverTest.java b/router/src/test/java/de/ozgcloud/eingang/router/VorgangManagerServerResolverTest.java deleted file mode 100644 index 7bcc1d1f..00000000 --- a/router/src/test/java/de/ozgcloud/eingang/router/VorgangManagerServerResolverTest.java +++ /dev/null @@ -1,493 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.router; - -import static org.assertj.core.api.Assertions.*; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.ArgumentMatchers.*; -import static org.mockito.Mockito.*; - -import java.util.Arrays; -import java.util.Collections; -import java.util.Optional; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.Spy; -import org.springframework.test.util.ReflectionTestUtils; - -import de.ozgcloud.common.errorhandling.TechnicalException; -import de.ozgcloud.eingang.common.formdata.ZustaendigeStelleTestFactory; -import de.ozgcloud.eingang.common.zufi.ZufiService; -import de.ozgcloud.eingang.router.errorhandling.AdapterConfigurationException; -import de.ozgcloud.eingang.router.errorhandling.UnknownOrganisationseinheitException; -import de.ozgcloud.vorgang.grpc.binaryFile.BinaryFileServiceGrpc.BinaryFileServiceStub; -import de.ozgcloud.vorgang.vorgang.VorgangServiceGrpc.VorgangServiceBlockingStub; -import io.grpc.Channel; -import io.grpc.ManagedChannel; -import io.grpc.stub.AbstractStub; -import net.devh.boot.grpc.client.channelfactory.GrpcChannelFactory; -import net.devh.boot.grpc.client.inject.StubTransformer; -import net.devh.boot.grpc.client.stubfactory.StubFactory; - -class VorgangManagerServerResolverTest { - - @Spy - @InjectMocks - private VorgangManagerServerResolver resolver; - - @Mock - private GrpcChannelFactory channelFactory; - @Mock - private StubFactory stubFactory; - - @Mock - private ZufiService zufiService; - - @Nested - class TestFindStubFactory { - - @Mock - private StubFactory stubFactory; - - @Test - void shouldSetApplicableFactory() { - when(stubFactory.isApplicable(any())).thenReturn(true); - setStubFactories(stubFactory, stubFactory); - - resolver.findApplicableStubFactories(); - - assertThat(ReflectionTestUtils.getField(resolver, "vorgangBlockingStubFactory")).isSameAs(stubFactory); - } - - @Test - void shouldThrowExceptionIfNotFound() { - setStubFactories(stubFactory); - - assertThrows(AdapterConfigurationException.class, () -> resolver.findApplicableStubFactories()); - } - - private void setStubFactories(StubFactory... factories) { - ReflectionTestUtils.setField(resolver, "stubFactories", Arrays.asList(factories)); - } - } - - @DisplayName("Resolve vorgangManager service by organisationsEinheitenId") - @Nested - class TestResolveVorgangManagerServiceStubByOrganisationsEinheitenId { - - @Mock - private ManagableStub<VorgangServiceBlockingStub> stub; - - private final Optional<String> organisationsEinheitenId = Optional.of(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID); - - @BeforeEach - void mock() { - ReflectionTestUtils.setField(resolver, "vorgangBlockingStubFactory", stubFactory); - - doReturn(stub).when(resolver).createStub(any(), any(), any()); - } - - @Test - void shouldCallCreateStub() { - resolveStub(); - - verify(resolver).createStub(organisationsEinheitenId, stubFactory, VorgangServiceBlockingStub.class); - } - - @Test - void shouldReturnStub() { - var createdStub = resolveStub(); - - assertThat(createdStub).isEqualTo(stub); - } - - private ManagableStub<VorgangServiceBlockingStub> resolveStub() { - return resolver.resolveVorgangServiceBlockingStubByOrganisationseinheitenId(organisationsEinheitenId); - } - } - - @DisplayName("Resolve binaryFile service by organisationsEinheitenId") - @Nested - class TestResolveBinaryFileServiceStubByOrganisationsEinheitenId { - - @Mock - private ManagableStub<BinaryFileServiceStub> stub; - - private final Optional<String> organisationsEinheitenId = Optional.of(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID); - - @BeforeEach - void mock() { - ReflectionTestUtils.setField(resolver, "binaryFileStubFactory", stubFactory); - - doReturn(stub).when(resolver).createStub(any(), any(), any()); - } - - @Test - void shouldCallCreateStub() { - resolveStub(); - - verify(resolver).createStub(organisationsEinheitenId, stubFactory, BinaryFileServiceStub.class); - } - - @Test - void shouldReturnStub() { - var createdStub = resolveStub(); - - assertThat(createdStub).isEqualTo(stub); - } - - private ManagableStub<BinaryFileServiceStub> resolveStub() { - return resolver.resolveBinaryFileServiceStubByOrganisationsEinheitId(organisationsEinheitenId); - } - } - - @DisplayName("Create stub") - @Nested - class TestCreateStub { - - @Mock - private ManagableStub<?> stub; - - private final Optional<String> organisationsEinheitenId = Optional.of(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID); - - @DisplayName("on zufi strategy") - @Nested - class TestOnZufiRoutingStrategy { - - @BeforeEach - void mock() { - doReturn(stub).when(resolver).createCloseableStub(any(), any(), any()); - setProperties(VorgangManagerListPropertiesTestFactory.createForZufiRouting()); - } - - @Test - void shouldCallCreateStub() { - createStub(); - - verify(resolver).createStub(organisationsEinheitenId, stubFactory, VorgangServiceBlockingStub.class); - } - - @Test - void shouldReturnStub() { - var createdStub = createStub(); - - assertThat(createdStub).isEqualTo(stub); - } - } - - @DisplayName("On other routing strategy") - @Nested - class TestOnOtherRoutingStrategy { - - @BeforeEach - void mock() { - doReturn(stub).when(resolver).createStubByConfiguredChannels(any(), any(), any()); - setProperties(VorgangManagerListPropertiesTestFactory.createForSingleRouting()); - } - - @Test - void shouldCallCreateStub() { - createStub(); - - verify(resolver).createStubByConfiguredChannels(organisationsEinheitenId, stubFactory, VorgangServiceBlockingStub.class); - } - - @Test - void shouldReturnStub() { - var createdStub = createStub(); - - assertThat(createdStub).isEqualTo(stub); - } - } - - private ManagableStub<VorgangServiceBlockingStub> createStub() { - return resolver.createStub(organisationsEinheitenId, stubFactory, VorgangServiceBlockingStub.class); - } - } - - @DisplayName("Create closeable stub") - @Nested - class TestCreateCloseableStub { - - @Mock - private ManagableStub<?> manageableStub; - @Mock - private AbstractStub<?> stub; - @Mock - private ManagedChannel managedChannel; - - private Optional<String> organisationsEinheitenId = Optional.of(VorgangManagerListPropertiesTestFactory.ORGANISATIONSEINHEIT_ID); - private final String vorgangManagerAddress = "dummyVorgangManagerAddress"; - - @BeforeEach - void mock() { - doReturn(vorgangManagerAddress).when(resolver).getVorgangManagerAddress(any()); - doReturn(managedChannel).when(resolver).createChannel(any()); - doReturn(stub).when(resolver).applyStubTransformers(any(), any()); - } - - @Test - void shouldGetVorgangManagerAddress() { - createCloseableStub(); - - verify(resolver).getVorgangManagerAddress(organisationsEinheitenId); - } - - @Test - void shouldCreateChannel() { - createCloseableStub(); - - verify(resolver).createChannel(vorgangManagerAddress); - } - - @Test - void shouldCreateStub() { - createCloseableStub(); - - verify(stubFactory).createStub(VorgangServiceBlockingStub.class, managedChannel); - } - - @Test - void shouldApplStubTransformers() { - createCloseableStub(); - - verify(resolver).applyStubTransformers(any(), eq(vorgangManagerAddress)); - } - - @Test - void shouldReturnStub() { - var createdStub = (ClosableStub) createCloseableStub(); - - assertThat(createdStub).isNotNull(); - assertThat(createdStub.get()).isEqualTo(stub); - } - - private ManagableStub<VorgangServiceBlockingStub> createCloseableStub() { - return resolver.createCloseableStub(organisationsEinheitenId, stubFactory, VorgangServiceBlockingStub.class); - } - } - - @DisplayName("Get vorgangManager address") - @Nested - class TestGetVorgangManagerAddress { - - private final Optional<String> organisationsEinheitenId = Optional.of(VorgangManagerListPropertiesTestFactory.ORGANISATIONSEINHEIT_ID); - private final String vorgangManagerAddress = "DummyVorgangManagerAddress"; - - @Test - void shouldCallZufiService() { - when(zufiService.getVorgangManagerUrl(any())).thenReturn(vorgangManagerAddress); - - getVorgangManagerAddress(); - - verify(zufiService).getVorgangManagerUrl(VorgangManagerListPropertiesTestFactory.ORGANISATIONSEINHEIT_ID); - } - - @Test - void shouldThrowExceptionIfOrganisationsEinheitIsNotPresent() { - var emptyOrganisationsEinheitId = Optional.<String>empty(); - - assertThatThrownBy(() -> resolver.getVorgangManagerAddress(emptyOrganisationsEinheitId)).isInstanceOf(TechnicalException.class); - } - - @Test - void shouldReturnAddress() { - when(zufiService.getVorgangManagerUrl(any())).thenReturn(vorgangManagerAddress); - - var address = getVorgangManagerAddress(); - - assertThat(address).isEqualTo(vorgangManagerAddress); - - } - - private String getVorgangManagerAddress() { - return resolver.getVorgangManagerAddress(organisationsEinheitenId); - } - } - - @DisplayName("Create stub by configured channels") - @Nested - class TestCreateStubByConfiguredChannels { - - @Mock - private Channel channel; - @Mock - private StubFactory stubFactory; - @Mock - private AbstractStub<?> createdStub; - - private Class<? extends AbstractStub<?>> stubClass = VorgangServiceBlockingStub.class; - - @BeforeEach - void initTest() { - doReturn(VorgangManagerListPropertiesTestFactory.CHANNEL_NAME).when(resolver).getChannelName(any()); - doReturn(channel).when(resolver).createChannelByName(any()); - setProperties(VorgangManagerListPropertiesTestFactory.createForSingleRouting()); - doReturn(createdStub).when(resolver).applyStubTransformers(any(), any()); - } - - @Test - void shouldGetChannel() { - createStubByConfiguredChannels(); - - verify(resolver).createChannelByName(VorgangManagerListPropertiesTestFactory.CHANNEL_NAME); - } - - @Test - void shouldApplyTransformers() { - createStubByConfiguredChannels(); - - verify(resolver).applyStubTransformers(any(), any()); - } - - @Test - void shouldCreateStubByFactory() { - createStubByConfiguredChannels(); - - verify(stubFactory).createStub(eq(stubClass), any()); - } - - @Test - void shouldReturnStub() { - var stub = createStubByConfiguredChannels(); - - assertThat(stub.get()).isEqualTo(createdStub); - } - - private ManagableStub<?> createStubByConfiguredChannels() { - return resolver.createStubByConfiguredChannels(Optional.of(VorgangManagerListPropertiesTestFactory.ORGANISATIONSEINHEIT_ID), stubFactory, - VorgangServiceBlockingStub.class); - } - } - - @Nested - class TestGetChannelName { - - @Test - void shouldUseSingleName() { - setProperties(VorgangManagerListPropertiesTestFactory.createForSingleRouting()); - - var name = resolver.getChannelName(Optional.empty()); - - assertThat(name).contains(VorgangManagerListPropertiesTestFactory.CHANNEL_NAME); - } - - @Test - void shouldUseNameFromMap() { - setProperties(VorgangManagerListPropertiesTestFactory.createForMultiRouting()); - - var name = resolver.getChannelName(Optional.of(VorgangManagerListPropertiesTestFactory.ORGANISATIONSEINHEIT_ID)); - - assertThat(name).contains(VorgangManagerListPropertiesTestFactory.CHANNEL_NAME); - } - - @Test - void shouldGetFundstellenName() { - setProperties(VorgangManagerListPropertiesTestFactory.createWithFundstelle()); - - var name = resolver.getChannelName(Optional.of("4711")); - - verify(resolver).getFundstelleChannelName(); - assertThat(name).isEqualTo(VorgangManagerListPropertiesTestFactory.FUNDSTELLE_CHANNEL_NAME); - } - } - - @Nested - class TestGetFundstellenChannelName { - - @Nested - class TestStrategyFundstelle { - - @Test - void shouldCreateChannel() { - setProperties(VorgangManagerListPropertiesTestFactory.createWithFundstelle()); - - var channel = resolver.getFundstelleChannelName(); - - assertThat(channel).isNotNull().isEqualTo(VorgangManagerListPropertiesTestFactory.FUNDSTELLE_CHANNEL_NAME); - } - - @Test - void shouldThrowExceptionIfFundstelleIsMissing() { - var props = VorgangManagerListPropertiesTestFactory.createWithFundstelle(); - props.setFundstelleVorgangManagerName(Optional.empty()); - setProperties(props); - - assertThrows(AdapterConfigurationException.class, () -> resolver.getFundstelleChannelName()); - } - } - - @Nested - class TestStrategyDeny { - - @Test - void shouldThrowException() { - setProperties(VorgangManagerListPropertiesTestFactory.createForMultiRouting()); - - assertThrows(UnknownOrganisationseinheitException.class, () -> resolver.getFundstelleChannelName()); - } - } - } - - @Nested - class TestCreateChannelByName { - - @Test - void shouldCallChannelFactory() { - resolver.createChannelByName(VorgangManagerListPropertiesTestFactory.VORGANG_MANAGER_NAME); - - verify(channelFactory).createChannel(VorgangManagerListPropertiesTestFactory.VORGANG_MANAGER_NAME); - } - } - - @Nested - class TestApplyStubTransformer { - - @Mock - private AbstractStub<?> stub; - @Mock - private StubTransformer transformer; - - @BeforeEach - void init() { - ReflectionTestUtils.setField(resolver, "stubTransformers", Collections.singleton(transformer)); - } - - @Test - void shouldCallTransform() { - resolver.applyStubTransformers(stub, VorgangManagerListPropertiesTestFactory.CHANNEL_NAME); - - verify(transformer).transform(VorgangManagerListPropertiesTestFactory.CHANNEL_NAME, stub); - } - } - - private void setProperties(VorgangManagerListProperties properties) { - ReflectionTestUtils.setField(resolver, "properties", properties); - } -} \ No newline at end of file diff --git a/router/src/test/java/de/ozgcloud/eingang/router/VorgangManagerServerResolverTestFactory.java b/router/src/test/java/de/ozgcloud/eingang/router/VorgangManagerServerResolverTestFactory.java deleted file mode 100644 index 45bfd38c..00000000 --- a/router/src/test/java/de/ozgcloud/eingang/router/VorgangManagerServerResolverTestFactory.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.router; - -import de.ozgcloud.vorgang.grpc.binaryFile.BinaryFileServiceGrpc; -import de.ozgcloud.vorgang.grpc.binaryFile.BinaryFileServiceGrpc.BinaryFileServiceStub; -import de.ozgcloud.vorgang.vorgang.VorgangServiceGrpc; -import de.ozgcloud.vorgang.vorgang.VorgangServiceGrpc.VorgangServiceBlockingStub; -import io.grpc.CallOptions; -import io.grpc.Channel; -import io.grpc.ClientCall; -import io.grpc.MethodDescriptor; -import io.grpc.stub.AbstractStub; - -public class VorgangManagerServerResolverTestFactory { - - public static AbstractStub<?> createAbstractStub() { - return VorgangServiceGrpc.newBlockingStub(new TestChannel()); - } - - public static VorgangServiceBlockingStub createVorgangBlockingStub() { - return VorgangServiceGrpc.newBlockingStub(new TestChannel()); - } - - public static BinaryFileServiceStub createBinaryFileStub() { - return BinaryFileServiceGrpc.newStub(new TestChannel()); - } - - static class TestChannel extends Channel { - - @Override - public <RequestT, ResponseT> ClientCall<RequestT, ResponseT> newCall(MethodDescriptor<RequestT, ResponseT> methodDescriptor, - CallOptions callOptions) { - return null; - } - - @Override - public String authority() { - return null; - } - } -} \ No newline at end of file diff --git a/router/src/test/java/de/ozgcloud/eingang/router/VorgangRemoteServiceTest.java b/router/src/test/java/de/ozgcloud/eingang/router/VorgangRemoteServiceTest.java deleted file mode 100644 index 0fd01eaa..00000000 --- a/router/src/test/java/de/ozgcloud/eingang/router/VorgangRemoteServiceTest.java +++ /dev/null @@ -1,581 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.router; - -import static org.assertj.core.api.Assertions.*; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.ArgumentMatchers.*; -import static org.mockito.Mockito.*; - -import java.io.InputStream; -import java.util.List; -import java.util.Optional; -import java.util.UUID; -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.TimeoutException; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.ValueSource; -import org.mockito.ArgumentCaptor; -import org.mockito.Captor; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.Spy; - -import de.ozgcloud.common.binaryfile.GrpcFileUploadUtils.FileSender; -import de.ozgcloud.common.errorhandling.TechnicalException; -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; -import de.ozgcloud.eingang.common.formdata.IncomingFile; -import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; -import de.ozgcloud.eingang.common.formdata.IncomingFileGroupTestFactory; -import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory; -import de.ozgcloud.eingang.common.formdata.ZustaendigeStelleTestFactory; -import de.ozgcloud.eingang.router.VorgangRemoteService.VorgangCreator; -import de.ozgcloud.vorgang.grpc.binaryFile.BinaryFileServiceGrpc.BinaryFileServiceStub; -import de.ozgcloud.vorgang.grpc.binaryFile.GrpcUploadBinaryFileMetaData; -import de.ozgcloud.vorgang.grpc.binaryFile.GrpcUploadBinaryFileRequest; -import de.ozgcloud.vorgang.grpc.binaryFile.GrpcUploadBinaryFileResponse; -import de.ozgcloud.vorgang.vorgang.GrpcCreateVorgangRequest; -import de.ozgcloud.vorgang.vorgang.GrpcCreateVorgangResponse; -import de.ozgcloud.vorgang.vorgang.GrpcEingang; -import de.ozgcloud.vorgang.vorgang.GrpcFinishCreationRequest; -import de.ozgcloud.vorgang.vorgang.GrpcFinishCreationResponse; -import de.ozgcloud.vorgang.vorgang.VorgangServiceGrpc.VorgangServiceBlockingStub; -import io.grpc.stub.CallStreamObserver; -import lombok.SneakyThrows; - -class VorgangRemoteServiceTest { - - @Spy - @InjectMocks - private VorgangRemoteService remoteService; - @Mock - private VorgangManagerServerResolver resolver; - @Mock - private GrpcEingangMapper eingangMapper; - - private VorgangCreator vorgangCreator; - - private final FormData formData = FormDataTestFactory.create(); - private final GrpcEingang eingang = GrpcEingang.newBuilder() - .addAttachments(GrpcIncomingFileGroupTestFactory.create()) - .addRepresentations(GrpcIncomingFileTestFactory.create()) - .build(); - private final String vorgangId = UUID.randomUUID().toString(); - private final String fileId = "42"; - - @DisplayName("Create vorgang") - @Nested - class TestCreateVorgang { - - @Mock - private ManagableStub<VorgangServiceBlockingStub> managableVorgangServiceStub; - @Mock - private VorgangServiceBlockingStub vorgangServiceStub; - - @Mock - private ManagableStub<BinaryFileServiceStub> managableBinaryFileServiceStub; - @Mock - private BinaryFileServiceStub binaryFileServiceStub; - - private final Optional<String> organisationsEinheitId = Optional.of(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID); - - @SneakyThrows - @BeforeEach - void mock() { - when(resolver.resolveVorgangServiceBlockingStubByOrganisationseinheitenId(any())).thenReturn(managableVorgangServiceStub); - when(managableVorgangServiceStub.get()).thenReturn(vorgangServiceStub); - - when(resolver.resolveBinaryFileServiceStubByOrganisationsEinheitId(any())).thenReturn(managableBinaryFileServiceStub); - when(managableBinaryFileServiceStub.get()).thenReturn(binaryFileServiceStub); - - when(eingangMapper.toEingang(any(), any())).thenReturn(eingang); - - doNothing().when(remoteService).logConnection(any(), any()); - doNothing().when(remoteService).finishStubConnections(any()); - } - - @DisplayName("with no exception occuring") - @Nested - class TestWithNoException { - - @SneakyThrows - @BeforeEach - void mock() { - doReturn(vorgangId).when(remoteService).createVorgang(any(), any(), any(), any()); - } - - @Test - void shouldGetVorgangService() { - createVorgang(); - - verify(resolver).resolveVorgangServiceBlockingStubByOrganisationseinheitenId(organisationsEinheitId); - } - - @Test - void shouldGetBinaryFileService() { - createVorgang(); - - verify(resolver).resolveBinaryFileServiceStubByOrganisationsEinheitId(organisationsEinheitId); - } - - @SneakyThrows - @Test - void shouldCreateVorgang() { - createVorgang(); - - verify(remoteService).createVorgang(formData, eingang, vorgangServiceStub, binaryFileServiceStub); - } - - @Test - void shouldCallEingangMapper() { - createVorgang(); - - verify(eingangMapper).toEingang(formData, organisationsEinheitId); - } - - @Test - void shouldFinishStubConnection() { - createVorgang(); - - verify(remoteService).finishStubConnections(List.of(managableVorgangServiceStub, managableBinaryFileServiceStub)); - } - - @Test - void shouldReturnVorgangId() { - var created = createVorgang(); - - assertThat(created).isEqualTo(vorgangId); - - } - } - - @DisplayName("on exception") - @Nested - class TestOnException { - - @SneakyThrows - @BeforeEach - void mock() { - doThrow(RuntimeException.class).when(remoteService).createVorgang(any(), any(), any(), any()); - } - - @SneakyThrows - @Test - void shouldFinishStubConnections() { - try { - createVorgang(); - } catch (Exception e) { - // Do nothing - } - - verify(remoteService).finishStubConnections(List.of(managableVorgangServiceStub, managableBinaryFileServiceStub)); - } - } - - @SneakyThrows - private String createVorgang() { - return remoteService.createVorgang(formData, organisationsEinheitId); - } - } - - @DisplayName("Finish stub connections") - @Nested - class TestFinishStubConnections { - - @Mock - private ClosableStub<VorgangServiceBlockingStub> closableStub; - - @BeforeEach - void mock() { - when(closableStub.isShutdownable()).thenReturn(true); - doNothing().when(closableStub).close(); - } - - @Test - void shouldCheckIfSubIsShutdownable() { - remoteService.finishStubConnections(List.of(closableStub)); - - verify(closableStub).isShutdownable(); - } - - @Test - void shouldShutDownChannelForClosableStubs() { - remoteService.finishStubConnections(List.of(closableStub)); - - verify((ClosableStub) closableStub).close(); - } - } - - @DisplayName("VorgangCreator") - @Nested - class TestVorgangCreator { - - @Mock - private final VorgangServiceBlockingStub vorgangStub = VorgangManagerServerResolverTestFactory.createVorgangBlockingStub(); - @Mock - private final BinaryFileServiceStub binaryFileStub = VorgangManagerServerResolverTestFactory.createBinaryFileStub(); - @Mock - private GrpcEingangMapper eingangMapper; - - @BeforeEach - void init() { - vorgangCreator = spy(remoteService.new VorgangCreator(formData, eingang, vorgangStub, binaryFileStub)); - } - - @Nested - class TestCreateVorgang { - - @Mock - private CallStreamObserver<GrpcUploadBinaryFileRequest> requestObserver; - @Captor - private ArgumentCaptor<GrpcCreateVorgangRequest> requestCaptor; - @Captor - private ArgumentCaptor<GrpcFinishCreationRequest> finishRequestCaptor; - - private final GrpcCreateVorgangResponse createVorgangResponse = GrpcCreateVorgangResponse.newBuilder().setVorgangId(vorgangId).build(); - private final GrpcFinishCreationResponse finishResponse = GrpcFinishCreationResponse.newBuilder().setMessage("OK").build(); - - @BeforeEach - void init() { - when(vorgangStub.startCreation(any())).thenReturn(createVorgangResponse); - when(vorgangStub.finishCreation(any())).thenReturn(finishResponse); - doReturn(fileId).when(vorgangCreator).uploadIncomingFile(any()); - doReturn(GrpcFinishCreationRequest.newBuilder().build()).when(vorgangCreator).buildFinishCreationRequest(); - } - - @Test - void shouldStartCreation() { - createVorgang(); - - verify(vorgangStub).startCreation(any(GrpcCreateVorgangRequest.class)); - } - - @Test - void shouldStartCreationWithEmptyAttachmetns() { - createVorgang(); - - verify(vorgangStub).startCreation(requestCaptor.capture()); - assertThat(requestCaptor.getValue().getEingang().getAttachmentsList()).isEmpty(); - } - - @Test - void shouldStartCreationWithEmptyRepresentations() { - createVorgang(); - - verify(vorgangStub).startCreation(requestCaptor.capture()); - assertThat(requestCaptor.getValue().getEingang().getRepresentationsList()).isEmpty(); - } - - @Test - void shouldCallUploadAttachments() { - createVorgang(); - - verify(vorgangCreator).uploadAttachments(); - } - - @Test - void shouldCallUploadRepresentations() { - createVorgang(); - - verify(vorgangCreator).uploadRepresentations(); - } - - @Test - void shouldFinishCreation() { - createVorgang(); - - verify(vorgangStub).finishCreation(finishRequestCaptor.capture()); - assertThat(finishRequestCaptor.getValue()).isInstanceOf(GrpcFinishCreationRequest.class); - } - - @Test - void shouldReturnVorgangId() { - var result = createVorgang(); - - assertThat(result).isEqualTo(vorgangId); - } - - @SneakyThrows - private String createVorgang() { - return vorgangCreator.create(); - } - } - - @Nested - class TestUploadAttachments { - - @BeforeEach - void mockFileId() { - doReturn(fileId).when(vorgangCreator).uploadIncomingFile(any()); - } - - @Test - void shouldCallUploadIncomingFile() { - vorgangCreator.uploadAttachments(); - - verify(vorgangCreator, times(2)).uploadIncomingFile(any(IncomingFile.class)); - } - - @Test - void shouldSetFileId() { - var uploadedAttachments = vorgangCreator.uploadAttachments(); - - assertThat(uploadedAttachments.get(0).getFiles().get(0).getId()).isEqualTo(fileId); - } - } - - @Nested - class TestUploadRepresentations { - - @BeforeEach - void mockFileId() { - doReturn(fileId).when(vorgangCreator).uploadIncomingFile(any()); - } - - @Test - void shouldCallUploadIncomingFile() { - vorgangCreator.uploadRepresentations(); - - verify(vorgangCreator).uploadIncomingFile(any(IncomingFile.class)); - } - - @Test - void shouldSetFileId() { - var uploadedRepresentations = vorgangCreator.uploadRepresentations(); - - assertThat(uploadedRepresentations.get(0).getId()).isEqualTo(fileId); - } - } - - @Nested - class TestBuildMetaDataRequest { - - @BeforeEach - void mockMapper() { - doReturn(vorgangId).when(vorgangCreator).getVorgangId(); - } - - @Test - void shouldContainsContext() { - var metaData = buildMetaData(); - - assertThat(metaData.getContext().getClient()).isEqualTo(VorgangRemoteService.VorgangCreator.CALL_CONTEXT_CLIENT); - } - - @Test - void shouldContainsVorgangId() { - var metaData = buildMetaData(); - - assertThat(metaData.getVorgangId()).isEqualTo(vorgangId); - } - - @Test - void shouldContainsField() { - var metaData = buildMetaData(); - - assertThat(metaData.getField()).isEqualTo(VorgangRemoteService.VorgangCreator.VORGANG_ATTACHMENT_FIELD); - } - - @Test - void shouldContainsContentType() { - var metaData = buildMetaData(); - - assertThat(metaData.getContentType()).isEqualTo(IncomingFileTestFactory.CONTENT_TYPE); - } - - @Test - void shouldContainsSize() { - var metaData = buildMetaData(); - - assertThat(metaData.getSize()).isEqualTo(IncomingFileTestFactory.SIZE); - } - - @Test - void shouldContainsFileName() { - var metaData = buildMetaData(); - - assertThat(metaData.getFileName()).isEqualTo(IncomingFileTestFactory.NAME); - } - - private GrpcUploadBinaryFileMetaData buildMetaData() { - return vorgangCreator.buildMetaDataRequest(IncomingFileTestFactory.create()).getMetadata(); - } - } - - @DisplayName("update incoming file") - @Nested - class TestUpdateIncomingFile { - - @Mock - private IncomingFile incomingFile; - - @Mock - private InputStream inputStream; - - @Mock - private GrpcUploadBinaryFileResponse response; - - @Mock - private GrpcUploadBinaryFileRequest request; - - @BeforeEach - void mock() { - doReturn(response).when(vorgangCreator).waitUntilFutureToComplete(any(), any()); - when(incomingFile.getContentStream()).thenReturn(inputStream); - doReturn(request).when(vorgangCreator).buildMetaDataRequest(any()); - } - - @DisplayName("should call get content stream") - @Test - void shouldCallGetContentStream() { - vorgangCreator.uploadIncomingFile(incomingFile); - - verify(incomingFile).getContentStream(); - } - - @DisplayName("should call build request with incoming file") - @Test - void shouldCallBuildRequestWithIncomingFile() { - vorgangCreator.uploadIncomingFile(incomingFile); - - verify(vorgangCreator).buildMetaDataRequest(incomingFile); - } - - @DisplayName("should call wait until future complete") - @Test - void shouldCallWaitUntilFutureComplete() { - vorgangCreator.uploadIncomingFile(incomingFile); - - verify(vorgangCreator).waitUntilFutureToComplete(any(), eq(inputStream)); - } - - } - - @Nested - class TestWaitUntilFutureToComplete { - - @Mock - private FileSender<GrpcUploadBinaryFileRequest, GrpcUploadBinaryFileResponse> sender; - - @Mock - private CompletableFuture<GrpcUploadBinaryFileResponse> streamFuture; - - @Mock - private InputStream inputStream; - - @BeforeEach - void initSender() { - when(sender.getResultFuture()).thenReturn(streamFuture); - } - - @Test - void shouldNotThrowException() { - assertDoesNotThrow(() -> vorgangCreator.waitUntilFutureToComplete(sender, inputStream)); - } - - @ParameterizedTest - @ValueSource(classes = { InterruptedException.class, ExecutionException.class, TimeoutException.class }) - void shouldRethrowAsTechnicalException(Class<Exception> exception) - throws InterruptedException, ExecutionException, TimeoutException { - doThrow(exception).when(streamFuture).get(anyLong(), any(TimeUnit.class)); - - assertThrows(TechnicalException.class, () -> vorgangCreator.waitUntilFutureToComplete(sender, inputStream)); - } - - @ParameterizedTest - @ValueSource(classes = { InterruptedException.class, ExecutionException.class, TimeoutException.class }) - @SneakyThrows - void shouldCloseFileContentStreamOnException(Class<Exception> exception) { - doThrow(exception).when(streamFuture).get(anyLong(), any(TimeUnit.class)); - - waitUntilFutureToComplete(); - - verify(inputStream).close(); - } - - @Test - @SneakyThrows - void shouldCloseFileContent() { - waitUntilFutureToComplete(); - - verify(inputStream).close(); - } - - private void waitUntilFutureToComplete() { - try { - vorgangCreator.waitUntilFutureToComplete(sender, inputStream); - } catch (Exception e) { - // ignored - } - } - } - - @Nested - class TestBuildFinishCreationRequest { - - private final IncomingFileGroup attachment = IncomingFileGroupTestFactory.create(); - private final IncomingFile representation = IncomingFileTestFactory.create(); - - @BeforeEach - void mock() { - doReturn(vorgangId).when(vorgangCreator).getVorgangId(); - doReturn(List.of(attachment)).when(vorgangCreator).getUploadedAttachments(); - doReturn(List.of(representation)).when(vorgangCreator).getUploadedRepresentations(); - } - - @Test - void shouldContainsVorgangId() { - var request = buildFinishCreationRequest(); - - assertThat(request.getVorgangId()).isEqualTo(vorgangId); - } - - @Test - void shouldContainsAttachmentWithoutContent() { - var request = buildFinishCreationRequest(); - - assertThat(request.getAttachments(0).getFiles(0).getContent()).isEmpty(); - } - - @Test - void shouldContainsRepresentationsWithoutContent() { - var request = buildFinishCreationRequest(); - - assertThat(request.getRepresentations(0).getContent()).isEmpty(); - } - - private GrpcFinishCreationRequest buildFinishCreationRequest() { - return vorgangCreator.buildFinishCreationRequest(); - } - } - } -} \ No newline at end of file diff --git a/router/src/test/java/de/ozgcloud/eingang/router/VorgangServiceTest.java b/router/src/test/java/de/ozgcloud/eingang/router/VorgangServiceTest.java deleted file mode 100644 index 74cd1e90..00000000 --- a/router/src/test/java/de/ozgcloud/eingang/router/VorgangServiceTest.java +++ /dev/null @@ -1,349 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.router; - -import static de.ozgcloud.eingang.common.formdata.FormDataTestFactory.*; -import static java.util.Collections.*; -import static org.assertj.core.api.Assertions.*; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.Mockito.*; - -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Path; -import java.util.List; -import java.util.Optional; -import java.util.stream.Stream; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.Spy; - -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; -import de.ozgcloud.eingang.common.formdata.FormHeader; -import de.ozgcloud.eingang.common.formdata.FormHeaderTestFactory; -import de.ozgcloud.eingang.common.formdata.IncomingFile; -import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory; -import de.ozgcloud.eingang.common.formdata.ServiceKonto; -import de.ozgcloud.eingang.common.formdata.ServiceKontoTestFactory; -import de.ozgcloud.eingang.common.formdata.ZustaendigeStelleTestFactory; - -class VorgangServiceTest { - - @Spy - @InjectMocks - private VorgangService service; - @Mock - private VorgangRemoteService remoteService; - - private final FormData formData = FormDataTestFactory.create(); - - @DisplayName("Create vorgang") - @Nested - class TestCreateVorgang { - private final FormData preservedFormData = FormDataTestFactory.create(); - private final List<String> organisationseinheitIds = List.of(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID); - - @BeforeEach - void mockEingangMapper() { - doReturn(preservedFormData).when(service).preserveConsistency(any()); - doReturn(organisationseinheitIds).when(service).getOrganisationsEinheitIds(any()); - doReturn(VORGANG_ID).when(service).createVorgangForOrganisationsEinheitIds(any(), any()); - doNothing().when(service).cleanupFormDataFiles(any()); - } - - @Test - void shouldPreserverConsistency() { - callCreateVorgang(); - - verify(service).preserveConsistency(formData); - } - - @DisplayName("should call create vorgang for organisationseinheitIds") - @Test - void shouldCallCreateVorgangForOrganisationseinheitIds() { - callCreateVorgang(); - - verify(service).createVorgangForOrganisationsEinheitIds(organisationseinheitIds, preservedFormData); - } - - @DisplayName("should call get organisationseinheit ids") - @Test - void shouldCallGetOrganisationseinheitIds() { - callCreateVorgang(); - - verify(service).getOrganisationsEinheitIds(formData); - } - - @DisplayName("should return vorgang id") - @Test - void shouldReturn() { - var vorgangId = callCreateVorgang(); - - assertThat(vorgangId).isEqualTo(VORGANG_ID); - } - - @DisplayName("should call cleanup form data files") - @Test - void shouldCallCleanupFormDataFiles() { - callCreateVorgang(); - - verify(service).cleanupFormDataFiles(formData); - } - - private String callCreateVorgang() { - return service.createVorgang(formData); - } - } - - @DisplayName("cleanup form data files") - @Nested - class TestCleanupFormDataFiles { - private final IncomingFile incomingFile = IncomingFileTestFactory.create(); - - @BeforeEach - void mock() { - doReturn(Stream.of(incomingFile)).when(service).getFormDataFiles(formData); - } - - @DisplayName("should call delete incoming file") - @Test - void shouldCallDeleteIncomingFile() { - service.cleanupFormDataFiles(formData); - - verify(service).deleteIncomingFile(incomingFile.getFile().toPath()); - } - } - - @DisplayName("get form data files") - @Nested - class TestGetFormDataFiles { - - private final FormData formData = FormDataTestFactory.create(); - - @DisplayName("should return attachments and representations") - @Test - void shouldReturnAttachmentsAndRepresentations() { - var files = service.getFormDataFiles(formData).toList(); - - assertThat(files).hasSize(3); - } - } - - @DisplayName("delete incoming file") - @Nested - class TestDeleteIncomingFile { - - @Mock - private Path path; - - @DisplayName("should call deleteIfExists") - @Test - void shouldCallDeleteIfExists() { - try (var staticMock = mockStatic(Files.class)) { - service.deleteIncomingFile(path); - - staticMock.verify(() -> Files.deleteIfExists(path)); - } - } - - @DisplayName("should return") - @Test - void shouldReturn() { - try (var staticMock = mockStatic(Files.class)) { - staticMock.when(() -> Files.deleteIfExists(path)).thenReturn(true); - - service.deleteIncomingFile(path); - } - } - - @DisplayName("should log on error") - @Test - void shouldLogOnError() { - var exception = new IOException(); - try (var staticMock = mockStatic(Files.class)) { - staticMock.when(() -> Files.deleteIfExists(path)).thenThrow(exception); - - service.deleteIncomingFile(path); - - verify(service).logErrorOnDeleteFailure(exception); - } - } - - } - - @DisplayName("create vorgang for organisationsEinheitIds") - @Nested - class TestCreateVorgangForOrganisationsEinheitIds { - private final FormData preservedFormData = FormDataTestFactory.create(); - private final List<String> organisationseinheitIds = List.of(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID); - - @DisplayName("should call create multiple vorgangs") - @Test - void shouldCallCreateMultipleVorgangs() { - service.createVorgangForOrganisationsEinheitIds(organisationseinheitIds, preservedFormData); - - verify(service).createMultipleVorgangs(preservedFormData, organisationseinheitIds); - } - - @DisplayName("should return first vorgang id with multiple organisationseinheits") - @Test - void shouldReturnFirstVorgangIdWithMultipleOrganisationseinheits() { - doReturn(List.of(VORGANG_ID)).when(service).createMultipleVorgangs(any(), any()); - - var vorgangId = service.createVorgangForOrganisationsEinheitIds(organisationseinheitIds, preservedFormData); - - assertThat(vorgangId).isEqualTo(VORGANG_ID); - } - - @DisplayName("should call create vorgang on missing zustaendige stelle if organisationseinheit is missing") - @Test - void shouldCallCreateVorgangOnMissingZustaendigeStelleIfOrganisationseinheitIsMissing() { - service.createVorgangForOrganisationsEinheitIds(emptyList(), preservedFormData); - - verify(service).createVorgangOnMissingZustaendigeStelle(eq(preservedFormData)); - } - - @DisplayName("should return single vorgang id if organisationseinheit is missing") - @Test - void shouldReturnSingleVorgangIdIfOrganisationseinheitIsMissing() { - doReturn(VORGANG_ID).when(service).createVorgangOnMissingZustaendigeStelle(any()); - - var firstVorgangId = service.createVorgangForOrganisationsEinheitIds(emptyList(), preservedFormData); - - assertThat(firstVorgangId).isEqualTo(VORGANG_ID); - } - - } - - @DisplayName("create vorgang on missing zustaendige stelle") - @Nested - class TestVorgangOnMissingZustaendigeStelle { - @Mock - private FormData formData; - - @BeforeEach - void mock() { - when(remoteService.createVorgang(any(), any())).thenReturn(VORGANG_ID); - } - - @DisplayName("should call create vorgang") - @Test - void shouldCallCreateVorgang() { - service.createVorgangOnMissingZustaendigeStelle(formData); - - verify(remoteService).createVorgang(formData, Optional.empty()); - } - - @DisplayName("should return") - @Test - void shouldReturn() { - var vorgangId = service.createVorgangOnMissingZustaendigeStelle(formData); - - assertThat(vorgangId).isEqualTo(VORGANG_ID); - } - } - - @DisplayName("create multiple vorgangs") - @Nested - class TestCreateMultipleVorgangs { - - @Mock - private FormData formData; - - @BeforeEach - void mock() { - when(remoteService.createVorgang(any(), any())).thenReturn(VORGANG_ID); - } - - @DisplayName("should call create vorgang twice") - @Test - void shouldCallCreateVorgangTwice() { - service.createMultipleVorgangs(formData, List.of(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID)); - - verify(remoteService).createVorgang(formData, Optional.of(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID)); - } - - @DisplayName("should return") - @Test - void shouldReturn() { - var vorgangIds = service.createMultipleVorgangs(formData, List.of(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID)); - - assertThat(vorgangIds).containsExactly(VORGANG_ID); - } - } - - @DisplayName("get organisationseinheit ids") - @Nested - class TestGetOrganisationseinheitIds { - private final FormData preservedFormData = FormDataTestFactory.create(); - - @DisplayName("should return") - @Test - void shouldReturn() { - var organisationseinheitIds = service.getOrganisationsEinheitIds(preservedFormData); - - assertThat(organisationseinheitIds).containsExactly(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID); - } - } - - @DisplayName("Preserve consistency") - @Nested - class TestPreserveConsistency { - - private final ServiceKonto serviceKonto = ServiceKontoTestFactory.createBuilder().clearPostfachAddresses().build(); - private final FormHeader header = FormHeaderTestFactory.createBuilder().serviceKonto(serviceKonto).build(); - private final FormData formData = FormDataTestFactory.createBuilder().header(header).build(); - - @DisplayName("should set serviceKonto to null if no postfachAddress exists") - @Test - void shouldSetServiceKontoToNull() { - var consistentFormData = service.preserveConsistency(formData); - - assertThat(consistentFormData.getHeader().getServiceKonto()).isNull(); - } - - @DisplayName("should keep serviceKonto if postfachAddress exists") - @Test - void shouldKeepServiceKonto() { - var consistentFormData = service.preserveConsistency(FormDataTestFactory.create()); - - assertThat(consistentFormData.getHeader().getServiceKonto()).isEqualTo(FormHeaderTestFactory.SERVICE_KONTO); - } - - @DisplayName("should proceed without exception on missing serviceKonto") - @Test - void shouldProceedWithoutException() { - var formDataWithoutServiceKonto = FormDataTestFactory.createBuilder() - .header(FormHeaderTestFactory.createBuilder().serviceKonto(null).build()).build(); - - assertDoesNotThrow(() -> service.preserveConsistency(formDataWithoutServiceKonto)); - } - } -} \ No newline at end of file diff --git a/router/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension b/router/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension deleted file mode 100644 index 79b126e6..00000000 --- a/router/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension +++ /dev/null @@ -1 +0,0 @@ -org.mockito.junit.jupiter.MockitoExtension \ No newline at end of file diff --git a/router/src/test/resources/junit-platform.properties b/router/src/test/resources/junit-platform.properties deleted file mode 100644 index 1cebb76d..00000000 --- a/router/src/test/resources/junit-platform.properties +++ /dev/null @@ -1 +0,0 @@ -junit.jupiter.extensions.autodetection.enabled = true \ No newline at end of file diff --git a/router/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker b/router/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker deleted file mode 100644 index ca6ee9ce..00000000 --- a/router/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker +++ /dev/null @@ -1 +0,0 @@ -mock-maker-inline \ No newline at end of file diff --git a/run_filereader.sh b/run_filereader.sh deleted file mode 100755 index 765453ab..00000000 --- a/run_filereader.sh +++ /dev/null @@ -1,36 +0,0 @@ -#!/bin/bash -# -# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - - -set -x - -TEST_DIR=/tmp/kop-afm-filereader - -rm -R $TEST_DIR -mkdir -p $TEST_DIR -cp -a src/test/resources/intelliform/filereader/example/* $TEST_DIR - - -./mvnw spring-boot:run -Dspring-boot.run.arguments="--ozgcloud.adapter.intelliform.filereader.path=file:$TEST_DIR" diff --git a/run_helm_test.sh b/run_helm_test.sh deleted file mode 100755 index ccc03d0f..00000000 --- a/run_helm_test.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh - -set -e - -helm template ./src/main/helm/ -f src/test/helm-linter-values.yaml -helm lint -f src/test/helm-linter-values.yaml ./src/main/helm/ -cd src/main/helm && helm unittest -f '../../test/helm/**/*.yaml' . \ No newline at end of file diff --git a/run_local.sh b/run_local.sh deleted file mode 100755 index 354eae7e..00000000 --- a/run_local.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/bash -# -# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - - - -./mvnw spring-boot:run -Dspring-boot.run.profiles=local diff --git a/semantik-adapter/pom.xml b/semantik-adapter/pom.xml deleted file mode 100644 index 0dc445cd..00000000 --- a/semantik-adapter/pom.xml +++ /dev/null @@ -1,96 +0,0 @@ -<?xml version="1.0"?> -<!-- - - Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - Ministerpräsidenten des Landes Schleswig-Holstein - Staatskanzlei - Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - - Lizenziert unter der EUPL, Version 1.2 oder - sobald - diese von der Europäischen Kommission genehmigt wurden - - Folgeversionen der EUPL ("Lizenz"); - Sie dürfen dieses Werk ausschließlich gemäß - dieser Lizenz nutzen. - Eine Kopie der Lizenz finden Sie hier: - - https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - - Sofern nicht durch anwendbare Rechtsvorschriften - gefordert oder in schriftlicher Form vereinbart, wird - die unter der Lizenz verbreitete Software "so wie sie - ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - ausdrücklich oder stillschweigend - verbreitet. - Die sprachspezifischen Genehmigungen und Beschränkungen - unter der Lizenz sind dem Lizenztext zu entnehmen. - ---> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> - - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>de.ozgcloud.eingang</groupId> - <artifactId>eingang-manager</artifactId> - <version>2.16.0-SNAPSHOT</version> - </parent> - - <artifactId>semantik-adapter</artifactId> - <name>Eingangs Adapter - Semantik</name> - - <dependencies> - <!-- own projects --> - <dependency> - <groupId>de.ozgcloud.eingang</groupId> - <artifactId>router</artifactId> - </dependency> - - <!-- Tools --> - <dependency> - <groupId>com.fasterxml.jackson.dataformat</groupId> - <artifactId>jackson-dataformat-xml</artifactId> - </dependency> - - <dependency> - <groupId>org.apache.commons</groupId> - <artifactId>commons-collections4</artifactId> - </dependency> - - <!-- test --> - <dependency> - <groupId>de.ozgcloud.eingang</groupId> - <artifactId>common</artifactId> - <type>test-jar</type> - <scope>test</scope> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-jar-plugin</artifactId> - <executions> - <execution> - <goals> - <goal>test-jar</goal> - </goals> - </execution> - </executions> - </plugin> - - <plugin> - <groupId>org.jacoco</groupId> - <artifactId>jacoco-maven-plugin</artifactId> - </plugin> - - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-surefire-plugin</artifactId> - </plugin> - - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-failsafe-plugin</artifactId> - </plugin> - </plugins> - </build> -</project> diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/SemantikAdapter.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/SemantikAdapter.java deleted file mode 100644 index 65c69a87..00000000 --- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/SemantikAdapter.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.semantik; - -import java.util.List; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.router.VorgangService; -import de.ozgcloud.eingang.semantik.enginebased.EngineBasedSemantikAdapter; -import de.ozgcloud.eingang.semantik.formbased.FormBasedSemantikAdapter; -import lombok.extern.log4j.Log4j2; - -@Log4j2 -@Service -public class SemantikAdapter { - - @Autowired - private List<EngineBasedSemantikAdapter> engineBasedAdapters; - @Autowired - private FormBasedSemantikAdapter formBasedAdapter; - @Autowired - private VorgangService vorgangService; - - public String processFormData(FormData formData) { - formData = parseByEngineAdapter(formData); - formData = parseByFormAdapter(formData); - - return vorgangService.createVorgang(formData); - } - - private FormData parseByEngineAdapter(FormData formData) { - List<EngineBasedSemantikAdapter> responsibleEngineAdapters = getResponsibleEngineAdapters(formData); - for (var adapter : responsibleEngineAdapters) { - try { - formData = adapter.parseFormData(formData); - } catch (Exception e) { - LOG.error("beim Vorgang {} ist ein Fehler beim Parsing aufgetreten. Der Antrag wird trotzdem übernommen", formData.getId(), e); - } - } - return formData; - } - - List<EngineBasedSemantikAdapter> getResponsibleEngineAdapters(FormData formData) { - return engineBasedAdapters.stream() - .filter(adapter -> adapter.isResponsible(formData)) - .toList(); - } - - private FormData parseByFormAdapter(FormData formData) { - return formBasedAdapter.parseFormData(formData); - } -} diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/common/ReadZipException.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/common/ReadZipException.java deleted file mode 100644 index c3fcc85a..00000000 --- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/common/ReadZipException.java +++ /dev/null @@ -1,12 +0,0 @@ -package de.ozgcloud.eingang.semantik.common; - -public class ReadZipException extends RuntimeException { - - public ReadZipException(String message) { - super(message); - } - - public ReadZipException(String message, Throwable cause) { - super(message, cause); - } -} diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/common/ServiceKontoFactory.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/common/ServiceKontoFactory.java deleted file mode 100644 index c8eeb923..00000000 --- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/common/ServiceKontoFactory.java +++ /dev/null @@ -1,133 +0,0 @@ -package de.ozgcloud.eingang.semantik.common; - -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; - -import org.apache.commons.collections.MapUtils; -import org.springframework.stereotype.Component; - -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.PostfachAddressIdentifier; -import de.ozgcloud.eingang.common.formdata.ServiceKonto; -import de.ozgcloud.eingang.common.formdata.ServiceKonto.PostfachAddress; -import de.ozgcloud.eingang.common.formdata.ServiceKonto.TrustLevel; -import de.ozgcloud.eingang.common.formdata.StringBasedIdentifier; -import lombok.extern.log4j.Log4j2; - -@Component -@Log4j2 -public class ServiceKontoFactory { - - public static final int POSTFACH_ADDRESS_DEFAULT = 1; - public static final String POSTFACH_TYPE_OSI = "OSI"; - public static final String POSTFACH_TYPE_BAYERN_ID = "BAYERN_ID"; - public static final String POSTFACH_VERSION = "1.0"; - public static final String KEY_BAYERN_ID_POSTFACH_ID = "u:saml_legacypostkorbhandle"; - public static final String KEY_BAYERN_ID_TRUST_LEVEL = "u:saml_eid_citizen_qaa_level"; - - public static final String REST_RESPONSE_NAME = "rest_response_name"; - public static final String REST_RESPONSE_NAME_MEMBER_SCOPE = "memberscope"; - public static final String REST_RESPONSE_NAME_MEMBER_SCOPE_MAILBOX_TYPE = "mailboxtype"; - - public ServiceKonto buildOsiServiceKonto(String postfachId) { - return buildDefault(postfachId); - } - - public ServiceKonto buildOsiServiceKonto(String postfachId, FormData formData) { - return Optional.ofNullable(getRestResponseNames(formData)) - .filter(names -> !names.isEmpty()) - .map(restResponseNames -> buildWithRestResponseNames(postfachId, restResponseNames)) - .orElseGet(() -> buildDefault(postfachId)); - } - - ServiceKonto buildDefault(String postfachId) { - return ServiceKonto.builder().type(POSTFACH_TYPE_OSI).postfachAddress(buildPostfachAddress(postfachId)).build(); - } - - @SuppressWarnings("unchecked") - private List<Map<String, Object>> getRestResponseNames(FormData formData) { - return Optional.ofNullable(formData.getFormData().get(REST_RESPONSE_NAME)) - .filter(Objects::nonNull) - .map(List.class::cast) - .orElse(Collections.emptyList()); - } - - ServiceKonto buildWithRestResponseNames(String postfachId, List<Map<String, Object>> restResponseNames) { - return ServiceKonto.builder() - .type(POSTFACH_TYPE_OSI) - .postfachAddresses(buildPostfachAddresses(buildIdentifier(postfachId), restResponseNames)) - .build(); - } - - List<PostfachAddress> buildPostfachAddresses(PostfachAddressIdentifier identifier, List<Map<String, Object>> restResponseNames) { - return restResponseNames.stream().map(entry -> buildOsiPostfachV1Address(identifier, entry)).toList(); - } - - PostfachAddress buildOsiPostfachV1Address(PostfachAddressIdentifier identifier, Map<String, Object> restResponseName) { - return buildOsiPostfachV1Address(identifier, getPostfachAddressType(restResponseName)); - } - - PostfachAddress buildOsiPostfachV1Address(PostfachAddressIdentifier identifier, int postfachAddressType) { - return PostfachAddress.builder() - .type(postfachAddressType) - .version(POSTFACH_VERSION) - .identifier(identifier) - .build(); - } - - int getPostfachAddressType(Map<String, Object> restResponseName) { - return getMailboxType(restResponseName); - } - - private Integer getMailboxType(Map<String, Object> restResponseName) { - return (Integer) getMemberScope(restResponseName).get(REST_RESPONSE_NAME_MEMBER_SCOPE_MAILBOX_TYPE); - } - - @SuppressWarnings("unchecked") - private Map<String, Object> getMemberScope(Map<String, Object> restResponseName) { - return ((List<Map<String, Object>>) restResponseName.get(REST_RESPONSE_NAME_MEMBER_SCOPE)).get(0); - } - - public Optional<ServiceKonto> createBayernIdServiceKonto(Map<String, Object> formDataHeaders) { - if (Objects.isNull(formDataHeaders) || !formDataHeaders.containsKey(KEY_BAYERN_ID_POSTFACH_ID)) { - return Optional.empty(); - } - if (isValidTrustLevel(formDataHeaders)) { - return Optional.of(buildBayernIdServiceKonto(formDataHeaders)); - } - LOG.error("TrustLevel has an unexpected value '{}'. BayernID user account is not connected", getTrustLevel(formDataHeaders)); - return Optional.empty(); - } - - boolean isValidTrustLevel(Map<String, Object> formDataHeader) { - return TrustLevel.exists(getTrustLevel(formDataHeader)); - } - - ServiceKonto buildBayernIdServiceKonto(Map<String, Object> formDataHeaders) { - return ServiceKonto.builder() - .type(POSTFACH_TYPE_BAYERN_ID) - .postfachAddress(buildPostfachAddress(MapUtils.getString(formDataHeaders, KEY_BAYERN_ID_POSTFACH_ID))) - .trustLevel(getTrustLevel(formDataHeaders)) - .build(); - } - - PostfachAddress buildPostfachAddress(String postkorbHandle) { - return PostfachAddress.builder() - .type(POSTFACH_ADDRESS_DEFAULT) - .version(POSTFACH_VERSION) - .identifier(buildIdentifier(postkorbHandle)) - .build(); - } - - private PostfachAddressIdentifier buildIdentifier(String postfachId) { - return StringBasedIdentifier.builder().postfachId(postfachId).build(); - } - - String getTrustLevel(Map<String, Object> formDataHeaders) { - return MapUtils.getString(formDataHeaders, KEY_BAYERN_ID_TRUST_LEVEL); - } - -} \ No newline at end of file diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/common/ZipAttachmentReader.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/common/ZipAttachmentReader.java deleted file mode 100644 index 02b4e950..00000000 --- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/common/ZipAttachmentReader.java +++ /dev/null @@ -1,242 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.semantik.common; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.net.URLConnection; -import java.nio.file.Files; -import java.nio.file.StandardCopyOption; -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; -import java.util.Optional; -import java.util.concurrent.atomic.AtomicInteger; -import java.util.zip.ZipEntry; -import java.util.zip.ZipInputStream; - -import org.springframework.util.MimeTypeUtils; - -import de.ozgcloud.eingang.common.errorhandling.TechnicalException; -import de.ozgcloud.eingang.common.formdata.DeleteOnCloseInputStream; -import de.ozgcloud.eingang.common.formdata.IncomingFile; -import lombok.Getter; -import lombok.extern.log4j.Log4j2; - -@Log4j2 -public class ZipAttachmentReader { - - public static final String TMP_FILE_SUFFIX = ".ozg-cloud.tmp"; - public static final String SOURCE_ZIP_PREFIX = "zip-attachment"; - static final String TARGET_ATTACHMENT_PREFIX = "ozg_fs_attachment_"; - - private static final double ZIP_MAX_THRESHOLD = 100; - private static final int ZIP_MAX_TOTAL_SIZE = 500 * 1024 * 1024; - private static final int ZIP_MAX_ENTRIES = 100; - - private final File sourceZipFile; - @Getter - private final String sourceFileName; - - ZipAttachmentReader() { - this.sourceZipFile = null; - this.sourceFileName = null; - } - - private ZipAttachmentReader(InputStream sourceZipInputStream, String originalFileName) { - try { - this.sourceZipFile = saveSourceZipToFile(sourceZipInputStream, SOURCE_ZIP_PREFIX); - sourceZipInputStream.close(); - } catch (IOException e) { - throw new TechnicalException("Can not save original ZIP.", e); - } - this.sourceFileName = originalFileName; - } - - private ZipAttachmentReader(File sourceZipInputFile, String originalFileName) { - this.sourceZipFile = sourceZipInputFile; - this.sourceFileName = originalFileName; - } - - public static ZipAttachmentReader from(InputStream sourceZipInputStream, String originalFileName) { - return new ZipAttachmentReader(sourceZipInputStream, originalFileName); - } - - public static ZipAttachmentReader from(File sourceZipInputFile, String originalFileName) { - return new ZipAttachmentReader(sourceZipInputFile, originalFileName); - } - - protected static File saveSourceZipToFile(InputStream inputStream, String namePrefix) { - try { - File tempFile = File.createTempFile(namePrefix, TMP_FILE_SUFFIX); - Files.copy(inputStream, tempFile.toPath(), StandardCopyOption.REPLACE_EXISTING); - tempFile.deleteOnExit(); - return tempFile; - } catch (IOException e) { - throw new ReadZipException("Cannot save source ZIP file to local storage. Processing interrupted.", e); - } - } - - public List<IncomingFile> readContent() throws ReadZipException { - try (ZipInputStream sourceZipInputStream = new ZipInputStream(new FileInputStream(sourceZipFile))) { - return readContent(sourceZipInputStream); - } catch (IOException e) { - throw new ReadZipException("Cannot save file contained in ZIP. Processing interrupted.", e); - } - } - - public void deleteSourceFile() { - try { - Files.delete(sourceZipFile.toPath()); - } catch (IOException e) { - LOG.error("Error deleting source ZIP file.", e); - } - } - - List<IncomingFile> readContent(ZipInputStream sourceZipInputStream) throws IOException, ReadZipException { - ZipEntry nextEntry = entryExists(sourceZipInputStream.getNextEntry()); - List<IncomingFile> extractedFiles = new ArrayList<>(); - - AtomicInteger totalExtractedSize = new AtomicInteger(); - int totalZipEntries = 0; - - while (Objects.nonNull(nextEntry)) { - - final ZipEntry currentEntry = nextEntry; - - Optional.of(currentEntry) - .filter(entry -> !entry.isDirectory()) - .map(entry -> createLocalTempFile()) - .map(localFile -> { - int size = saveZipFileToLocalFile(currentEntry, sourceZipInputStream, localFile); - extractedFiles.add(createContentEntry(localFile, currentEntry)); - return size; - }) - .ifPresent(totalExtractedSize::addAndGet); - - totalZipEntries++; - checkTotalExtractedSize(totalExtractedSize.get()); - checkTotalZipEntries(totalZipEntries); - - nextEntry = sourceZipInputStream.getNextEntry(); - } - - return extractedFiles; - } - - File createLocalTempFile() { - try { - File localFile = File.createTempFile(TARGET_ATTACHMENT_PREFIX, TMP_FILE_SUFFIX); - localFile.deleteOnExit(); - return localFile; - } catch (IOException e) { - throw new ReadZipException("Could not create tmp file", e); - } - } - - void checkTotalExtractedSize(Integer totalExtractedSize) { - if (totalExtractedSize > ZIP_MAX_TOTAL_SIZE) { - throw new ReadZipException("Total size of uncompressed zip file is to high (" + totalExtractedSize + "> " + ZIP_MAX_TOTAL_SIZE + ")"); - } - } - - private void checkTotalZipEntries(Integer totalZipEntries) { - if (totalZipEntries > ZIP_MAX_ENTRIES) { - throw new ReadZipException("Total entries in zip file exceeded (" + totalZipEntries + "> " + ZIP_MAX_ENTRIES + ")"); - } - } - - private ZipEntry entryExists(ZipEntry entry) { - if (Objects.isNull(entry)) { - throw new ReadZipException("Zip archive either invalid or empty."); - } - return entry; - } - - int saveZipFileToLocalFile(ZipEntry zipEntry, InputStream inputStream, File localFile) { - try { - - try (FileOutputStream out = new FileOutputStream(localFile)) { - int totalSizeEntry = 0; - - int readBytes = -1; - byte[] buffer = new byte[2048]; - while ((readBytes = inputStream.read(buffer)) > 0) { // Compliant - out.write(buffer, 0, readBytes); - totalSizeEntry += readBytes; - - double compressionRatio = (double) totalSizeEntry / zipEntry.getCompressedSize(); - if (compressionRatio > ZIP_MAX_THRESHOLD) { - throw new ReadZipException( - "Ratio between compressed and uncompressed data is highly suspicious (" + compressionRatio - + "), looks like a Zip Bomb Attack"); - } - } - - return totalSizeEntry; - } - } catch (IOException e) { - throw new ReadZipException("Cannot save file contained in ZIP. Processing interrupted.", e); - } - } - - IncomingFile createContentEntry(File file, ZipEntry zipEntry) { - return IncomingFile.builder() - .name(zipEntry.getName()) - .size(zipEntry.getSize()) - .contentType(getContentType(zipEntry.getName())) - .file(file) - .build(); - } - - @Deprecated - public InputStream getSourceZipAsStream() { - try { - return new DeleteOnCloseInputStream(sourceZipFile); - } catch (FileNotFoundException e) { - throw new TechnicalException("Original ZIP was deleted", e); - } - } - - public File getSourceZip() { - return sourceZipFile; - } - - public long getSourceFileSize() { - try { - return Files.size(sourceZipFile.toPath()); - } catch (IOException e) { - throw new TechnicalException("Cannot get size of source ZIP.", e); - } - } - - String getContentType(String name) { - Objects.requireNonNull(name); - return Objects.requireNonNullElse(URLConnection.guessContentTypeFromName(name), MimeTypeUtils.APPLICATION_OCTET_STREAM_VALUE); - } -} diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/EngineBasedMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/EngineBasedMapper.java deleted file mode 100644 index 5b336e75..00000000 --- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/EngineBasedMapper.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.semantik.enginebased; - -import de.ozgcloud.eingang.common.formdata.FormData; - -public interface EngineBasedMapper { - - FormData parseFormData(FormData formData); -} diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/EngineBasedSemantikAdapter.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/EngineBasedSemantikAdapter.java deleted file mode 100644 index 9679dc72..00000000 --- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/EngineBasedSemantikAdapter.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.semantik.enginebased; - -import de.ozgcloud.eingang.common.formdata.FormData; - -public interface EngineBasedSemantikAdapter { - - FormData parseFormData(FormData formData); - - // TODO Umbauen zu `public String[] getFormEngines();` - default boolean isResponsible(FormData formData) { - return true; - } -} diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/FilesMapperHelper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/FilesMapperHelper.java deleted file mode 100644 index 3e0ccb8a..00000000 --- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/FilesMapperHelper.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.semantik.enginebased; - -import java.util.Collection; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; - -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.FormDataUtils; -import de.ozgcloud.eingang.common.formdata.IncomingFile; -import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; -import lombok.AccessLevel; -import lombok.NoArgsConstructor; - -@NoArgsConstructor(access = AccessLevel.PRIVATE) -public class FilesMapperHelper { - - public static final String REPRESENTATIONS = "parsedRepresentations"; - public static final String FIELD_NAME_MAPPED_FILES = "mappedFiles"; - public static final String ATTACHMENTS = "parsedAttachments"; - - public static Optional<Map<String, Object>> getMappedFiles(FormData formData) { - return Optional.ofNullable(formData).map(FormData::getFormData).map(map -> (Map<String, Object>) map.get(FIELD_NAME_MAPPED_FILES)); - } - - public static Optional<List<IncomingFileGroup>> getAttachedFileGroups(FormData formData) { - return getMappedFiles(formData).map(mappedFiles -> (List<IncomingFileGroup>) mappedFiles.get(ATTACHMENTS)); - } - - public static Optional<List<IncomingFile>> getRepresentations(FormData formData) { - return getMappedFiles(formData).map(mappedFiles -> (List<IncomingFile>) mappedFiles.get(REPRESENTATIONS)); - } - - public static int countAttachedFiles(Collection<IncomingFileGroup> fileGroups) { - return fileGroups.stream().filter(Objects::nonNull).mapToInt(group -> group.getFiles().size()).sum(); - } - - public static FormData removeProcessedData(FormData formData) { - return FormDataUtils.from(formData).remove(FIELD_NAME_MAPPED_FILES).build(); - } -} diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/a12/A12Eingang.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/a12/A12Eingang.java deleted file mode 100644 index c9f93b0c..00000000 --- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/a12/A12Eingang.java +++ /dev/null @@ -1,15 +0,0 @@ -package de.ozgcloud.eingang.semantik.enginebased.a12; - -import java.util.Map; - -import lombok.Builder; -import lombok.Getter; -import lombok.extern.jackson.Jacksonized; - -@Builder -@Getter -@Jacksonized -public class A12Eingang { - - private Map<String, Object> root; -} diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/a12/A12EngineBasedAdapter.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/a12/A12EngineBasedAdapter.java deleted file mode 100644 index ac42d7f7..00000000 --- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/a12/A12EngineBasedAdapter.java +++ /dev/null @@ -1,24 +0,0 @@ -package de.ozgcloud.eingang.semantik.enginebased.a12; - -import java.util.List; - -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.semantik.enginebased.EngineBasedSemantikAdapter; -import lombok.RequiredArgsConstructor; - -@RequiredArgsConstructor -public class A12EngineBasedAdapter implements EngineBasedSemantikAdapter { - - private final List<A12EngineBasedMapper> mappers; - - @Override - public FormData parseFormData(FormData formData) { - var processedFormData = formData; - - for (var mapper : mappers) { - processedFormData = mapper.parseFormData(processedFormData); - } - return processedFormData; - } - -} diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/a12/A12EngineBasedMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/a12/A12EngineBasedMapper.java deleted file mode 100644 index 3f441525..00000000 --- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/a12/A12EngineBasedMapper.java +++ /dev/null @@ -1,7 +0,0 @@ -package de.ozgcloud.eingang.semantik.enginebased.a12; - -import de.ozgcloud.eingang.semantik.enginebased.EngineBasedMapper; - -public interface A12EngineBasedMapper extends EngineBasedMapper { - -} diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/a12/A12FormDataMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/a12/A12FormDataMapper.java deleted file mode 100644 index 68872636..00000000 --- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/a12/A12FormDataMapper.java +++ /dev/null @@ -1,79 +0,0 @@ -package de.ozgcloud.eingang.semantik.enginebased.a12; - -import java.io.File; -import java.io.IOException; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Optional; - -import org.apache.commons.lang3.StringUtils; -import org.springframework.stereotype.Component; - -import com.fasterxml.jackson.databind.ObjectMapper; - -import de.ozgcloud.common.errorhandling.TechnicalException; -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.FormData.FormDataControl; -import de.ozgcloud.eingang.common.formdata.FormData.Representations; -import de.ozgcloud.eingang.common.formdata.IncomingFile; -import lombok.RequiredArgsConstructor; -import lombok.extern.log4j.Log4j2; - -@Log4j2 -@Component -@RequiredArgsConstructor -public class A12FormDataMapper implements A12EngineBasedMapper { - - private final ObjectMapper objectMapper; - - @Override - public FormData parseFormData(FormData formData) { - return mergeReadFormData(formData, getFormDataFile(formData)); - } - - private FormData mergeReadFormData(FormData formData, Optional<IncomingFile> inFile) { - return inFile.map(in -> readEingang(in.getFile())) - .map(eingang -> eingang.getRoot()) - .map(formDataMap -> merge(formDataMap, formData.getFormData())) - .map(formDataMap -> formData.toBuilder().formData(formDataMap).build()) - .orElse(formData); - } - - Optional<IncomingFile> getFormDataFile(FormData formData) { - var inFile = Optional.ofNullable(formData.getControl()) - .flatMap(FormDataControl::getRepresentations) - .map(Representations::getPrimaryFormDataRepresentation) - .flatMap(fileName -> getByName(fileName, formData.getRepresentations())); - - logWarnIfEmpty(inFile); - return inFile; - } - - A12Eingang readEingang(File formDataJson) { - try { - return objectMapper.readValue(formDataJson, A12Eingang.class); - } catch (IOException e) { - throw new TechnicalException("Error parsing JSON from A12 FormDataFile", e); - } - } - - void logWarnIfEmpty(Optional<IncomingFile> inFile) { - if (inFile.isEmpty()) { - LOG.warn("No primary Form Data Representation found."); - } - } - - Optional<IncomingFile> getByName(String name, List<IncomingFile> inFiles) { - return inFiles.stream() - .filter(inFile -> StringUtils.equals(name, inFile.getName())) - .findFirst(); - } - - <A, B> Map<A, B> merge(Map<A, B> map1, Map<A, B> map2) { - var map = new HashMap<>(map1); - map.putAll(map2); - return Collections.unmodifiableMap(map); - } -} diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerHeaderMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerHeaderMapper.java deleted file mode 100644 index df134be9..00000000 --- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerHeaderMapper.java +++ /dev/null @@ -1,69 +0,0 @@ -package de.ozgcloud.eingang.semantik.enginebased.afm; - -import static java.util.Objects.*; -import static org.apache.commons.lang3.StringUtils.*; - -import java.util.Collections; -import java.util.Map; - -import org.apache.commons.collections.MapUtils; -import org.springframework.stereotype.Component; - -import de.ozgcloud.eingang.common.errorhandling.TechnicalException; -import de.ozgcloud.eingang.common.formdata.Antragsteller; -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.semantik.common.ServiceKontoFactory; - -@Component -public class AfmAntragstellerHeaderMapper { - - static final String KEY_VORNAME = "u:saml_givenname"; - static final String KEY_NACHNAME = "u:saml_surname"; - static final String KEY_GEBURTSORT = "u:saml_placeofbirth"; - public static final String KEY_GEBURTSNAME = "u:saml_birthname"; - static final String KEY_EMAIL = "u:saml_mail"; - static final String KEY_TELEFON = "u:saml_telephonenumber"; - static final String KEY_STRASSE = "u:saml_postaladdress"; - static final String KEY_PLZ = "u:saml_postalcode"; - static final String KEY_ORT = "u:saml_localityname"; - - public FormData parseAntragstellerData(FormData formData) { - return formData.toBuilder().antragsteller(buildAntragsteller(getHeaders(formData))).build(); - } - - Antragsteller buildAntragsteller(Map<String, Object> headers) { - return Antragsteller.builder() - .postfachId(MapUtils.getString(headers, ServiceKontoFactory.KEY_BAYERN_ID_POSTFACH_ID)) - .vorname(MapUtils.getString(headers, KEY_VORNAME)) - .nachname(MapUtils.getString(headers, KEY_NACHNAME)) - .geburtsname(MapUtils.getString(headers, KEY_GEBURTSNAME)) - .geburtsort(MapUtils.getString(headers, KEY_GEBURTSORT)) - .email(MapUtils.getString(headers, KEY_EMAIL)) - .telefon(MapUtils.getString(headers, KEY_TELEFON)) - .strasse(MapUtils.getString(headers, KEY_STRASSE)) - .plz(MapUtils.getString(headers, KEY_PLZ)) - .ort(MapUtils.getString(headers, KEY_ORT)) - .build(); - } - - public boolean isResponsible(FormData formData) { - var headers = getHeaders(formData); - return headers.containsKey(ServiceKontoFactory.KEY_BAYERN_ID_POSTFACH_ID) - && isPostfachIdNotBlank(headers.get(ServiceKontoFactory.KEY_BAYERN_ID_POSTFACH_ID)); - } - - @SuppressWarnings("unchecked") - Map<String, Object> getHeaders(FormData formData) { - return (Map<String, Object>) formData.getFormData().getOrDefault(AfmHeaderMapper.HEADER_FIELD, Collections.emptyMap()); - } - - boolean isPostfachIdNotBlank(Object postfachId) { - if (isNull(postfachId)) { - return false; - } - if (postfachId instanceof String id) { - return isNotBlank(id); - } - throw new TechnicalException("Unexpected type of postfach id: " + postfachId.getClass().getName()); - } -} diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerMapper.java deleted file mode 100644 index 52365312..00000000 --- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerMapper.java +++ /dev/null @@ -1,166 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.semantik.enginebased.afm; - -import static java.util.Objects.*; - -import java.util.Collections; -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.Optional; -import java.util.Set; -import java.util.stream.Collectors; - -import org.apache.commons.collections.MapUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import de.ozgcloud.eingang.common.formdata.Antragsteller; -import de.ozgcloud.eingang.common.formdata.FormData; - -@Component -class AfmAntragstellerMapper implements AfmEngineBasedMapper { - - static final String POSTFACH_ID = "nameid"; - - static final String ANTRAGSTELLER = "antragsteller"; - static final String ANTRAGSTELLER_UPPERCASE = "Antragsteller"; - static final String ANREDE = "b_anrede"; - static final String VORNAME = "pers_vorname"; - static final String NACHNAME = "pers_nachname"; - static final String GEBURTSNAME = "pers_geburtsname"; - static final String GEBURTSDATUM = "pers_geburtsdatum"; - static final String GEBURTSORT = "pers_geburtsort"; - static final String EMAIL = "kont_email"; - static final String TELEFON = "kont_telefonnummer"; - static final String STRASSE = "sh_strasse"; - static final String HAUSNUMMER = "sh_hausnummer"; - static final String PLZ = "sh_plz"; - static final String ORT = "ort"; - - static final String FIELD_FIRMA_NAME = "firma_name"; - static final String FIELD_FIRMA_STRASSE = "firma_strasse"; - static final String FIELD_FIRMA_HAUSNUMMER = "firma_hausnummer"; - static final String FIELD_FIRMA_PLZ = "firma_plz"; - static final String FIELD_FIRMA_STADT = "firma_stadt"; - static final String FIELD_ANSPRECHPARTNER_ANREDE = "firma_ansprechpartner_anrede"; - static final String FIELD_ANSPRECHPARTNER_VORNAME = "firma_ansprechpartner_vorname"; - static final String FIELD_ANSPRECHPARTNER_NACHNAME = "firma_ansprechpartner_nachname"; - - @Autowired - private AfmAntragstellerHeaderMapper antragstellerHeaderMapper; - - @Override - public FormData parseFormData(FormData formData) { - if (antragstellerHeaderMapper.isResponsible(formData)) { - return antragstellerHeaderMapper.parseAntragstellerData(formData); - } - var formDataMap = formData.getFormData(); - var builder = Antragsteller.builder().postfachId(getPostfachId(formDataMap)); - - var antragsteller = getAntragstellerMap(formDataMap) - .map(antragstellerMap -> addAntragstellerData(builder, antragstellerMap)) - .orElse(builder) - .build(); - - var cleanedMap = removeMappedData(formDataMap); - return formData.toBuilder().antragsteller(antragsteller).formData(cleanedMap).build(); - } - - private String getPostfachId(Map<String, Object> formDataMap) { - return (String) formDataMap.get(POSTFACH_ID); - } - - private Optional<Map<String, Object>> getAntragstellerMap(Map<String, Object> formDataMap) { - return Optional.ofNullable(formDataMap.get(ANTRAGSTELLER)) - .or(() -> Optional.ofNullable(formDataMap.get(ANTRAGSTELLER_UPPERCASE))) - .map(Map.class::cast) - .map(LinkedHashMap<String, Object>::new); - } - - private Antragsteller.AntragstellerBuilder addAntragstellerData(Antragsteller.AntragstellerBuilder builder, - Map<String, Object> antragstellerMap) { - return isNull(antragstellerMap.get(FIELD_FIRMA_NAME)) - ? addPrivateAntragstellerData(builder, antragstellerMap) - : addFirmAntragstellerData(builder, antragstellerMap); - } - - private Antragsteller.AntragstellerBuilder addPrivateAntragstellerData(Antragsteller.AntragstellerBuilder builder, - Map<String, Object> antragstellerMap) { - return builder // - .anrede((String) antragstellerMap.get(ANREDE)) // - .vorname((String) antragstellerMap.get(VORNAME)) // - .nachname((String) antragstellerMap.get(NACHNAME)) // - .geburtsname((String) antragstellerMap.get(GEBURTSNAME)) // - .geburtsdatum((String) antragstellerMap.get(GEBURTSDATUM)) // - .geburtsort((String) antragstellerMap.get(GEBURTSORT)) // - .email((String) antragstellerMap.get(EMAIL)) // - .telefon((String) antragstellerMap.get(TELEFON)) // - .strasse((String) antragstellerMap.get(STRASSE)) // - .hausnummer((String) antragstellerMap.get(HAUSNUMMER)) // - .plz((String) antragstellerMap.get(PLZ)) // - .ort((String) antragstellerMap.get(ORT)) // - .data(getNotMappedData(antragstellerMap, getPrivateFields())); - } - - Antragsteller.AntragstellerBuilder addFirmAntragstellerData(Antragsteller.AntragstellerBuilder builder, - Map<String, Object> antragstellerMap) { - return builder - .firmaName(MapUtils.getString(antragstellerMap, FIELD_FIRMA_NAME)) - .strasse(MapUtils.getString(antragstellerMap, FIELD_FIRMA_STRASSE)) - .hausnummer(MapUtils.getString(antragstellerMap, FIELD_FIRMA_HAUSNUMMER)) - .plz(MapUtils.getString(antragstellerMap, FIELD_FIRMA_PLZ)) - .ort(MapUtils.getString(antragstellerMap, FIELD_FIRMA_STADT)) - .anrede(MapUtils.getString(antragstellerMap, FIELD_ANSPRECHPARTNER_ANREDE)) - .vorname(MapUtils.getString(antragstellerMap, FIELD_ANSPRECHPARTNER_VORNAME)) - .nachname(MapUtils.getString(antragstellerMap, FIELD_ANSPRECHPARTNER_NACHNAME)) - .telefon(MapUtils.getString(antragstellerMap, TELEFON)) - .email(MapUtils.getString(antragstellerMap, EMAIL)) - .data(getNotMappedData(antragstellerMap, getFirmaFields())); - } - - private Map<String, Object> getNotMappedData(Map<String, Object> antragstellerMap, Set<String> mappedFields) { - return antragstellerMap.entrySet().stream().filter(entry -> !mappedFields.contains(entry.getKey())) - .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (key1, key2) -> key1, LinkedHashMap::new)); - } - - private Set<String> getPrivateFields() { - return Set.of(ANREDE, VORNAME, NACHNAME, GEBURTSNAME, GEBURTSDATUM, GEBURTSORT, EMAIL, TELEFON, STRASSE, HAUSNUMMER, PLZ, ORT); - } - - private Set<String> getFirmaFields() { - return Set.of(FIELD_FIRMA_NAME, FIELD_FIRMA_STRASSE, FIELD_FIRMA_HAUSNUMMER, FIELD_FIRMA_PLZ, FIELD_FIRMA_STADT, - FIELD_ANSPRECHPARTNER_ANREDE, FIELD_ANSPRECHPARTNER_VORNAME, FIELD_ANSPRECHPARTNER_NACHNAME, TELEFON, EMAIL); - } - - private Map<String, Object> removeMappedData(Map<String, Object> formDataMap) { - var editableMap = new LinkedHashMap<>(formDataMap); - if (nonNull(editableMap.get(ANTRAGSTELLER))) { - editableMap.remove(ANTRAGSTELLER); - } else { - editableMap.remove(ANTRAGSTELLER_UPPERCASE); - } - return Collections.unmodifiableMap(editableMap); - } -} diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmEmpfangeneStelleMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmEmpfangeneStelleMapper.java deleted file mode 100644 index 7442e7b4..00000000 --- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmEmpfangeneStelleMapper.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.semantik.enginebased.afm; - -import org.springframework.stereotype.Component; - -import de.ozgcloud.eingang.common.formdata.FormData; - -@Component -class AfmEmpfangeneStelleMapper implements AfmEngineBasedMapper { - - static final String EMPFANGENESTELLE = "empfangendestelle"; - - @Override - public FormData parseFormData(FormData formData) { - return addControlNode(formData, EMPFANGENESTELLE); - } - -} diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmEngineBasedAdapter.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmEngineBasedAdapter.java deleted file mode 100644 index 36a9a187..00000000 --- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmEngineBasedAdapter.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.semantik.enginebased.afm; - -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.FormDataUtils; -import de.ozgcloud.eingang.semantik.enginebased.EngineBasedSemantikAdapter; -import de.ozgcloud.eingang.semantik.enginebased.afm.intelliform.IntelliFormRepresentationAdapter; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.List; - -@Component -public class AfmEngineBasedAdapter implements EngineBasedSemantikAdapter { - - @Autowired - private IntelliFormRepresentationAdapter intelliFormRepresentationAdapter; - - @Autowired - private List<AfmEngineBasedMapper> mappers; - - @Override - public FormData parseFormData(FormData formData) { - var processedFormData = intelliFormRepresentationAdapter.adaptByRepresentations(formData); - - for (var mapper : mappers) { - processedFormData = mapper.parseFormData(processedFormData); - } - - return removeProcessedData(processedFormData); - } - - - private FormData removeProcessedData(FormData formData) { - return FormDataUtils.from(formData) - .remove(AfmAntragstellerMapper.POSTFACH_ID) - .build(); - } - - @Override - public boolean isResponsible(FormData formData) { - return intelliFormRepresentationAdapter.isResponsible(formData); - } -} diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmEngineBasedMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmEngineBasedMapper.java deleted file mode 100644 index f9c67a19..00000000 --- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmEngineBasedMapper.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.semantik.enginebased.afm; - -import java.util.Collections; -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.Optional; - -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.semantik.enginebased.EngineBasedMapper; - -interface AfmEngineBasedMapper extends EngineBasedMapper { - - String KOP_CONTROLDATA_NODENAME = "_kopControlData"; - String CONTROLDATA_METADATA_PROPERTYNAME = "metaData"; - - default FormData addControlNode(FormData formData, String nodeName) { - var editableFormMap = new LinkedHashMap<>(formData.getFormData()); - - return Optional.ofNullable(getFormNode(formData, nodeName)) - .map(LinkedHashMap::new) - .map(empfStelleMap -> { - empfStelleMap.put(KOP_CONTROLDATA_NODENAME, buildControlDataMap()); - editableFormMap.put(nodeName, empfStelleMap); - return editableFormMap; - }) - .map(formDataMap -> formData.toBuilder().formData(Collections.unmodifiableMap(formDataMap)).build()) - .orElse(formData); - - } - - @SuppressWarnings("unchecked") - default Map<String, Object> getFormNode(FormData formData, String nodeName) { - return (Map<String, Object>) formData.getFormData().get(nodeName); - } - - default Map<String, Object> buildControlDataMap() { - Map<String, Object> controlMap = new LinkedHashMap<>(); - controlMap.put(CONTROLDATA_METADATA_PROPERTYNAME, "true"); - return controlMap; - } -} diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmErklaerungenMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmErklaerungenMapper.java deleted file mode 100644 index c263bcfa..00000000 --- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmErklaerungenMapper.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.semantik.enginebased.afm; - -import org.springframework.stereotype.Component; - -import de.ozgcloud.eingang.common.formdata.FormData; - -@Component -class AfmErklaerungenMapper implements AfmEngineBasedMapper { - - static final String ERKLAERUNGEN = "erklaerungen"; - - @Override - public FormData parseFormData(FormData formData) { - return addControlNode(formData, ERKLAERUNGEN); - } - -} diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmFileCountMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmFileCountMapper.java deleted file mode 100644 index e706d63e..00000000 --- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmFileCountMapper.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.semantik.enginebased.afm; - -import org.springframework.stereotype.Component; - -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.semantik.enginebased.FilesMapperHelper; - -@Component -class AfmFileCountMapper implements AfmEngineBasedMapper { - - @Override - public FormData parseFormData(FormData formData) { - return formData.toBuilder() - .numberOfRepresentations(formData.getRepresentations().size()) - .numberOfAttachments(FilesMapperHelper.countAttachedFiles(formData.getAttachments())) - .build(); - } - -} diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmHeaderMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmHeaderMapper.java deleted file mode 100644 index 42222ec8..00000000 --- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmHeaderMapper.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.semantik.enginebased.afm; - -import java.time.ZonedDateTime; -import java.time.format.DateTimeFormatter; -import java.util.Map; -import java.util.Optional; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.FormDataUtils; -import de.ozgcloud.eingang.common.formdata.FormHeader; -import de.ozgcloud.eingang.common.formdata.ServiceKonto; -import de.ozgcloud.eingang.semantik.common.ServiceKontoFactory; - -@Component -class AfmHeaderMapper implements AfmEngineBasedMapper { - - static final String AFM_FORMENGINE_NAME = "AFM"; - - static final String POSTFACH_NAME_ID = "nameid"; - - static final String HEADER_FIELD = "header"; - - static final String ID = "t:id"; - static final String TIMESTAMP = "t:timestamp"; - static final String FORM_ID = "t:form-id"; - static final String FORM = "t:form"; - static final String SENDER = "t:sender"; - - @Autowired - private ServiceKontoFactory serviceKontoFactory; - - @Override - public FormData parseFormData(FormData formData) { - var processed = formData.toBuilder().header(buildHeader(formData)).build(); - - return removeMappedData(processed); - } - - private FormHeader buildHeader(FormData formData) { - var headerDataMap = getHeaderMap(formData); - - var formHeaderBuilder = FormHeader.builder() - .requestId((String) headerDataMap.get(ID)) - .vorgangNummer((String) headerDataMap.get(ID)) - .createdAt(getCreatedAt(headerDataMap)) - .formId((String) headerDataMap.get(FORM_ID)) - .formName((String) headerDataMap.get(FORM)) - .sender((String) headerDataMap.get(SENDER)) - .formEngineName(AFM_FORMENGINE_NAME) - .build(); - - createBayernIdServiceKonto(formData).or(() -> createOsiServiceKonto(formData)).ifPresent(formHeaderBuilder::setServiceKonto); - - return formHeaderBuilder; - } - - private ZonedDateTime getCreatedAt(Map<String, Object> headerDataMap) { - return ZonedDateTime.parse((String) headerDataMap.get(TIMESTAMP), DateTimeFormatter.ISO_OFFSET_DATE_TIME); - } - - Optional<ServiceKonto> createBayernIdServiceKonto(FormData formData) { - return serviceKontoFactory.createBayernIdServiceKonto(getHeaderMap(formData)); - } - - @SuppressWarnings("unchecked") - Map<String, Object> getHeaderMap(FormData formData) { - return (Map<String, Object>) formData.getFormData().get(HEADER_FIELD); - } - - Optional<ServiceKonto> createOsiServiceKonto(FormData formData) { - return getNameId(formData).map(nameId -> serviceKontoFactory.buildOsiServiceKonto(nameId, formData)); - } - - private Optional<String> getNameId(FormData formData) { - return Optional.of(formData.getFormData()).map(formDataMap -> formDataMap.get(POSTFACH_NAME_ID)).map(String.class::cast); - } - - private FormData removeMappedData(FormData formData) { - return FormDataUtils.from(formData) - .remove(ServiceKontoFactory.REST_RESPONSE_NAME) - .build(); - } -} diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmZustaendigeStelleMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmZustaendigeStelleMapper.java deleted file mode 100644 index 4fff0ea9..00000000 --- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmZustaendigeStelleMapper.java +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.semantik.enginebased.afm; - -import java.util.Collections; -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.ZustaendigeStelle; - -@Component -class AfmZustaendigeStelleMapper implements AfmEngineBasedMapper { - - public static final String ZUSTAENDIGESTELLE = "zustaendigestelle"; - - public static final String EMAIL = "emailadresse"; - public static final String ORGANISATIONSEINHEITEN_ID = "OrganisationseinheitenID"; - public static final String TAG_BEZEICHNUNG = "OrganisationseinheitenBEZEICHNUNG"; - - @Autowired - private ZustaendigeStelleMetadataMapper zustaendigeStelleMetadataMapper; - - @Override - public FormData parseFormData(FormData formData) { - if (zustaendigeStelleMetadataMapper.isResponsible(formData)) { - return zustaendigeStelleMetadataMapper.parseZustaendigeStelleData(formData); - } - return parseZustaendigeStelleData(formData); - } - - FormData parseZustaendigeStelleData(FormData formData) { - var zustaendigeStelleMap = getZustaendigeStelle(formData); - var organisationseinheitenID = getOrganisationseinheitenId(formData); - var builder = ZustaendigeStelle.builder(); - - if (Objects.isNull(zustaendigeStelleMap) && Objects.isNull(organisationseinheitenID)) { - return formData; - } else if (zustaendigeStelleMap != null) { - organisationseinheitenID = (String) zustaendigeStelleMap.get(ORGANISATIONSEINHEITEN_ID); - builder - .email((String) zustaendigeStelleMap.get(EMAIL)) - .bezeichnung((String) zustaendigeStelleMap.get(TAG_BEZEICHNUNG)); - } - var zustaendigeStelle = builder - .organisationseinheitenId(organisationseinheitenID) - .build(); - - return formData.toBuilder() - .formData(addMetaDataFlag(formData)) - .zustaendigeStelle(zustaendigeStelle).build(); - } - - String getOrganisationseinheitenId(FormData formData) { - return (String) formData.getFormData().get(ORGANISATIONSEINHEITEN_ID); - } - - Map<String, Object> addMetaDataFlag(FormData formData) { - var editableFormData = new LinkedHashMap<>(formData.getFormData()); - - Optional.ofNullable(getZustaendigeStelle(formData)) - .map(LinkedHashMap::new) - .ifPresent(zustaendigeStelle -> { - zustaendigeStelle.put(KOP_CONTROLDATA_NODENAME, buildControlDataMap()); - editableFormData.put(ZUSTAENDIGESTELLE, zustaendigeStelle); - }); - - return Collections.unmodifiableMap(editableFormData); - } - - @SuppressWarnings("unchecked") - Map<String, Object> getZustaendigeStelle(FormData formData) { - return (Map<String, Object>) formData.getFormData().get(ZUSTAENDIGESTELLE); - } -} \ No newline at end of file diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/XmlMapperSupplier.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/XmlMapperSupplier.java deleted file mode 100644 index 8a4b166b..00000000 --- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/XmlMapperSupplier.java +++ /dev/null @@ -1,21 +0,0 @@ -package de.ozgcloud.eingang.semantik.enginebased.afm; - -import org.springframework.stereotype.Component; - -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.dataformat.xml.XmlMapper; - -@Component -public class XmlMapperSupplier { - - private final XmlMapper xmlMapper; - - public XmlMapperSupplier() { - xmlMapper = new XmlMapper(); - xmlMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - } - - public XmlMapper getMapper() { - return xmlMapper; - } -} diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleData.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleData.java deleted file mode 100644 index 1f085ab9..00000000 --- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleData.java +++ /dev/null @@ -1,43 +0,0 @@ -package de.ozgcloud.eingang.semantik.enginebased.afm; - -import java.util.List; - -import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper; -import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty; -import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement; -import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlText; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; -import lombok.Singular; - -@JacksonXmlRootElement(localName = "data") -@Builder -@Getter -@NoArgsConstructor -@AllArgsConstructor -public class ZustaendigeStelleData { - - @JacksonXmlProperty(localName = "field") - @JacksonXmlElementWrapper(useWrapping = false) - @Singular - private List<Field> fields; - - @Getter - @Setter - @NoArgsConstructor - @AllArgsConstructor - @Builder - public static class Field { - - @JacksonXmlProperty(isAttribute = true) - private String name; - - @JacksonXmlText - private String value; - - } -} diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleMetadataMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleMetadataMapper.java deleted file mode 100644 index a99ae318..00000000 --- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleMetadataMapper.java +++ /dev/null @@ -1,87 +0,0 @@ -package de.ozgcloud.eingang.semantik.enginebased.afm; - -import static java.util.Objects.*; - -import java.io.IOException; -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.Optional; -import java.util.function.Predicate; -import java.util.stream.Collectors; - -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import de.ozgcloud.common.errorhandling.TechnicalException; -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.IncomingFile; -import de.ozgcloud.eingang.common.formdata.ZustaendigeStelle; -import lombok.extern.log4j.Log4j2; - -@Log4j2 -@Component -public class ZustaendigeStelleMetadataMapper { - - static final String BEHOERDE_METADATA_FILE_NAME = "behoerde_metadata.xml"; - - private static final Predicate<IncomingFile> IS_BEHOERDE_METADATA = inFile -> StringUtils.endsWith(inFile.getName(), BEHOERDE_METADATA_FILE_NAME); - - static final String KEY_BEHOERDE_ANZEIGE_NAME = "behoerde_anzeige_name"; - static final String KEY_BEHOERDE_CALLER_ID = "behoerde_caller_id"; - static final String KEY_GEMEINDE_SCHLUESSEL_BP = "gemeinde_schluessel_bp"; - static final String KEY_BEHOERDE_EMAIL = "behoerde_email"; - static final String KEY_AMTLICHER_REGIONALSCHLUESSEL = "amtlicher_regionalschluessel"; - static final String KEY_BEHOERDE_HAUSANSCHRIFT_STRASSE = "behoerde_hausanschrift_strasse"; - static final String KEY_BEHOERDE_HAUSANSCHRIFT_ORT = "behoerde_hausanschrift_ort"; - static final String KEY_BEHOERDE_HAUSANSCHRIFT_PLZ = "behoerde_hausanschrift_plz"; - static final String KEY_BEHOERDE_TELEFON = "behoerde_telefon"; - - @Autowired - private XmlMapperSupplier xmlMapperSupplier; - - public FormData parseZustaendigeStelleData(FormData formData) { - return formData.getRepresentations().stream().filter(IS_BEHOERDE_METADATA).findAny() - .map(this::readZustaendigeStelleMetadata) - .map(this::mapZustaendigeStelle) - .map(zustaendigeStelle -> formData.toBuilder() - .zustaendigeStelle(zustaendigeStelle).build()) - .orElse(formData); - } - - Map<String, String> readZustaendigeStelleMetadata(IncomingFile metadata) { - return readXmlContent(metadata).map(ZustaendigeStelleData::getFields).map(this::collectToMap).orElse(Collections.emptyMap()); - } - - Optional<ZustaendigeStelleData> readXmlContent(IncomingFile metadata) { - try { - return Optional.of(xmlMapperSupplier.getMapper().readValue(metadata.getContentStream(), ZustaendigeStelleData.class)); - } catch (IOException | TechnicalException e) { - LOG.error("Error parsing {}", BEHOERDE_METADATA_FILE_NAME, e); - } - return Optional.empty(); - } - - Map<String, String> collectToMap(List<ZustaendigeStelleData.Field> fields) { - return fields.stream().filter(field -> nonNull(field.getValue())) - .collect(Collectors.toMap(ZustaendigeStelleData.Field::getName, ZustaendigeStelleData.Field::getValue)); - } - - ZustaendigeStelle mapZustaendigeStelle(Map<String, String> zustaendigeStelleMetadata) { - return ZustaendigeStelle.builder() - .bezeichnung(zustaendigeStelleMetadata.get(KEY_BEHOERDE_ANZEIGE_NAME)) - .organisationseinheitenId(zustaendigeStelleMetadata.get(KEY_BEHOERDE_CALLER_ID)) - .gemeindeSchluessel(zustaendigeStelleMetadata.get(KEY_GEMEINDE_SCHLUESSEL_BP)) - .email(zustaendigeStelleMetadata.get(KEY_BEHOERDE_EMAIL)) - .amtlicherRegionalSchluessel(zustaendigeStelleMetadata.get(KEY_AMTLICHER_REGIONALSCHLUESSEL)) - .hausanschriftStrasse(zustaendigeStelleMetadata.get(KEY_BEHOERDE_HAUSANSCHRIFT_STRASSE)) - .hausanschriftOrt(zustaendigeStelleMetadata.get(KEY_BEHOERDE_HAUSANSCHRIFT_ORT)) - .hausanschriftPlz(zustaendigeStelleMetadata.get(KEY_BEHOERDE_HAUSANSCHRIFT_PLZ)) - .telefon(zustaendigeStelleMetadata.get(KEY_BEHOERDE_TELEFON)).build(); - } - - public boolean isResponsible(FormData formData) { - return formData.getRepresentations().stream().anyMatch(IS_BEHOERDE_METADATA); - } -} diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/intelliform/IntelliFormRepresentationAdapter.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/intelliform/IntelliFormRepresentationAdapter.java deleted file mode 100644 index d9605244..00000000 --- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/intelliform/IntelliFormRepresentationAdapter.java +++ /dev/null @@ -1,145 +0,0 @@ -package de.ozgcloud.eingang.semantik.enginebased.afm.intelliform; - -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.Optional; -import java.util.Set; -import java.util.stream.Collector; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -import org.apache.commons.collections.MapUtils; -import org.springframework.stereotype.Component; -import org.w3c.dom.Document; - -import de.ozgcloud.eingang.common.errorhandling.TechnicalException; -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.IncomingFile; -import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; -import de.ozgcloud.eingang.semantik.common.ServiceKontoFactory; -import lombok.RequiredArgsConstructor; -import lombok.extern.log4j.Log4j2; - -@Component -@RequiredArgsConstructor -@Log4j2 -public class IntelliFormRepresentationAdapter { - - static final String INTELLIFORM_TYPENAME = "http://xmlns.cit.de/intelliform/transaction"; - - static final String FILE = "file"; - - static final String HEADER_FIELD = "header"; - - public static final List<String> HEADER_ATTRIBUTE_NAMES = List.of( - "t:id", - "t:timestamp", - "t:form-id", - "t:form", - "t:sender", - "t:customer", - "t:customer-id", - "t:client", - "t:client-id" - ); - public static final List<String> CUSTOM_HEADER_ATTRIBUTE_NAMES = List.of( - "u:saml_legacypostkorbhandle", - "u:saml_givenname", - "u:saml_surname", - "u:saml_placeofbirth", - "u:saml_birthname", - "u:saml_mail", - "u:saml_telephonenumber", - "u:saml_postaladdress", - "u:saml_postalcode", - "u:saml_localityname", - ServiceKontoFactory.KEY_BAYERN_ID_TRUST_LEVEL - ); - - private static final Collector<Map.Entry<String, ?>, ?, Map<String, Object>> ORDERED_MAP_ENTRY_COLLECTOR = Collectors.toMap( - Map.Entry::getKey, - Map.Entry::getValue, - (u, v) -> v, - LinkedHashMap::new - ); - - private final XmlToJavaMapsMapper xmlToJavaMapsMapper; - - public boolean isResponsible(FormData formData) { - return findIntelliFormXMLRepresentation(formData) - .isPresent(); - } - - Optional<Document> findIntelliFormXMLRepresentation(FormData formData) { - return streamXMLDocumentsFromRepresentations(formData) - .filter(document -> { - var element = document.getDocumentElement(); - var attribute = element.getAttribute("xmlns:t"); - return attribute.equals(INTELLIFORM_TYPENAME); - }) - .findFirst(); - } - - Stream<Document> streamXMLDocumentsFromRepresentations(FormData formData) { - return formData.getRepresentations().stream() - .filter(representation -> representation.getContentType().contains("xml")) - .flatMap(xmlRepresentation -> { - try { - return Stream.of(xmlToJavaMapsMapper.parseAsW3cDocument(xmlRepresentation.getContentStream())); - } catch (TechnicalException exception) { - return Stream.empty(); - } - }); - } - - public FormData adaptByRepresentations(FormData formData) { - var document = findIntelliFormXMLRepresentation(formData) - .orElseThrow(() -> new TechnicalException("Expect to find IntelliForm XML representation!")); - - return FormData.builder() - .representations(formData.getRepresentations()) - .attachments(formData.getAttachments()) - .formData(Stream.concat( - getFormDataEntriesFromDocument(document, formData.getAttachments()), - Map.of( - HEADER_FIELD, createHeaderMap(document) - ).entrySet().stream() - ).collect(ORDERED_MAP_ENTRY_COLLECTOR)) - .build(); - } - - Stream<Map.Entry<String, Object>> getFormDataEntriesFromDocument(Document document, List<IncomingFileGroup> attachments) { - Set<String> attachmentVendorIds = attachments.stream() - .flatMap(group -> group.getFiles().stream()) - .map(IncomingFile::getVendorId) - .collect(Collectors.toSet()); - - return xmlToJavaMapsMapper.mapXmlToJavaMaps(document).entrySet() - .stream() - .filter(entry -> !isUploadElementWhichRefersToAttachment(entry.getValue(), attachmentVendorIds)); - } - - private boolean isUploadElementWhichRefersToAttachment(Object element, Set<String> attachmentVendorIds) { - return findVendorIdInUploadElementCandidate(element) - .map(attachmentVendorIds::contains) - .orElse(false); - } - - @SuppressWarnings("rawtypes") - private Optional<String> findVendorIdInUploadElementCandidate(Object element) { - if (element instanceof Map uploadElement) { - return Optional.ofNullable(MapUtils.getMap(uploadElement, FILE)) - .flatMap(fileElement -> Optional.ofNullable(MapUtils.getString(fileElement, "id"))); - } else { - return Optional.empty(); - } - } - - Map<String, Object> createHeaderMap(Document document) { - var element = document.getDocumentElement(); - return Stream.concat(HEADER_ATTRIBUTE_NAMES.stream(), CUSTOM_HEADER_ATTRIBUTE_NAMES.stream().filter(element::hasAttribute)) - .collect(Collectors.toMap(name -> name, element::getAttribute)); - } - -} diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/intelliform/JsonService.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/intelliform/JsonService.java deleted file mode 100644 index 04d21f1a..00000000 --- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/intelliform/JsonService.java +++ /dev/null @@ -1,35 +0,0 @@ -package de.ozgcloud.eingang.semantik.enginebased.afm.intelliform; - -import java.util.List; -import java.util.Map; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; - -import de.ozgcloud.common.errorhandling.TechnicalException; - -@Component -class JsonService { - - static final TypeReference<List<Map<String, Object>>> VALUE_TYPE_REF = new TypeReference<List<Map<String, Object>>>() { - }; - - @Autowired - private ObjectMapper objectMapper; - - public List<Map<String, Object>> readAsListMap(String json) { - return readValueSafety(json, VALUE_TYPE_REF); - } - - private <T> T readValueSafety(String json, TypeReference<T> typeRef) { - try { - return objectMapper.readValue(json, typeRef); - } catch (JsonProcessingException e) { - throw new TechnicalException("Error parsing JSON", e); - } - } -} diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/intelliform/XmlToJavaMapsMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/intelliform/XmlToJavaMapsMapper.java deleted file mode 100644 index 75409a60..00000000 --- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/intelliform/XmlToJavaMapsMapper.java +++ /dev/null @@ -1,187 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.semantik.enginebased.afm.intelliform; - -import java.io.IOException; -import java.io.InputStream; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.ParserConfigurationException; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; -import org.w3c.dom.Document; -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; -import org.xml.sax.SAXException; - -import de.ozgcloud.eingang.common.errorhandling.TechnicalException; -import lombok.extern.log4j.Log4j2; - -@Log4j2 -@Component -class XmlToJavaMapsMapper { - - static final String REST_RESPONSE_NAME = "rest_response_name"; - static final String FILE = "file"; - - @Autowired - private JsonService jsonService; - - public Document parseAsW3cDocument(InputStream xmlDatenInputStream) { - try { - DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance(); - - docBuilderFactory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); - - DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder(); - Document document = docBuilder.parse(xmlDatenInputStream); - - // optional, but recommended - // http://stackoverflow.com/questions/13786607/normalization-in-dom-parsing-with-java-how-does-it-work - document.getDocumentElement().normalize(); - - return document; - - } catch (IOException | ParserConfigurationException | SAXException e) { - throw new TechnicalException("Could not parse XML-Daten.xml file content", e); - } - } - - public Map<String, Object> mapXmlToJavaMaps(Node node) { - return mapChildNodes(node.getFirstChild()); - } - - private Map<String, Object> mapChildNodes(Node node) { - - Map<String, Object> childs = new LinkedHashMap<>(); - - NodeList nodeList = node.getChildNodes(); - - for (int i = 0; i < nodeList.getLength(); i++) { - - Node currentNode = nodeList.item(i); - - if (isElementNode(currentNode)) { - - if (isSimpleTextNode(currentNode)) { - - addChildElement(childs, currentNode, currentNode.getFirstChild().getTextContent()); - - } else { - - if (currentNode.getChildNodes().getLength() > 0) { - - addChildElement(childs, currentNode, mapChildNodes(currentNode)); - } - } - } - } - - return childs; - } - - private boolean isElementNode(Node node) { - return node.getNodeType() == Node.ELEMENT_NODE; - } - - private boolean isSimpleTextNode(Node node) { - return node.getChildNodes().getLength() == 1 && isTextNode(node.getFirstChild()); - } - - private boolean isTextNode(Node node) { - return node.getNodeType() == Node.TEXT_NODE; - } - - private void addChildElement(Map<String, Object> childs, Node currentNode, Object content) { - if (childs.containsKey(currentNode.getNodeName())) { - addToExistingChildElement(childs, currentNode, content); - } else { - childs.put(currentNode.getNodeName(), getContentValue(currentNode, content)); - } - } - - @SuppressWarnings({ "unchecked", "rawtypes" }) - private void addToExistingChildElement(Map<String, Object> childs, Node currentNode, Object content) { - var existingChild = childs.get(currentNode.getNodeName()); - if (existingChild instanceof List list) { - list.add(content); - } else { - var list = new ArrayList<Object>(); - list.add(existingChild); - list.add(content); - childs.put(currentNode.getNodeName(), list); - } - } - - Object getContentValue(Node currentNode, Object content) { - if (isFileNode(currentNode)) { - content = createFileContentMap(currentNode, content); - } else if (isJsonNode(currentNode)) { - content = getJsonValue(currentNode, ((String) content).trim()); - } - return content; - } - - private boolean isFileNode(Node currentNode) { - return currentNode.getNodeName().equals(FILE); - } - - private Map<String, Object> createFileContentMap(Node currentNode, Object content) { - var attributes = currentNode.getAttributes(); - - var contentMap = new HashMap<String, Object>(); - contentMap.put("text", content);// TOASK: text oder name? - - for (int i = 0; i < attributes.getLength(); i++) { - var attribute = attributes.item(i); - contentMap.put(attribute.getNodeName(), attribute.getNodeValue()); - } - return contentMap; - } - - private boolean isJsonNode(Node currentNode) { - return isRestResponseName(currentNode); - } - - private boolean isRestResponseName(Node currentNode) { - return currentNode.getNodeName().equals(REST_RESPONSE_NAME); - } - - private Object getJsonValue(Node currentNode, String content) { - try { - return jsonService.readAsListMap(content); - } catch (de.ozgcloud.common.errorhandling.TechnicalException e) { - LOG.error("Error parsing json content from <" + currentNode.getNodeName() + ">.", e); - return Collections.emptyList(); - } - } -} diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelEngineBasedSemantikAdapter.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelEngineBasedSemantikAdapter.java deleted file mode 100644 index 82d09670..00000000 --- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelEngineBasedSemantikAdapter.java +++ /dev/null @@ -1,183 +0,0 @@ -package de.ozgcloud.eingang.semantik.enginebased.dfoerdermittel; - -import java.io.IOException; -import java.io.InputStream; -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; -import java.util.function.Predicate; -import java.util.function.UnaryOperator; -import java.util.stream.Stream; - -import org.apache.commons.collections4.MapUtils; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import com.fasterxml.jackson.dataformat.xml.XmlMapper; - -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.FormHeader; -import de.ozgcloud.eingang.common.formdata.IncomingFile; -import de.ozgcloud.eingang.common.formdata.ServiceKonto; -import de.ozgcloud.eingang.common.formdata.ZustaendigeStelle; -import de.ozgcloud.eingang.semantik.common.ServiceKontoFactory; -import de.ozgcloud.eingang.semantik.enginebased.EngineBasedSemantikAdapter; -import lombok.NonNull; -import lombok.extern.log4j.Log4j2; - -@Log4j2 -@Component -public class DFoerdermittelEngineBasedSemantikAdapter implements EngineBasedSemantikAdapter { - - private static final String FACHNACHRICHT_SUFFIX = "Fachnachricht.xml"; - private static final Predicate<IncomingFile> IS_FACHNACHRICHT = inFile -> StringUtils.endsWith(inFile.getName(), FACHNACHRICHT_SUFFIX); - - private static final String KEY_FACHNACHRICHT = "Fachnachricht"; - private static final String KEY_POSTFACH_ID = "InboxReference"; - private static final String KEY_ORGANISATIONS_EINHEIT_ID = "MetaText1"; - private static final String KEY_FORM_NAME = "Title"; - private static final String KEY_FORM_ID = "ProjectTitle"; - - static final String DEFAULT_FORM_NAME = "dFördermittelantrag"; - static final String DEFAULT_FORM_ID = "dFördermittelantrag"; - - @Autowired - private ServiceKontoFactory serviceKontoFactory; - - @Override - public FormData parseFormData(FormData formData) { - return formData.getRepresentations().stream().filter(IS_FACHNACHRICHT).findAny() - .map(inFile -> parseFachnachricht(formData, inFile)) - .map(this::processFachnachricht) - .orElse(formData); - } - - FormData processFachnachricht(FormData formData) { - return pipe( - Stream.of( - this::addFormName, - this::addFormEngineName, - this::addServiceKonto, - this::addOrganisationsEinheitId, - this::addFormId - ) - ).apply(formData); - } - - private UnaryOperator<FormData> pipe(Stream<UnaryOperator<FormData>> functions) { - return (formData) -> functions - .reduce(formData, (acc, f) -> f.apply(acc), (a, b) -> a); - } - - FormData addFormId(FormData formData) { - return mapWithModifiedHeader(formData, headerBuilder -> headerBuilder.formId( - getNonEmptyFachnachrichtValueByKey(formData, KEY_FORM_ID) - .orElse(DEFAULT_FORM_ID) - )); - } - - private Optional<String> getNonEmptyFachnachrichtValueByKey(FormData formData, String key) { - return Optional.ofNullable((String) getFachnachricht(formData).get(key)) - .filter(StringUtils::isNotBlank); - } - - private FormData mapWithModifiedHeader(FormData formData, UnaryOperator<FormHeader.FormHeaderBuilder> headerBuilderOperator) { - return formData.toBuilder() - .header(headerBuilderOperator.apply(formData.getHeader().toBuilder()).build()) - .build(); - } - - FormData addServiceKonto(FormData formData) { - return Optional.ofNullable((String) getFachnachricht(formData).get(KEY_POSTFACH_ID)) - .map(this::extractPrefix) - .map(this::createServiceKonto) - .map(serviceKonto -> mapWithModifiedHeader(formData, headerBuilder -> headerBuilder.serviceKonto(serviceKonto))) - .orElse(formData); - } - - FormData addOrganisationsEinheitId(FormData formData) { - return Optional.ofNullable((String) getFachnachricht(formData).get(KEY_ORGANISATIONS_EINHEIT_ID)) - .map(orgaId -> addOrganisationsEinheitId(orgaId, formData.getZustaendigeStelles())) - .map(zustStelle -> formData.toBuilder() - .zustaendigeStelle(zustStelle) - .build()) - .orElse(formData); - } - - private ZustaendigeStelle addOrganisationsEinheitId(String orgaId, Collection<ZustaendigeStelle> zustaendigeStelles) { - ZustaendigeStelle.ZustaendigeStelleBuilder zustaendigeStelleBuilder; - if (Objects.isNull(zustaendigeStelles) || zustaendigeStelles.isEmpty()) { - zustaendigeStelleBuilder = ZustaendigeStelle.builder(); - } else { - var zustaendigeStellesIterator = zustaendigeStelles.iterator(); - var zustaendigeStelle = zustaendigeStellesIterator.next(); - logErrorForExistingZustaendigeStelle(); - zustaendigeStelleBuilder = zustaendigeStelle.toBuilder(); - } - - return zustaendigeStelleBuilder.organisationseinheitenId(orgaId).build(); - } - - void logErrorForExistingZustaendigeStelle() { - LOG.error( - "Expect no existing ZustaendigeStelle for DFoerdermittel! Continuing with two ZustaendigeStelles, the original(s) and a copy of the first with overridden OrganisationsEinheitId."); - } - - FormData addFormName(FormData formData) { - return mapWithModifiedHeader(formData, headerBuilder -> headerBuilder.formName( - getNonEmptyFachnachrichtValueByKey(formData, KEY_FORM_NAME) - .orElse(DEFAULT_FORM_NAME) - )); - } - - @SuppressWarnings("unchecked") - private Map<String, Object> getFachnachricht(FormData formData) { - return (Map<String, Object>) MapUtils.getMap(formData.getFormData(), KEY_FACHNACHRICHT, Collections.<String, Object>emptyMap()); - } - - FormData addFormEngineName(FormData formData) { - return mapWithModifiedHeader(formData, headerBuilder -> headerBuilder.formEngineName("dFördermittelantrag")); - } - - String extractPrefix(@NonNull String postfachId) { - return postfachId.substring(postfachId.lastIndexOf("/") + 1); - } - - private ServiceKonto createServiceKonto(String postfachId) { - return serviceKontoFactory.buildOsiServiceKonto(postfachId); - } - - FormData parseFachnachricht(FormData formData, IncomingFile fachnachrichtFile) { - var fachnachrichtData = extractFormDataFormXML(fachnachrichtFile.getContentStream()); - - if (MapUtils.isNotEmpty(fachnachrichtData)) { - var editable = new HashMap<>(formData.getFormData()); - editable.put(KEY_FACHNACHRICHT, fachnachrichtData); - return formData.toBuilder().formData(Collections.unmodifiableMap(editable)).build(); - } - - return formData; - } - - @SuppressWarnings("unchecked") - Map<String, Object> extractFormDataFormXML(InputStream xmlFileStream) { - - XmlMapper xmlMapper = new XmlMapper(); - try { - return xmlMapper.readValue(xmlFileStream, Map.class); - } catch (IOException e) { - LOG.error("Error reading xml fachnachricht.", e); - } - return Collections.emptyMap(); - } - - @Override - public boolean isResponsible(FormData formData) { - return formData.getRepresentations().stream().anyMatch(IS_FACHNACHRICHT); - } - -} diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormCycleEngineBasedAdapter.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormCycleEngineBasedAdapter.java deleted file mode 100644 index c56f0c00..00000000 --- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormCycleEngineBasedAdapter.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.semantik.enginebased.formcycle; - -import java.util.List; - -import org.springframework.beans.factory.annotation.Autowired; - -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.semantik.enginebased.EngineBasedSemantikAdapter; - -public class FormCycleEngineBasedAdapter implements EngineBasedSemantikAdapter { - - @Autowired - private List<FormcycleEngineBasedMapper> mappers; - - @Override - public FormData parseFormData(FormData formData) { - var processed = formData; - for (var mapper : mappers) { - processed = mapper.parseFormData(processed); - } - return processed; - } - -} diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormcycleAntragstellerMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormcycleAntragstellerMapper.java deleted file mode 100644 index ab351eb8..00000000 --- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormcycleAntragstellerMapper.java +++ /dev/null @@ -1,72 +0,0 @@ -package de.ozgcloud.eingang.semantik.enginebased.formcycle; - -import static org.apache.commons.lang3.StringUtils.*; - -import java.util.Map; -import java.util.Optional; - -import org.apache.commons.collections4.MapUtils; -import org.apache.commons.lang3.StringUtils; -import org.springframework.stereotype.Component; - -import de.ozgcloud.eingang.common.formdata.Antragsteller; -import de.ozgcloud.eingang.common.formdata.FormData; - -@Component -public class FormcycleAntragstellerMapper implements FormcycleEngineBasedMapper { - - static final String KEY_ANTRAGSTELLER = "fsBKAllDaten"; - static final String KEY_ANREDE = "tfAntragstellerAnrede"; - static final String KEY_VORNAME = "tfAntragstellerVorname"; - static final String KEY_NACHNAME = "tfAntragstellerName"; - static final String KEY_GEBURTSNAME = "tfAntragstellerGeburtsname"; - static final String KEY_GEBURTSDATUM = "tfAntragstellerGeburtsdatum"; - static final String KEY_GEBURTSORT = "tfAntragstellerGeburtsort"; - static final String KEY_EMAIL = "tfAntragstellerEmail"; - static final String KEY_TELEFON = "tfAntragstellerTelefon"; - static final String KEY_ADDRESS = "tfAntragstellerAdresse"; - static final String KEY_PLZ = "tfAntragstellerPLZ"; - static final String KEY_ORT = "tfAntragstellerOrt"; - static final String KEY_FIRMA_NAME = "tfOrgName"; - - @Override - public FormData parseFormData(final FormData formData) { - return getAntragstellerData(formData.getFormData()) - .map(this::buildAntragsteller) - .map(antragsteller -> formData.toBuilder().antragsteller(antragsteller).build()) - .orElse(formData); - } - - @SuppressWarnings("unchecked") - Optional<Map<String, Object>> getAntragstellerData(Map<String, Object> formDataMap) { - var antragstellerData = (Map<String, Object>) MapUtils.getMap(formDataMap, KEY_ANTRAGSTELLER); - return Optional.ofNullable(antragstellerData).map(map -> (Map<String, Object>) map.get("value")); - } - - Antragsteller buildAntragsteller(Map<String, Object> antragstellerData) { - var firmaName = getValue(antragstellerData, KEY_FIRMA_NAME); - var antragstellerBuilder = Antragsteller.builder() - .firmaName(firmaName) - .anrede(getValue(antragstellerData, KEY_ANREDE)) - .vorname(getValue(antragstellerData, KEY_VORNAME)) - .nachname(getValue(antragstellerData, KEY_NACHNAME)) - .email(getValue(antragstellerData, KEY_EMAIL)) - .telefon(getValue(antragstellerData, KEY_TELEFON)) - .strasse(getValue(antragstellerData, KEY_ADDRESS)) - .plz(getValue(antragstellerData, KEY_PLZ)) - .ort(getValue(antragstellerData, KEY_ORT)); - if (isBlank(firmaName)) { - antragstellerBuilder - .geburtsname(getValue(antragstellerData, KEY_GEBURTSNAME)) - .geburtsdatum(getValue(antragstellerData, KEY_GEBURTSDATUM)) - .geburtsort(getValue(antragstellerData, KEY_GEBURTSORT)); - }else { - antragstellerBuilder.firmaName(firmaName); - } - return antragstellerBuilder.build(); - } - - String getValue(Map<String, Object> formDataMap, String key) { - return Optional.ofNullable(MapUtils.getMap(formDataMap, key)).map(map -> map.get("value")).map(String::valueOf).orElse(StringUtils.EMPTY); - } -} diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormcycleEngineBasedMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormcycleEngineBasedMapper.java deleted file mode 100644 index 2f1f20a8..00000000 --- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormcycleEngineBasedMapper.java +++ /dev/null @@ -1,6 +0,0 @@ -package de.ozgcloud.eingang.semantik.enginebased.formcycle; - -import de.ozgcloud.eingang.semantik.enginebased.EngineBasedMapper; - -interface FormcycleEngineBasedMapper extends EngineBasedMapper { -} diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsAntragstellerMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsAntragstellerMapper.java deleted file mode 100644 index d7add2b2..00000000 --- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsAntragstellerMapper.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.semantik.enginebased.formsolutions; - -import org.springframework.stereotype.Component; - -import de.ozgcloud.eingang.common.formdata.Antragsteller; -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.FormDataUtils; - -@Component -class FormSolutionsAntragstellerMapper implements FormSolutionsEngineBasedMapper { - - public static final String ANTRAGSTELLER_PANEL_IDENTIFIER = "Antragstellende Person"; - - public static final String POSTKORBHANDLE = "postkorbhandle"; - - public static final String VORNAME_KEY = "AS_Vorname"; - public static final String NACHNAME_KEY = "AS_Name"; - - @Override - public FormData parseFormData(FormData formData) { - return FormDataUtils.from(formData) - .builder() - .antragsteller(buildAntragsteller(formData)) - .build(); - } - - protected Antragsteller buildAntragsteller(FormData formData) { - var antragstellerData = IdentifierValueParser.parsePanelsData(formData); - - return Antragsteller.builder() - .postfachId(getPostkorbhandle(formData)) - .vorname(antragstellerData.get(VORNAME_KEY)) - .nachname(antragstellerData.get(NACHNAME_KEY)) - .build(); - } - - private String getPostkorbhandle(FormData formData) { - return (String) formData.getFormData().get(POSTKORBHANDLE); - } -} \ No newline at end of file diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsEngineBasedAdapter.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsEngineBasedAdapter.java deleted file mode 100644 index 9c23aecc..00000000 --- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsEngineBasedAdapter.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.semantik.enginebased.formsolutions; - -import java.util.List; - -import org.springframework.beans.factory.annotation.Autowired; - -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.FormDataUtils; -import de.ozgcloud.eingang.semantik.enginebased.EngineBasedSemantikAdapter; - -public class FormSolutionsEngineBasedAdapter implements EngineBasedSemantikAdapter { - - public static final String IDENTIFIER_KEY = "identifier"; - - public static final String ASSISTANT = "assistant"; - public static final String ANLIEGEN_ID = "anliegenId"; - public static final String KOMMUNALVERWALTUNG_ID = "kommunalverwaltungId"; - - @Autowired - private List<FormSolutionsEngineBasedMapper> mappers; - - @Override - public FormData parseFormData(FormData formData) { - var processedFormData = formData; - - for (var mapper : mappers) { - processedFormData = mapper.parseFormData(processedFormData); - } - - return removeProcessedData(processedFormData); - } - - protected FormData removeProcessedData(FormData formData) { - return FormDataUtils.from(formData) - .remove(ASSISTANT) - .remove(ANLIEGEN_ID) - .remove(KOMMUNALVERWALTUNG_ID) - .remove(FormSolutionsAntragstellerMapper.POSTKORBHANDLE) - .build(); - } -} diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsEngineBasedMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsEngineBasedMapper.java deleted file mode 100644 index e024adb8..00000000 --- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsEngineBasedMapper.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.semantik.enginebased.formsolutions; - -import de.ozgcloud.eingang.semantik.enginebased.EngineBasedMapper; - -interface FormSolutionsEngineBasedMapper extends EngineBasedMapper { -} diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsFilesMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsFilesMapper.java deleted file mode 100644 index 6de90deb..00000000 --- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsFilesMapper.java +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.semantik.enginebased.formsolutions; - -import java.util.List; -import java.util.function.Predicate; -import java.util.stream.Stream; - -import org.apache.commons.lang3.StringUtils; -import org.springframework.stereotype.Component; - -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.IncomingFile; -import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; -import de.ozgcloud.eingang.semantik.common.ZipAttachmentReader; -import de.ozgcloud.eingang.semantik.enginebased.FilesMapperHelper; -import lombok.RequiredArgsConstructor; -import lombok.extern.log4j.Log4j2; - -@Component -@Log4j2 -class FormSolutionsFilesMapper implements FormSolutionsEngineBasedMapper { - - public static final String FILE_GROUP_ZIP_NAME = "gezippte Anhänge"; - public static final String EXTRAHIERTE_ATTACHMENTS = "Extrahierte Attachments"; - public static final String ZIP_CONTENT_TYPE = "application/zip"; - - @Override - public FormData parseFormData(FormData srcFormData) { - var formDataBuilder = srcFormData.toBuilder().clearAttachments(); - - var attachments = readAttachments(srcFormData); - if (attachments.isEmpty()) { - return formDataBuilder.build(); - } - return formDataBuilder.attachments(attachments).numberOfAttachments(FilesMapperHelper.countAttachedFiles(attachments)).build(); - } - - List<IncomingFileGroup> readAttachments(FormData srcFormData) { - return new ZippedAttachmentsProcessor(srcFormData.getAttachments()).process().toList(); - } - - @RequiredArgsConstructor - class ZippedAttachmentsProcessor { - - private final List<IncomingFileGroup> originalAttachmentsList; - private static final Predicate<IncomingFileGroup> ZIP_FILE_GROUP = fileGroup -> StringUtils.equals(FILE_GROUP_ZIP_NAME, fileGroup.getName()); - - public Stream<IncomingFileGroup> process() { - return Stream.concat(processZipGroups(), nonZipFileGroups()); - } - - private Stream<IncomingFileGroup> processZipGroups() { - var groupBuilder = IncomingFileGroup.builder().name("Anhänge"); - extractAttachments().forEach(groupBuilder::file); - var group = groupBuilder.build(); - - return group.getFiles().isEmpty() ? Stream.empty() : Stream.of(group); - } - - Stream<IncomingFileGroup> nonZipFileGroups() { - return originalAttachmentsList.stream().filter(ZIP_FILE_GROUP.negate()); - } - - Stream<IncomingFile> extractAttachments() { - return originalAttachmentsList.stream() - .filter(ZIP_FILE_GROUP) - .flatMap(fileGroup -> fileGroup.getFiles().stream()) - .flatMap(this::unzip); - } - - Stream<IncomingFile> unzip(IncomingFile zipFile) { - try { - return readFromZip(zipFile); - } catch (RuntimeException e) { - LOG.error("Cannot read source ZIP. Attach it as is.", e); - return Stream.of(zipFile); - } - } - - Stream<IncomingFile> readFromZip(IncomingFile zipFile) { - var reader = buildReader(zipFile); - var readContent = reader.readContent(); - reader.deleteSourceFile(); - return readContent.stream(); - } - - ZipAttachmentReader buildReader(IncomingFile zipFile) { - return ZipAttachmentReader.from(zipFile.getFile(), zipFile.getName()); - } - } -} diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsHeaderMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsHeaderMapper.java deleted file mode 100644 index c2b0de11..00000000 --- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsHeaderMapper.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.semantik.enginebased.formsolutions; - -import static de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsEngineBasedAdapter.*; - -import java.util.Map; -import java.util.Optional; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.FormDataUtils; -import de.ozgcloud.eingang.common.formdata.FormHeader; -import de.ozgcloud.eingang.semantik.common.ServiceKontoFactory; - -@Component -class FormSolutionsHeaderMapper implements FormSolutionsEngineBasedMapper { - - static final int POSTFACH_ADDRESS_DEFAULT = 1; - - static final String TRANSACTION_ID = "transactionId"; - - static final String FORM_ENGINE_NAME = "FormSolutions"; - - public static final String POSTKORBHANDLE = "postkorbhandle"; - - @Autowired - private ServiceKontoFactory serviceKontoFactory; - - @Override - public FormData parseFormData(FormData formData) { - return FormDataUtils.from(formData) - .remove(TRANSACTION_ID) - .builder() - .header(buildFormHeader(formData)) - .build(); - } - - protected FormHeader buildFormHeader(FormData formData) { - var formHeaderBuilder = FormHeader.builder() - .formName(getIdentifier(formData)) - .formId(getIdentifier(formData)) - .requestId(getRequestId(formData)) - .formEngineName(FORM_ENGINE_NAME); - - Optional.ofNullable(getPostkorbhandle(formData)).map(serviceKontoFactory::buildOsiServiceKonto).ifPresent(formHeaderBuilder::serviceKonto); - - return formHeaderBuilder.build(); - } - - private String getIdentifier(FormData formData) { - return (String) getAssistant(formData).get(IDENTIFIER_KEY); - } - - private Map<String, Object> getAssistant(FormData formData) { - return FormDataUtils.getSubMap(formData, ASSISTANT); - } - - private String getRequestId(FormData formData) { - return (String) formData.getFormData().get(TRANSACTION_ID); - } - - private String getPostkorbhandle(FormData formData) { - return (String) formData.getFormData().get(POSTKORBHANDLE); - } -} \ No newline at end of file diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsPanelMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsPanelMapper.java deleted file mode 100644 index f8cd7b94..00000000 --- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsPanelMapper.java +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.semantik.enginebased.formsolutions; - -import static de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsEngineBasedAdapter.*; -import static java.util.Objects.*; - -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.Optional; - -import org.springframework.stereotype.Component; - -import de.ozgcloud.eingang.common.formdata.FormData; - -@Component -class FormSolutionsPanelMapper implements FormSolutionsEngineBasedMapper { - public static final String COMPONENTS = "components"; - public static final String STRING_VALUE = "stringValue"; - public static final String PANELS = "panels"; - - @Override - public FormData parseFormData(FormData formData) { - var resultMap = mapPanels(getPanels(formData)).orElseGet(HashMap::new); - resultMap.putAll(formData.getFormData()); - - return formData.toBuilder().formData(resultMap).build(); - } - - private Optional<Map<String, Object>> mapPanels(List<Map<String, Object>> panels) { - if (panels.isEmpty()) { - return Optional.empty(); - } - var resultMap = new LinkedHashMap<String, Object>(); - for (Map<String, Object> panel : panels) { - var identifier = (String) panel.get(IDENTIFIER_KEY); - if (isNull(identifier)) { - continue; - } - getValue(panel).ifPresent(value -> resultMap.put(identifier, value)); - } - - return Optional.of(resultMap); - } - - private Optional<Object> getValue(Map<String, Object> panel) { - return mapPanels(getComponentList(panel)) - .map(Object.class::cast) - .or(() -> Optional.ofNullable(panel.get(STRING_VALUE))); - } - - @SuppressWarnings("unchecked") - public static List<Map<String, Object>> getPanels(FormData formData) { - if (isNull(formData)) { - return List.of(); - } - return Optional.ofNullable(formData.getFormData()) - .map(formDataMap -> (Map<String, Object>) formDataMap.get(ASSISTANT)) - .map(assistent -> (List<Map<String, Object>>) assistent.get(PANELS)) - .orElse(List.of()); - } - - @SuppressWarnings("unchecked") - public static List<Map<String, Object>> getComponentList(Map<String, Object> panel) { - if (isNull(panel)) { - return List.of(); - } - return Optional.ofNullable(panel.get(COMPONENTS)).map(c -> (List<Map<String, Object>>) c).orElse(List.of()); - } - -} diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsZustaendigeStelleMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsZustaendigeStelleMapper.java deleted file mode 100644 index e58650ac..00000000 --- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsZustaendigeStelleMapper.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.semantik.enginebased.formsolutions; - -import java.util.Collections; -import java.util.LinkedHashMap; -import java.util.Map; - -import org.springframework.stereotype.Component; - -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.ZustaendigeStelle; - -@Component -class FormSolutionsZustaendigeStelleMapper implements FormSolutionsEngineBasedMapper { - - public static final String ZUSTAENDIGE_STELLE = "zustaendigeStelle"; - - @Override - public FormData parseFormData(FormData formData) { - return formData.toBuilder() - .zustaendigeStelle(buildZustaendigeStelle(formData)) - .formData(removeProcessedData(formData)) - .build(); - } - - protected ZustaendigeStelle buildZustaendigeStelle(FormData formData) { - return ZustaendigeStelle.builder() - .organisationseinheitenId(getZustaenigeStelle(formData)) - .build(); - } - - private String getZustaenigeStelle(FormData formData) { - return (String) formData.getFormData().get(ZUSTAENDIGE_STELLE); - } - - protected Map<String, Object> removeProcessedData(FormData formData) { - var cleanedData = new LinkedHashMap<>(formData.getFormData()); - cleanedData.remove(ZUSTAENDIGE_STELLE); - - return Collections.unmodifiableMap(cleanedData); - } -} \ No newline at end of file diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/IdentifierValueParser.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/IdentifierValueParser.java deleted file mode 100644 index f6eb5a4c..00000000 --- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/IdentifierValueParser.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.semantik.enginebased.formsolutions; - -import static java.util.Objects.*; - -import java.util.Collections; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -import de.ozgcloud.eingang.common.formdata.FormData; -import lombok.AccessLevel; -import lombok.NoArgsConstructor; - -@NoArgsConstructor(access = AccessLevel.PRIVATE) -class IdentifierValueParser { - - static Map<String, String> parsePanelsData(FormData formData) { - return new IdentifierValueParser().parsePanels(formData); - } - - private final Map<String, String> resultMap = new LinkedHashMap<>(); - - Map<String, String> parsePanels(FormData formData) { - parse(FormSolutionsPanelMapper.getPanels(formData)); - return Collections.unmodifiableMap(resultMap); - } - - private void parse(List<Map<String, Object>> panels) { - if (isNull(panels)) { - return; - } - for (Map<String, Object> panel : panels) { - parse(FormSolutionsPanelMapper.getComponentList(panel)); - var identifier = (String) panel.get(FormSolutionsEngineBasedAdapter.IDENTIFIER_KEY); - var value = (String) panel.get(FormSolutionsPanelMapper.STRING_VALUE); - if (nonNull(identifier) && nonNull(value)) { - resultMap.put(identifier, value); - } - } - } -} diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/formbased/AnliegenId.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/formbased/AnliegenId.java deleted file mode 100644 index 7ae3363c..00000000 --- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/formbased/AnliegenId.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.semantik.formbased; - -import de.ozgcloud.common.datatype.StringBasedValue; - -class AnliegenId extends StringBasedValue { - - private static final long serialVersionUID = 1L; - - AnliegenId(String anliegenId) { - super(anliegenId); - } - - public static AnliegenId from(String anliegenId) { - return new AnliegenId(anliegenId); - } -} \ No newline at end of file diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/formbased/FormBasedMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/formbased/FormBasedMapper.java deleted file mode 100644 index 47e053f9..00000000 --- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/formbased/FormBasedMapper.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.semantik.formbased; - -import de.ozgcloud.eingang.common.formdata.FormData; - -public interface FormBasedMapper { - - FormData parseFormData(FormData formData); - - boolean isResponsible(FormData formData); -} diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/formbased/FormBasedSemantikAdapter.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/formbased/FormBasedSemantikAdapter.java deleted file mode 100644 index 9f2d644a..00000000 --- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/formbased/FormBasedSemantikAdapter.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.semantik.formbased; - -import java.util.Collections; -import java.util.List; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import de.ozgcloud.eingang.common.formdata.FormData; - -@Service -public class FormBasedSemantikAdapter { - - @Autowired(required = false) - private List<FormBasedMapper> mappers = Collections.emptyList(); - - public FormData parseFormData(FormData formData) { - - return new FormDataProcessor().process(formData); - } - - class FormDataProcessor { - private FormData processedFormData; - - FormData process(FormData originalFormData) { - processedFormData = originalFormData; - mappers.stream() - .filter(mapper -> mapper.isResponsible(processedFormData)) - .forEach(this::parseWithMapper); - - return processedFormData; - } - - private void parseWithMapper(FormBasedMapper mapper) { - processedFormData = mapper.parseFormData(processedFormData); - } - - } - -} diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/formbased/mantelantrag/MantelantragZustaendigeStelleMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/formbased/mantelantrag/MantelantragZustaendigeStelleMapper.java deleted file mode 100644 index d7fa85a1..00000000 --- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/formbased/mantelantrag/MantelantragZustaendigeStelleMapper.java +++ /dev/null @@ -1,135 +0,0 @@ -package de.ozgcloud.eingang.semantik.formbased.mantelantrag; - -import java.util.Collections; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Optional; -import java.util.Set; -import java.util.function.UnaryOperator; -import java.util.stream.IntStream; - -import jakarta.annotation.PostConstruct; - -import org.apache.commons.collections.MapUtils; -import org.apache.logging.log4j.util.Strings; -import org.springframework.boot.context.properties.bind.Bindable; -import org.springframework.boot.context.properties.bind.Binder; -import org.springframework.core.env.Environment; -import org.springframework.stereotype.Component; - -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.FormHeader; -import de.ozgcloud.eingang.common.formdata.ZustaendigeStelle; -import de.ozgcloud.eingang.semantik.formbased.FormBasedMapper; -import lombok.RequiredArgsConstructor; -import lombok.extern.log4j.Log4j2; - -@Component -@RequiredArgsConstructor -@Log4j2 -public class MantelantragZustaendigeStelleMapper implements FormBasedMapper { - static final String MANTELANTRAG_FORM_ID = "maa_mantelantrag/maa_mantelantrag"; - static final String ZUSTELLUNG_NACHRICHTENBROKER_FIELD = "zustellung_nachrichtenbroker"; - static final String ORGANISATIONSEINHEIT_ID_FIELD = "kontaktsystem_oeid"; - static final String BEZEICHNUNG_FIELD = "OrganisationseinheitenBEZEICHNUNG"; - static final String EMAIL_FIELD = "zust_emailadresse"; - static final String HAUSANSCHRIFT_STRASSE_FIELD = "zust_strasse"; - static final String HAUSANSCHRIFT_PLZ_FIELD = "zust_postleitzahl"; - static final String HAUSANSCHRIFT_ORT_FIELD = "zust_ort"; - static final String TELEFON_FIELD = "telefon"; - - private final Environment environment; - private Set<String> xtaIdentifiers; - - @PostConstruct - void init() { - xtaIdentifiers = new HashSet<>(getIdentifierList()); - } - - List<String> getIdentifierList() { - return Binder.get(environment) - .bind("ozgcloud.xta.identifiers", Bindable.listOf(String.class)) - .orElseGet(Collections::emptyList) - .stream() - .map(String::toLowerCase) - .toList(); - } - - @Override - public boolean isResponsible(FormData formData) { - return Optional.ofNullable(formData.getHeader()) - .map(FormHeader::getFormId) - .map(v -> v.startsWith(MANTELANTRAG_FORM_ID)) - .orElse(false); - } - - @Override - public FormData parseFormData(FormData formData) { - return formData.toBuilder() - .clearZustaendigeStelles() - .zustaendigeStelles(getZustaendigeStelles(formData)) - .build(); - } - - List<ZustaendigeStelle> getZustaendigeStelles(FormData formData) { - var fieldMap = formData.getFormData(); - var matchingSlots = getMatchingSlots(fieldMap); - if (matchingSlots.isEmpty()) { - logErrorForNoMatchingIdentifiers(); - } - return matchingSlots.stream() - .map(slotIndex -> getZustaendigeStelle(fieldMap, slotIndex)) - .toList(); - } - - ZustaendigeStelle getZustaendigeStelle(Map<String, Object> fieldMap, int slotIndex) { - UnaryOperator<String> getValueOrEmpty = field -> getFieldByKeyOrEmpty( - fieldMap, - getNameForSlotIndex(field, slotIndex) - ); - var organisationseinheitId = getValueOrEmpty.apply(ORGANISATIONSEINHEIT_ID_FIELD); - if (organisationseinheitId.isBlank()) { - logWarningForEmptyOrganisationseinheitId(slotIndex); - } - return ZustaendigeStelle.builder() - .organisationseinheitenId(organisationseinheitId) - .bezeichnung(getValueOrEmpty.apply(BEZEICHNUNG_FIELD)) - .email(getValueOrEmpty.apply(EMAIL_FIELD)) - .hausanschriftStrasse(getValueOrEmpty.apply(HAUSANSCHRIFT_STRASSE_FIELD)) - .hausanschriftPlz(getValueOrEmpty.apply(HAUSANSCHRIFT_PLZ_FIELD)) - .hausanschriftOrt(getValueOrEmpty.apply(HAUSANSCHRIFT_ORT_FIELD)) - .telefon(getValueOrEmpty.apply(TELEFON_FIELD)) - .build(); - } - - void logWarningForEmptyOrganisationseinheitId(int slotIndex) { - LOG.warn("[Mantelantrag] OrganisationseinheitId for slot {} is empty!", slotIndex); - } - - void logErrorForNoMatchingIdentifiers() { - LOG.error("[Mantelantrag] No matching Zustaendigestelle found! For identifiers: '{}'.", Strings.join(xtaIdentifiers, ',')); - } - - List<Integer> getMatchingSlots(Map<String, Object> fieldMap) { - return IntStream.range(0, 3) - .filter(slotIndex -> xtaIdentifiers.contains(getXtaIdentifierOfSlot(fieldMap, slotIndex))) - .boxed() - .toList(); - } - - private String getXtaIdentifierOfSlot(Map<String, Object> fieldMap, int slotIndex) { - return getFieldByKeyOrEmpty(fieldMap, getNameForSlotIndex(ZUSTELLUNG_NACHRICHTENBROKER_FIELD, slotIndex)).toLowerCase(); - } - - String getNameForSlotIndex(String name, int slotIndex) { - return slotIndex > 0 ? "%s%d".formatted(name, slotIndex + 1) : name; - } - - private String getFieldByKeyOrEmpty(Map<String, Object> fieldMap, String key) { - return Optional.ofNullable(MapUtils.getString(fieldMap, key)) - .map(String::trim) - .orElse(""); - } - -} diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/SemantikAdapterTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/SemantikAdapterTest.java deleted file mode 100644 index ea63f237..00000000 --- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/SemantikAdapterTest.java +++ /dev/null @@ -1,141 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.semantik; - -import static de.ozgcloud.eingang.common.formdata.FormDataTestFactory.*; -import static org.assertj.core.api.Assertions.*; -import static org.mockito.ArgumentMatchers.*; -import static org.mockito.Mockito.*; - -import java.util.List; -import java.util.stream.Stream; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.Spy; - -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.router.VorgangService; -import de.ozgcloud.eingang.semantik.enginebased.EngineBasedSemantikAdapter; -import de.ozgcloud.eingang.semantik.formbased.FormBasedSemantikAdapter; - -class SemantikAdapterTest { - - @Spy - @InjectMocks - private SemantikAdapter adapter; - - @Mock - private List<EngineBasedSemantikAdapter> engineAdapters; - - @Mock - private EngineBasedSemantikAdapter engineAdapter; - @Mock - private FormBasedSemantikAdapter formAdapter; - @Mock - private VorgangService vorgangService; - - @DisplayName("get responsible engine adapters") - @Nested - class TestGetResponsibleEngineAdapters { - @Mock - private EngineBasedSemantikAdapter unresponsibleEngineAdapter; - @Mock - private FormData formData; - - @BeforeEach - void mock() { - when(unresponsibleEngineAdapter.isResponsible(formData)).thenReturn(false); - when(engineAdapter.isResponsible(formData)).thenReturn(true); - when(engineAdapters.stream()).thenReturn(Stream.of(engineAdapter, unresponsibleEngineAdapter)); - } - - @DisplayName("should return responsible") - @Test - void shouldReturnResponsible() { - var foundAdapters = adapter.getResponsibleEngineAdapters(formData); - - assertThat(foundAdapters).isEqualTo(List.of(engineAdapter)); - } - } - - @Nested - class TestProcessFormData { - - @Mock - private FormData formData; - @Mock - private FormData engineAdapterResponse; - @Mock - private FormData formAdapterResponse; - - @BeforeEach - void mockEngineAdapter() { - doReturn(List.of(engineAdapter)).when(adapter).getResponsibleEngineAdapters(formData); - when(engineAdapter.parseFormData(any())).thenReturn(engineAdapterResponse); - when(formAdapter.parseFormData(any())).thenReturn(formAdapterResponse); - when(vorgangService.createVorgang(any())).thenReturn(VORGANG_ID); - } - - @Test - void shouldCallFindEngineAdapter() { - adapter.processFormData(formData); - - verify(adapter).getResponsibleEngineAdapters(formData); - } - - @Test - void shouldCallEngineAdapter() { - adapter.processFormData(formData); - - verify(engineAdapter).parseFormData(formData); - } - - @Test - void shouldCallFormAdapter() { - adapter.processFormData(formData); - - verify(formAdapter).parseFormData(engineAdapterResponse); - } - - @Test - void shouldCallVorgangRemoteService() { - adapter.processFormData(formData); - - verify(vorgangService).createVorgang(formAdapterResponse); - } - - @DisplayName("should return first vorgang id") - @Test - void shouldReturnFirstVorgangId() { - var vorgangId = adapter.processFormData(formData); - - assertThat(vorgangId).isEqualTo(VORGANG_ID); - } - } -} diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/common/ServiceKontoFactoryTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/common/ServiceKontoFactoryTest.java deleted file mode 100644 index 66d9d3e3..00000000 --- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/common/ServiceKontoFactoryTest.java +++ /dev/null @@ -1,303 +0,0 @@ -package de.ozgcloud.eingang.semantik.common; - -import static org.assertj.core.api.Assertions.*; -import static org.mockito.ArgumentMatchers.*; -import static org.mockito.Mockito.*; - -import java.util.List; -import java.util.Map; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Spy; - -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.FormDataUtils; -import de.ozgcloud.eingang.common.formdata.PostfachAddressTestFactory; -import de.ozgcloud.eingang.common.formdata.ServiceKonto; -import de.ozgcloud.eingang.common.formdata.ServiceKonto.TrustLevel; -import de.ozgcloud.eingang.common.formdata.ServiceKontoTestFactory; -import de.ozgcloud.eingang.common.formdata.StringBasedIdentifier; -import de.ozgcloud.eingang.common.formdata.ServiceKonto.PostfachAddress; -import de.ozgcloud.eingang.semantik.enginebased.afm.AfmHeaderTestFactory; - -class ServiceKontoFactoryTest { - - @Spy - @InjectMocks - private ServiceKontoFactory factory; - - @DisplayName("OSI service konto") - @Nested - class TestOsiServiceKonto { - - private static final FormData FORM_DATA = FormData.builder().formData(AfmHeaderTestFactory.createFormDataMap()).build(); - - @DisplayName("with configured postfach") - @Nested - class TestWithConfiguredPostfach { - - private static final PostfachAddress POSTFACH_ADDRESS = PostfachAddressTestFactory.create(); - - @BeforeEach - void mockBuildPostfachAddresses() { - doReturn(List.of(POSTFACH_ADDRESS)).when(factory).buildPostfachAddresses(any(), any()); - } - - @Test - void shouldContainsType() { - var serviceKonto = getServiceKonto(FORM_DATA); - - assertThat(serviceKonto.getType()).isEqualTo(ServiceKontoFactory.POSTFACH_TYPE_OSI); - } - - @Test - void shouldContainsPostfachAddresses() { - var serviceKonto = getServiceKonto(FORM_DATA); - - assertThat(serviceKonto.getPostfachAddresses()).hasSize(1); - assertThat(serviceKonto.getPostfachAddresses().get(0)).isEqualTo(POSTFACH_ADDRESS); - } - - @Test - void shouldBuildPostfachAddresses() { - getServiceKonto(FORM_DATA); - - verify(factory).buildPostfachAddresses(any(), any()); - } - } - - private ServiceKonto getServiceKonto(FormData formData) { - return factory.buildOsiServiceKonto(AfmHeaderTestFactory.POSTFACH_NAME_ID, formData); - } - - @DisplayName("postfach addresses") - @Nested - class TestBuildPostfachAddresses { - - @DisplayName("with rest_response_name") - @Nested - class TestWithRestResponseName { - - @Test - void shouldCallBuildAddresses() { - getPostfachAddresses(); - - verify(factory).buildOsiPostfachV1Address(any(), anyInt()); - } - - @Test - void shouldReturnPostfachAddresses() { - var addresses = getPostfachAddresses(); - - assertThat(addresses).hasSize(1); - assertThat(addresses.get(0).getIdentifier()).isInstanceOf(StringBasedIdentifier.class); - assertThat(((StringBasedIdentifier) addresses.get(0).getIdentifier()).getPostfachId()) - .isEqualTo(AfmHeaderTestFactory.POSTFACH_NAME_ID); - assertThat(addresses.get(0).getVersion()).isEqualTo(ServiceKontoFactory.POSTFACH_VERSION); - assertThat(addresses.get(0).getType()).isEqualTo(PostfachAddressTestFactory.POSTFACH_ADDRESS_TYPE); - } - - private List<PostfachAddress> getPostfachAddresses() { - return buildServiceKonto(FORM_DATA).getPostfachAddresses(); - } - } - - @DisplayName("without rest_response_name") - @Nested - class TestWithoutRestResponseName { - - private static final FormData FORM_DATA_WITHOUT_REST_RESPONSE_NAME = FormDataUtils.from(FORM_DATA) - .remove(ServiceKontoFactory.REST_RESPONSE_NAME).build(); - - @Test - void shouldBuildDefault() { - getPostfachAddresses(); - - verify(factory).buildDefault(AfmHeaderTestFactory.POSTFACH_NAME_ID); - } - - @Test - void shouldReturnPostfachAddresses() { - var addresses = getPostfachAddresses(); - - assertThat(addresses).hasSize(1); - - assertThat(addresses.get(0).getIdentifier()).isInstanceOf(StringBasedIdentifier.class); - - assertThat(((StringBasedIdentifier) addresses.get(0).getIdentifier()).getPostfachId()) - .isEqualTo(AfmHeaderTestFactory.POSTFACH_NAME_ID); - assertThat(addresses.get(0).getVersion()).isEqualTo(ServiceKontoFactory.POSTFACH_VERSION); - assertThat(addresses.get(0).getType()).isEqualTo(1); - } - - private List<PostfachAddress> getPostfachAddresses() { - return buildServiceKonto(FORM_DATA_WITHOUT_REST_RESPONSE_NAME).getPostfachAddresses(); - } - } - - private ServiceKonto buildServiceKonto(FormData formData) { - return factory.buildOsiServiceKonto(AfmHeaderTestFactory.POSTFACH_NAME_ID, formData); - } - } - } - - @Nested - class TestCreateBayernIdServicekonto { - - private final Map<String, Object> formDataHeaders = Map.of( - ServiceKontoFactory.KEY_BAYERN_ID_POSTFACH_ID, PostfachAddressTestFactory.POSTFACH_ID, - ServiceKontoFactory.KEY_BAYERN_ID_TRUST_LEVEL, ServiceKontoTestFactory.TRUST_LEVEL - ); - - @DisplayName("should return empty when headers map is null") - @Test - void shouldReturnEmptyWhenNull() { - var serviceKonto = factory.createBayernIdServiceKonto(null); - - assertThat(serviceKonto).isEmpty(); - } - - @DisplayName("should return empty when postfach id is missing") - @Test - void shouldReturnEmptyWhenPostfachIdIsMissing() { - var serviceKonto = factory.createBayernIdServiceKonto(Map.of()); - - assertThat(serviceKonto).isEmpty(); - } - - @Test - void shouldCallIsValidTrustLevel() { - factory.createBayernIdServiceKonto(formDataHeaders); - - verify(factory).isValidTrustLevel(formDataHeaders); - } - - @Test - void shouldCallBuildBayernIdServiceKonto() { - factory.createBayernIdServiceKonto(formDataHeaders); - - verify(factory).buildBayernIdServiceKonto(formDataHeaders); - } - - @Test - void shouldReturnServiceKonto() { - var serviceKonto = ServiceKonto.builder().build(); - doReturn(serviceKonto).when(factory).buildBayernIdServiceKonto(any()); - - var result = factory.createBayernIdServiceKonto(formDataHeaders); - - assertThat(result).contains(serviceKonto); - } - - @DisplayName("should return empty when trust level has unexpected value") - @Test - void shouldReturnEmptyWhenTrustLevelCorrupted() { - doReturn(false).when(factory).isValidTrustLevel(any()); - - var serviceKonto = factory.createBayernIdServiceKonto(formDataHeaders); - - assertThat(serviceKonto).isEmpty(); - } - } - - @Nested - class TestIsValidTrustLevel { - - @Test - void shouldCallExists() { - try (var trustLevelMock = mockStatic(TrustLevel.class)) { - isValidTrustLevel(); - - trustLevelMock.verify(() -> TrustLevel.exists(ServiceKontoTestFactory.TRUST_LEVEL)); - } - } - - @Test - void shouldReturnValue() { - try (var trustLevelMock = mockStatic(TrustLevel.class)) { - trustLevelMock.when(() -> TrustLevel.exists(any())).thenReturn(true); - - var result = isValidTrustLevel(); - - assertThat(result).isTrue(); - } - } - - private boolean isValidTrustLevel() { - return factory.isValidTrustLevel(Map.of(ServiceKontoFactory.KEY_BAYERN_ID_TRUST_LEVEL, ServiceKontoTestFactory.TRUST_LEVEL)); - } - } - - @Nested - class TestBuildBayernIdServiceKonto { - - private static final String POSTFACH_ID = "postfach-id"; - private static final PostfachAddress POSTFACH_ADDRESS = PostfachAddressTestFactory.create(); - private static final String TRUST_LEVEL = "STORK-QAA-Level-2"; - - private final Map<String, Object> formDataHeaders = Map.of( - ServiceKontoFactory.KEY_BAYERN_ID_POSTFACH_ID, POSTFACH_ID, - ServiceKontoFactory.KEY_BAYERN_ID_TRUST_LEVEL, TRUST_LEVEL); - - @Test - void shouldSetType() { - var serviceKonto = buildBayernIdServiceKonto(); - - assertThat(serviceKonto.getType()).isEqualTo(ServiceKontoFactory.POSTFACH_TYPE_BAYERN_ID); - } - - @Test - void shouldCallBuildPostfachAddress() { - buildBayernIdServiceKonto(); - - verify(factory).buildPostfachAddress(POSTFACH_ID); - } - - @Test - void shouldSetPostfachAddress() { - doReturn(POSTFACH_ADDRESS).when(factory).buildPostfachAddress(any()); - - var serviceKonto = buildBayernIdServiceKonto(); - - assertThat(serviceKonto.getPostfachAddresses()).containsOnly(POSTFACH_ADDRESS); - } - - @Test - void shouldCallGetTrustLevel() { - buildBayernIdServiceKonto(); - - verify(factory).getTrustLevel(formDataHeaders); - } - - @Test - void shouldSetTrustLevel() { - var serviceKonto = buildBayernIdServiceKonto(); - - assertThat(serviceKonto.getTrustLevel()).isEqualTo(TRUST_LEVEL); - } - - private ServiceKonto buildBayernIdServiceKonto() { - return factory.buildBayernIdServiceKonto(formDataHeaders); - } - } - - @Nested - class TestGetTrustLevel { - - private final Map<String, Object> formDataHeaders = Map.of(ServiceKontoFactory.KEY_BAYERN_ID_TRUST_LEVEL, - ServiceKontoTestFactory.TRUST_LEVEL); - - @Test - void shouldReturnTrustLevel() { - var trustLevel = factory.getTrustLevel(formDataHeaders); - - assertThat(trustLevel).isEqualTo(ServiceKontoTestFactory.TRUST_LEVEL); - } - - } - -} \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/common/ZipAttachmentReaderTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/common/ZipAttachmentReaderTest.java deleted file mode 100644 index 3f36987c..00000000 --- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/common/ZipAttachmentReaderTest.java +++ /dev/null @@ -1,320 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.semantik.common; - -import static org.assertj.core.api.Assertions.*; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.Mockito.*; - -import java.io.ByteArrayInputStream; -import java.io.File; -import java.nio.file.Files; -import java.nio.file.Path; -import java.util.List; -import java.util.function.Predicate; -import java.util.zip.ZipException; -import java.util.zip.ZipInputStream; - -import org.apache.commons.lang3.StringUtils; -import org.apache.commons.lang3.tuple.Pair; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mockito.Spy; -import org.springframework.util.MimeTypeUtils; - -import de.ozgcloud.common.test.TestUtils; -import de.ozgcloud.eingang.common.formdata.IncomingFile; -import lombok.SneakyThrows; - -class ZipAttachmentReaderTest { - private static final String TMP_DIRECTORY_PATH = System.getProperty("java.io.tmpdir"); - private static final String ZIP_1_FILE_NAME = "attachment-1file.zip"; - private static final String ZIP_ENCRYPTED = "attachment-encrypted.zip"; - - @Spy - private ZipAttachmentReader reader; - - @Nested - class TestReadZipAttachment { - - @Test - @SneakyThrows - @DisplayName("should save original zip to file system") - void shouldSaveOriginalZip() { - cleanupTempFiles(); - - createZipAttachment(ZIP_1_FILE_NAME); - - verifySourceFileSavedInTmpDirectory(); - } - - @SneakyThrows - private void verifySourceFileSavedInTmpDirectory() { - List<Path> foundFiles = Files.find(Path.of(getTmpDirectoryPath()), 1, - ((path, basicFileAttributes) -> path.getFileName().toString().startsWith(ZipAttachmentReader.SOURCE_ZIP_PREFIX))) - .toList(); - assertThat(foundFiles).hasSize(1).first(); - } - - @Test - @DisplayName("should return readable input stream for source zip file") - void shouldReturnSourceStream() { - var expectedContent = TestUtils.loadFile(ZIP_1_FILE_NAME); - - var sourceZipAsStream = createZipAttachment(ZIP_1_FILE_NAME).getSourceZipAsStream(); - - assertThat(sourceZipAsStream).hasSameContentAs(expectedContent); - } - - @Test - @DisplayName("should throw exception when reading encrypted ZIP") - void shouldFailSilentByEncryptedZip() { - var zipAttachment = createZipAttachment(ZIP_ENCRYPTED); - - assertThrows(ReadZipException.class, zipAttachment::readContent); - } - - private static ZipAttachmentReader createZipAttachment(String fileName) { - return ZipAttachmentReader.from(TestUtils.loadFile(fileName), fileName); - } - } - - @Nested - class TestReadZip { - - private static final String ZIP_2_FILE_NAME = "attachment-2files.zip"; - private static final String content_file_0_name = "zip-file-0.txt"; - private static final long content_file_0_size = getFileSize("zip-file-0.txt"); - private static final String content_file_1_name = "zip-file-1.txt"; - private static final long content_file_1_size = getFileSize("zip-file-1.txt"); - - private static Pair<String, Long> createContentPair(String fileName) { - var size = switch (fileName) { - case content_file_0_name -> content_file_0_size; - case content_file_1_name -> content_file_1_size; - default -> getFileSize(fileName); - }; - return Pair.of(fileName, size); - } - - @Test - @SneakyThrows - void shouldReadAllZipEntries() { - var zipContent = new ZipAttachmentReader().readContent(loadZip(ZIP_2_FILE_NAME)).stream() - .map(e -> Pair.of(e.getName(), e.getSize())).toList(); - - assertThat(zipContent).containsExactlyInAnyOrder(createContentPair(content_file_0_name), createContentPair(content_file_1_name)); - } - - @Test - @SneakyThrows - void shouldReadZipContent() { - var attachmentContentList = new ZipAttachmentReader().readContent(loadZip(ZIP_1_FILE_NAME)); - - assertThat(attachmentContentList).hasSize(1); - var contentEntry = attachmentContentList.get(0); - assertThat(contentEntry.getName()).isEqualTo(content_file_0_name); - assertThat(contentEntry.getSize()).isEqualTo(content_file_0_size); - assertThat(contentEntry.getContentStream()).hasSameContentAs(TestUtils.loadFile(content_file_0_name)); - } - - @Test - @SneakyThrows - void shouldSkipFolders() { - cleanupTempFiles(); - - var zipContent = new ZipAttachmentReader().readContent(loadZip("attachment-empty.zip")); - - assertThat(zipContent).isEmpty(); - assertTrue(noFilesWithSuffixInTempDirectory()); - } - - @Test - @DisplayName("should delete all temporary files after last reading of inputstream") - @SneakyThrows - void shouldDeleteContentFilesOnFinalRead() { - cleanupTempFiles(); - var contentEntries = new ZipAttachmentReader().readContent(loadZip(ZIP_2_FILE_NAME)); - - contentEntries.forEach(this::closeInputStreamFinalRead); - - assertTrue(noFilesWithSuffixInTempDirectory()); - } - - @SneakyThrows - private void closeInputStreamFinalRead(IncomingFile entry) { - entry.getContentStreamForFinalRead().close(); - } - - @Test - @DisplayName("should return readable input stream for source zip if cannot extract content") - void shouldReturnSourceStreamByError() { - var attachmentContent = new byte[] { 0, 1, 2, 3 }; - var attachment = ZipAttachmentReader.from(new ByteArrayInputStream(attachmentContent), "invalid"); - - assertThrows(ReadZipException.class, attachment::readContent); - - assertThat(attachment.getSourceZipAsStream()).hasSameContentAs(new ByteArrayInputStream(attachmentContent)); - } - - @Test - @DisplayName("should throw exception if ZIP is invalid.") - void shouldFailSilentByError() { - var invalidZip = new ByteArrayInputStream(new byte[] { 0, 1, 2, 3 }); - - var zipAttachment = ZipAttachmentReader.from(invalidZip, "invalid"); - - assertThrows(ReadZipException.class, zipAttachment::readContent); - } - - @Test - @SneakyThrows - void shouldFailByEncryptedZip() { - Assertions.assertThrows(ZipException.class, () -> new ZipAttachmentReader().readContent(loadZip(ZIP_ENCRYPTED))); - } - - } - - @SneakyThrows - private static ZipInputStream loadZip(String name) { - return new ZipInputStream(TestUtils.loadFile(name)); - } - - @Nested - class TestZipBombs { - - private static final String ZIP_BOMB_WITH_BIG_NULL_FILE_CONTENT = "zipbombs/filewithnulls.dat.zip"; - private static final String ZIP_BOMB_WITH_MANY_FILES = "zipbombs/filewithmanyfiles.dat.zip"; - - @Test - void shouldFailOnExtremCompressionRatio() { - var zip = loadZip(ZIP_BOMB_WITH_BIG_NULL_FILE_CONTENT); - - ReadZipException exception = assertThrows(ReadZipException.class, () -> reader.readContent(zip)); - - assertThat(exception.getMessage()).contains("Ratio between compressed and uncompressed data is highly suspicious"); - } - - @Test - @SneakyThrows - void shouldFailOnTotalExtractedSize() { - var zip = loadZip(ZIP_1_FILE_NAME); - reader.readContent(zip); - - verify(reader).checkTotalExtractedSize(157); - } - - @Test - void shouldFailOnTotalZipEntries() { - var zip = loadZip(ZIP_BOMB_WITH_MANY_FILES); - - ReadZipException exception = assertThrows(ReadZipException.class, () -> reader.readContent(zip)); - - assertThat(exception.getMessage()).contains("Total entries in zip file exceeded"); - } - } - - @Nested - class TestSaveFiles { - - @Test - @SneakyThrows - @DisplayName("should save file in temporary folder") - void shouldSaveFile() { - var systemTmpPathWithoutLastSlash = getTmpDirectoryPath(); - - var resultFile = reader.createLocalTempFile(); - - assertThat(resultFile).hasParent(systemTmpPathWithoutLastSlash); - } - - @Test - @SneakyThrows - @DisplayName("should save file with specific prefix and suffix") - void shouldSaveFileByName() { - var resultFileName = new ZipAttachmentReader() - .createLocalTempFile().getName(); - - assertThat(resultFileName) - .startsWith(ZipAttachmentReader.TARGET_ATTACHMENT_PREFIX) - .endsWith(ZipAttachmentReader.TMP_FILE_SUFFIX); - } - } - - @Nested - class TestContentType { - - @Test - void shouldReturnDefaultWhenNullString() { - assertThrows(NullPointerException.class, () -> reader.getContentType(null)); - } - - @Test - void shouldReturnDefaultWhenEmptyString() { - var contentType = new ZipAttachmentReader().getContentType(StringUtils.EMPTY); - - assertThat(contentType).isEqualTo(MimeTypeUtils.APPLICATION_OCTET_STREAM_VALUE); - } - - @Test - void shouldReturnDefaultWhenSpaceString() { - var contentType = new ZipAttachmentReader().getContentType(StringUtils.SPACE); - - assertThat(contentType).isEqualTo(MimeTypeUtils.APPLICATION_OCTET_STREAM_VALUE); - } - - @Test - void shouldGetContentType() { - var fileNames = List.of("1.xml", "2.txt"); - - var contentTypes = fileNames.stream().map(new ZipAttachmentReader()::getContentType).toList(); - - assertThat(contentTypes).containsExactlyInAnyOrder(MimeTypeUtils.APPLICATION_XML_VALUE, MimeTypeUtils.TEXT_PLAIN_VALUE); - } - } - - private static final Predicate<Path> hasNameSuffix = p -> p.getFileName().toString().endsWith(ZipAttachmentReader.TMP_FILE_SUFFIX); - - @SneakyThrows - private static void cleanupTempFiles() { - Files.walk(Path.of(TMP_DIRECTORY_PATH), 1).filter(hasNameSuffix).map(Path::toFile).forEach(File::delete); - } - - @SneakyThrows - private static boolean noFilesWithSuffixInTempDirectory() { - return Files.walk(Path.of(TMP_DIRECTORY_PATH), 1).noneMatch(hasNameSuffix); - } - - @SneakyThrows - private static long getFileSize(String fileName) { - Path filePath = Path.of(ZipAttachmentReaderTest.class.getClassLoader().getResource(fileName).toURI()); - return Files.size(filePath); - } - - private static String getTmpDirectoryPath() { - return TMP_DIRECTORY_PATH.endsWith("/") ? TMP_DIRECTORY_PATH.substring(0, TMP_DIRECTORY_PATH.length() - 1) : TMP_DIRECTORY_PATH; - } -} diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/FilesMapperHelperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/FilesMapperHelperTest.java deleted file mode 100644 index 0375100e..00000000 --- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/FilesMapperHelperTest.java +++ /dev/null @@ -1,183 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.semantik.enginebased; - -import static de.ozgcloud.eingang.common.formdata.FormDataTestFactory.*; -import static org.assertj.core.api.Assertions.*; - -import java.util.List; -import java.util.Map; - -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; - -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; -import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; -import de.ozgcloud.eingang.common.formdata.IncomingFileGroupTestFactory; -import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory; - -class FilesMapperHelperTest { - - @Nested - class TestExtractData { - - @Test - void shouldReturnMappedFiles() { - Map<String, String> expectedResult = Map.of(SIMPLE_VALUE_KEY, SIMPLE_VALUE); - var mappedFilesMap = Map.of(FilesMapperHelper.FIELD_NAME_MAPPED_FILES, (Object) expectedResult); - - var extractedMappedFiles = FilesMapperHelper.getMappedFiles(FormDataTestFactory.withFormDataMaps(mappedFilesMap)); - - assertThat(extractedMappedFiles.get()).isEqualTo(expectedResult); - } - - @Test - void shouldHandleMissingFiles() { - var extractedMappedFiles = FilesMapperHelper.getMappedFiles(FormDataTestFactory.withFormDataMaps(Map.of(SIMPLE_VALUE_KEY, SIMPLE_VALUE))); - - assertThat(extractedMappedFiles).isEmpty(); - } - - @Test - void shouldReturnAttachedFileGroups() { - var incomingFileGroups = List.of(IncomingFileGroupTestFactory.create()); - Map<String, Object> mappedFilesMap = Map.of(FilesMapperHelper.FIELD_NAME_MAPPED_FILES, - Map.of(FilesMapperHelper.ATTACHMENTS, incomingFileGroups)); - - var extractedAttachments = FilesMapperHelper.getAttachedFileGroups(FormDataTestFactory.withFormDataMaps(mappedFilesMap)); - - assertThat(extractedAttachments.get()).isEqualTo(incomingFileGroups); - } - - @Nested - class getAttachedFiledGroups { - @Test - void shouldHandleMissingFileGroups() { - Map<String, Object> mappedFilesMap = Map.of(FilesMapperHelper.FIELD_NAME_MAPPED_FILES, Map.of(SIMPLE_VALUE_KEY, SIMPLE_VALUE)); - - var extractedFileGroups = FilesMapperHelper.getAttachedFileGroups(FormDataTestFactory.withFormDataMaps(mappedFilesMap)); - - assertThat(extractedFileGroups).isEmpty(); - } - } - - @Test - void souldReturnRepresentations() { - var incomingFileGroups = List.of(IncomingFileTestFactory.create()); - Map<String, Object> mappedFilesMap = Map.of(FilesMapperHelper.FIELD_NAME_MAPPED_FILES, - Map.of(FilesMapperHelper.REPRESENTATIONS, incomingFileGroups)); - - var extractedRepresentations = FilesMapperHelper.getRepresentations(FormDataTestFactory.withFormDataMaps(mappedFilesMap)); - - assertThat(extractedRepresentations.get()).isEqualTo(incomingFileGroups); - } - - @Test - void shouldHandleMissingFileRepresentations() { - Map<String, Object> mappedFilesMap = Map.of(FilesMapperHelper.FIELD_NAME_MAPPED_FILES, Map.of(SIMPLE_VALUE_KEY, SIMPLE_VALUE)); - - var extractedRepresentations = FilesMapperHelper.getRepresentations(FormDataTestFactory.withFormDataMaps(mappedFilesMap)); - - assertThat(extractedRepresentations).isEmpty(); - } - } - - @Nested - class TestAttachmentCount { - - @Test - void shouldCountEmptyList() { - var counter = FilesMapperHelper.countAttachedFiles(List.of()); - - assertThat(counter).isZero(); - } - - @Test - void shouldCountNoAttachedFiles() { - var counter = FilesMapperHelper.countAttachedFiles(List.of(IncomingFileGroupTestFactory.createBuilder().clearFiles().build())); - - assertThat(counter).isZero(); - } - - @Test - void shouldCountOneAttachment() { - var fileGroup = List.of(IncomingFileGroupTestFactory.createBuilder().file(IncomingFileTestFactory.create()).build()); - - var counter = FilesMapperHelper.countAttachedFiles(fileGroup); - - assertThat(counter).isEqualTo(2); - } - - @Test - void shouldCountAllAttachments() { - var counter = FilesMapperHelper.countAttachedFiles(createFileGroupsWith4Files()); - - assertThat(counter).isEqualTo(4); - } - - private static List<IncomingFileGroup> createFileGroupsWith4Files() { - return List.of(IncomingFileGroupTestFactory.createBuilder() - .clearFiles() - .files(List.of(IncomingFileTestFactory.create(), IncomingFileTestFactory.create(), IncomingFileTestFactory.create())).build(), - IncomingFileGroupTestFactory.create()); - - } - } - - @Nested - class TestRemoveProcessedData { - - @Test - @DisplayName("should remove processed mapped files from raw form data") - void shouldRemoveProcessedDataOnly() { - var rawFormData = Map.of(SIMPLE_VALUE_KEY, SIMPLE_VALUE, FilesMapperHelper.FIELD_NAME_MAPPED_FILES, new Object()); - - var cleanedFormData = FilesMapperHelper.removeProcessedData(withFormDataMaps(rawFormData)).getFormData(); - - assertThat(cleanedFormData) - .doesNotContainKey(FilesMapperHelper.FIELD_NAME_MAPPED_FILES) - .containsEntry(SIMPLE_VALUE_KEY, SIMPLE_VALUE); - } - - @Test - @DisplayName("should not change any other data") - void shouldNotChangeOtherFields() { - FormData formData = create(); - - var cleanedFormData = FilesMapperHelper.removeProcessedData(formData); - - assertThat(cleanedFormData.getId()).isEqualTo(formData.getId()); - assertThat(cleanedFormData.getHeader()).isEqualTo(formData.getHeader()); - assertThat(cleanedFormData.getZustaendigeStelles()).isEqualTo(formData.getZustaendigeStelles()); - assertThat(cleanedFormData.getAntragsteller()).isEqualTo(formData.getAntragsteller()); - assertThat(cleanedFormData.getNumberOfAttachments()).isEqualTo(formData.getNumberOfAttachments()); - assertThat(cleanedFormData.getAttachments()).isEqualTo(formData.getAttachments()); - assertThat(cleanedFormData.getNumberOfRepresentations()).isEqualTo(formData.getNumberOfRepresentations()); - assertThat(cleanedFormData.getRepresentations()).isEqualTo(formData.getRepresentations()); - assertThat(cleanedFormData.getFormData()).containsAllEntriesOf(formData.getFormData()); - } - } -} \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/a12/A12FormDataMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/a12/A12FormDataMapperTest.java deleted file mode 100644 index aa4ee4fd..00000000 --- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/a12/A12FormDataMapperTest.java +++ /dev/null @@ -1,93 +0,0 @@ -package de.ozgcloud.eingang.semantik.enginebased.a12; - -import static org.assertj.core.api.Assertions.*; -import static org.mockito.ArgumentMatchers.*; -import static org.mockito.Mockito.*; - -import java.util.Optional; - -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Spy; - -import com.fasterxml.jackson.databind.ObjectMapper; - -import de.ozgcloud.common.binaryfile.TempFileUtils; -import de.ozgcloud.common.test.TestUtils; -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.FormData.FormDataControl; -import de.ozgcloud.eingang.common.formdata.FormData.Representations; -import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; -import de.ozgcloud.eingang.common.formdata.IncomingFile; -import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory; - -class A12FormDataMapperTest { - - @Spy - @InjectMocks - private A12FormDataMapper mapper; - - @Spy - private ObjectMapper objectMapper = new ObjectMapper(); - - @Nested - class TestParseFormData { - - @Test - void shouldGetFormDataFile() { - var formData = buildInputFormData(); - - mapper.parseFormData(formData); - - verify(mapper).getFormDataFile(same(formData)); - } - } - - @Nested - class TestGetFormDataFile { - @Test - void shouldReturnFile() { - var inFile = mapper.getFormDataFile(buildInputFormData()); - - assertThat(inFile).get().usingRecursiveComparison().ignoringFields("file").isEqualTo(buildFormDataInFile()); - } - - @Test - void shouldCheckIfFound() { - mapper.getFormDataFile(FormDataTestFactory.create()); - - verify(mapper).logWarnIfEmpty(Optional.empty()); - } - } - - private FormData buildInputFormData() { - return FormDataTestFactory.createBuilder() - .control(FormDataControl.builder() - .representations(Optional.of(Representations.builder().primaryFormDataRepresentation("A12FormData.json").build())).build()) - .representation(buildFormDataInFile()) - .build(); - } - - private IncomingFile buildFormDataInFile() { - return IncomingFileTestFactory.createBuilder() - .contentType("application/json") - .name("A12FormData.json") - .file(TempFileUtils.writeTmpFile(TestUtils.loadFile("A12/a12FormData.json"))) - .build(); - } - - @Nested - class TestReadEingang { - - @Test - void shouldReadJson() { - var file = TempFileUtils.writeTmpFile(TestUtils.loadFile("A12/a12FormData.json")); - - var result = mapper.readEingang(file); - - assertThat(result).isNotNull(); - } - } - -} diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerHeaderMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerHeaderMapperTest.java deleted file mode 100644 index c5c99d30..00000000 --- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerHeaderMapperTest.java +++ /dev/null @@ -1,243 +0,0 @@ -package de.ozgcloud.eingang.semantik.enginebased.afm; - -import static org.assertj.core.api.Assertions.*; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.ArgumentMatchers.*; -import static org.mockito.Mockito.*; - -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; - -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.NullAndEmptySource; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.Spy; - -import de.ozgcloud.eingang.common.errorhandling.TechnicalException; -import de.ozgcloud.eingang.common.formdata.AntragstellerTestFactory; -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.semantik.common.ServiceKontoFactory; - -class AfmAntragstellerHeaderMapperTest { - - @Spy - @InjectMocks - private AfmAntragstellerHeaderMapper mapper; - - @Nested - class TestParseAntragstellerData { - - @Test - void shouldCallGetHeaders() { - var formData = FormData.builder().build(); - doReturn(Collections.emptyMap()).when(mapper).getHeaders(any()); - - mapper.parseAntragstellerData(formData); - - verify(mapper).getHeaders(formData); - } - - @Test - void shouldCallBuildAntragsteller() { - var headerMap = AfmHeaderTestFactory.createCustomHeaderMap(); - doReturn(headerMap).when(mapper).getHeaders(any()); - - mapper.parseAntragstellerData(FormData.builder().build()); - - verify(mapper).buildAntragsteller(headerMap); - } - - @Test - void shouldSetAntragsteller() { - var antragsteller = AntragstellerTestFactory.create(); - doReturn(antragsteller).when(mapper).buildAntragsteller(any()); - - var result = mapper.parseAntragstellerData(FormData.builder().build()); - - assertThat(result.getAntragsteller()).isEqualTo(antragsteller); - } - - @Nested - class TestBuildAntragsteller { - - private Map<String, Object> headers = AfmHeaderTestFactory.createCustomHeaderMap(); - @Test - void shouldSetPostfachId() { - var result = mapper.buildAntragsteller(headers); - - assertThat(result.getPostfachId()).isEqualTo(AfmHeaderTestFactory.CUSTOM_POSTFACH_ID); - } - - @Test - void shouldSetVorname() { - var result = mapper.buildAntragsteller(headers); - - assertThat(result.getVorname()).isEqualTo(AfmHeaderTestFactory.CUSTOM_VORNAME); - } - - @Test - void shouldSetNachname() { - var result = mapper.buildAntragsteller(headers); - - assertThat(result.getNachname()).isEqualTo(AfmHeaderTestFactory.CUSTOM_NACHNAME); - } - - @Test - void shouldSetGeburtsname() { - var result = mapper.buildAntragsteller(headers); - - assertThat(result.getGeburtsname()).isEqualTo(AfmHeaderTestFactory.CUSTOM_GEBURTSNAME); - } - - @Test - void shouldSetGeburtsort() { - var result = mapper.buildAntragsteller(headers); - - assertThat(result.getGeburtsort()).isEqualTo(AfmHeaderTestFactory.CUSTOM_GEBURTSORT); - } - - @Test - void shoudlSetEmail() { - var result = mapper.buildAntragsteller(headers); - - assertThat(result.getEmail()).isEqualTo(AfmHeaderTestFactory.CUSTOM_EMAIL); - } - - @Test - void shouldSetTelefon() { - var result = mapper.buildAntragsteller(headers); - - assertThat(result.getTelefon()).isEqualTo(AfmHeaderTestFactory.CUSTOM_TELEFON); - } - - @Test - void shouldSetStrasse() { - var result = mapper.buildAntragsteller(headers); - - assertThat(result.getStrasse()).isEqualTo(AfmHeaderTestFactory.CUSTOM_STRASSE); - } - - @Test - void shouldSetPlz() { - var result = mapper.buildAntragsteller(headers); - - assertThat(result.getPlz()).isEqualTo(AfmHeaderTestFactory.CUSTOM_PLZ); - } - - @Test - void shouldSetOrt() { - var result = mapper.buildAntragsteller(headers); - - assertThat(result.getOrt()).isEqualTo(AfmHeaderTestFactory.CUSTOM_ORT); - } - } - } - - @Nested - class TestIsResponsible { - - @Mock - private FormData formData; - - @Test - void shouldApproveResponsibility() { - doReturn(true).when(mapper).isPostfachIdNotBlank(any()); - doReturn(createHeaders(ServiceKontoFactory.KEY_BAYERN_ID_POSTFACH_ID, "123")).when(mapper).getHeaders(any()); - - var isResponsible = mapper.isResponsible(formData); - - assertTrue(isResponsible); - } - - @Nested - class TestDenyResponsibility { - - @Test - void shouldDenyWhenNoHeader() { - doReturn(Collections.emptyMap()).when(mapper).getHeaders(any()); - - var isResponsible = mapper.isResponsible(FormData.builder().build()); - - assertFalse(isResponsible); - } - - @Test - void shouldDenyWhenNoPostfachId() { - doReturn(createHeaders(AfmAntragstellerHeaderMapper.KEY_VORNAME, "name")).when(mapper).getHeaders(any()); - - var isResponsible = mapper.isResponsible(formData); - - assertFalse(isResponsible); - } - - @Test - void shouldDenyWhenPostfachIdIsBlank() { - doReturn(createHeaders(ServiceKontoFactory.KEY_BAYERN_ID_POSTFACH_ID, null)).when(mapper).getHeaders(any()); - doReturn(false).when(mapper).isPostfachIdNotBlank(any()); - - var isResponsible = mapper.isResponsible(formData); - - assertFalse(isResponsible); - } - - @Nested - class TestIsPostfachIdNotBlank { - - @ParameterizedTest - @NullAndEmptySource - void shouldReturnFalseWhenPostfachIdIsBlank(String postfachId) { - var isNotBlank = mapper.isPostfachIdNotBlank(postfachId); - - assertFalse(isNotBlank); - } - - @Test - void shouldApprove() { - var isNotBlank = mapper.isPostfachIdNotBlank("123"); - - assertTrue(isNotBlank); - } - - @Test - void shouldFailOnUnexpectedType() { - var postfachId = new Object(); - - assertThrows(TechnicalException.class, () -> mapper.isPostfachIdNotBlank(postfachId)); - } - } - } - } - - @Nested - class TestGetHeaders { - - @Test - void shouldReturnHeaders() { - var headers = createHeaders(ServiceKontoFactory.KEY_BAYERN_ID_POSTFACH_ID, "123"); - var formData = FormData.builder().formData(createHeaders(AfmHeaderMapper.HEADER_FIELD, headers)).build(); - - var result = mapper.getHeaders(formData); - - assertThat(result).isEqualTo(headers); - } - - @Test - void shouldReturnEmptyMapWhenNoHeaders() { - var formData = FormData.builder().build(); - - var result = mapper.getHeaders(formData); - - assertThat(result).isEmpty(); - } - } - - private Map<String, Object> createHeaders(String key, Object value) { - var map = new HashMap<String, Object>(); - map.put(key, value); - return map; - } -} \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerMapperTest.java deleted file mode 100644 index f68df9df..00000000 --- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerMapperTest.java +++ /dev/null @@ -1,240 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.semantik.enginebased.afm; - -import static org.assertj.core.api.Assertions.*; -import static org.mockito.ArgumentMatchers.*; -import static org.mockito.Mockito.*; - -import java.util.HashMap; -import java.util.UUID; - -import org.assertj.core.data.MapEntry; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Mock; - -import de.ozgcloud.eingang.common.formdata.Antragsteller; -import de.ozgcloud.eingang.common.formdata.FormData; - -class AfmAntragstellerMapperTest { - - @InjectMocks - private AfmAntragstellerMapper mapper; - - @Mock - private AfmAntragstellerHeaderMapper antragstellerHeaderMapper; - - private FormData formData = FormData.builder().formData(AfmAntragstellerTestFactory.createFormDataMap()).build(); - - @DisplayName("Parse form data") - @Nested - class TestParseFormData { - - @Test - void shouldCallHeaderMapper() { - FormData expectedFormData = mock(FormData.class); - when(antragstellerHeaderMapper.isResponsible(any())).thenReturn(true); - when(antragstellerHeaderMapper.parseAntragstellerData(any())).thenReturn(expectedFormData); - - var processedFormData = parseFormData(formData); - - assertThat(processedFormData).isEqualTo(expectedFormData); - } - - @Test - void shouldDoNothingOnNullAntragstaller() { - var formData = FormData.builder().formData(new HashMap<>()).build(); - - var parsedFormData = parseFormData(formData); - - assertThat(parsedFormData).usingRecursiveComparison().ignoringFields(AfmAntragstellerMapper.ANTRAGSTELLER).isEqualTo(formData); - } - - @Test - void shouldMapAntragsteller() { - var parsedFormData = parseFormData(formData); - - assertThat(parsedFormData.getAntragsteller()).usingRecursiveComparison().ignoringFields("data") - .isEqualTo(AfmAntragstellerTestFactory.create()); - } - - @Test - @DisplayName("should map antragsteller when key starts with an uppercase letter") - void shouldMapAntragstellerUppercase() { - formData = FormData.builder().formData(AfmAntragstellerTestFactory.createFormDataMap(AfmAntragstellerMapper.ANTRAGSTELLER_UPPERCASE)) - .build(); - - var parsedFormData = parseFormData(formData); - - assertThat(parsedFormData.getAntragsteller()).usingRecursiveComparison().ignoringFields("data") - .isEqualTo(AfmAntragstellerTestFactory.create()); - } - - @Test - @DisplayName("should map only antragsteller key when both present") - void shouldMapOnlyOneKey() { - var expectedAntragsteller = AfmAntragstellerTestFactory.createBuilder().anrede("anrede").vorname("firstName").nachname("lastName") - .build(); - - var parsedFormData = parseFormData(createFormData(expectedAntragsteller)); - - assertThat(parsedFormData.getAntragsteller()).usingRecursiveComparison().ignoringFields("data") - .isEqualTo(expectedAntragsteller); - } - - private FormData createFormData(Antragsteller antragsteller) { - var formDataMap = AfmAntragstellerTestFactory.createMutableFormDataMap(AfmAntragstellerMapper.ANTRAGSTELLER_UPPERCASE); - var antragstelleMap = AfmAntragstellerTestFactory.createPrivateAntragstelleMap( - MapEntry.entry(AfmAntragstellerMapper.ANREDE, antragsteller.getAnrede()), - MapEntry.entry(AfmAntragstellerMapper.VORNAME, antragsteller.getVorname()), - MapEntry.entry(AfmAntragstellerMapper.NACHNAME, antragsteller.getNachname()) - ); - formDataMap.put(AfmAntragstellerMapper.ANTRAGSTELLER, antragstelleMap); - return FormData.builder().formData(formDataMap).build(); - } - - @DisplayName("map private antragsteller data") - @Nested - class TestMapPrivateAntragstellerData { - - @Test - void shouldMapPostfachId() { - var parsedFormData = parseFormData(formData); - - assertThat(parsedFormData.getAntragsteller().getPostfachId()).isEqualTo(AfmAntragstellerTestFactory.POSTFACH_ID); - } - - @DisplayName("with mapped and not mapped value") - @Nested - class TestWithMappedAndNotMappedValue { - - private static final String NOT_MAPPED_FIELD = "not_mapped_value"; - private static final String NOT_MAPPED_VALUE = UUID.randomUUID().toString(); - - private FormData formData; - - @BeforeEach - void buildFormData() { - var antragstellerMap = AfmAntragstellerTestFactory.createPrivateAntragstelleMap( - MapEntry.entry(NOT_MAPPED_FIELD, NOT_MAPPED_VALUE)); - - var formDataMap = new HashMap<String, Object>(); - formDataMap.put(AfmAntragstellerMapper.ANTRAGSTELLER, antragstellerMap); - - formData = FormData.builder().formData(formDataMap).build(); - } - - @Test - void shouldNotContainDuplicateValues() { - var parsedFormData = parseFormData(formData); - - assertThat(parsedFormData.getAntragsteller().getData()).doesNotContainKeys( - AfmAntragstellerMapper.ANREDE, - AfmAntragstellerMapper.EMAIL, - AfmAntragstellerMapper.GEBURTSDATUM, - AfmAntragstellerMapper.GEBURTSNAME, - AfmAntragstellerMapper.GEBURTSORT, - AfmAntragstellerMapper.NACHNAME, - AfmAntragstellerMapper.VORNAME, - AfmAntragstellerMapper.TELEFON, - AfmAntragstellerMapper.STRASSE, - AfmAntragstellerMapper.HAUSNUMMER, - AfmAntragstellerMapper.ORT, - AfmAntragstellerMapper.PLZ); - } - - @Test - void shouldMoveNotMappedFieldsToDataMap() { - var parsedFormData = parseFormData(formData); - - assertThat(parsedFormData.getAntragsteller().getData()).containsEntry(NOT_MAPPED_FIELD, NOT_MAPPED_VALUE); - } - } - } - - @DisplayName("remove private fields") - @Nested - class TestRemovePrivateFields { - - @Test - void shouldRemoveAntragsteller() { - var parsedFormData = parseFormData(formData); - - assertThat(parsedFormData.getFormData().get(AfmAntragstellerMapper.ANTRAGSTELLER)).isNull(); - } - - @Test - @DisplayName("should remove Antragsteller when key starts with an uppercase latter") - void shouldRemoveAntragstellerUppercase() { - formData = FormData.builder().formData(AfmAntragstellerTestFactory.createFormDataMap(AfmAntragstellerMapper.ANTRAGSTELLER_UPPERCASE)) - .build(); - - var parsedFormData = parseFormData(formData); - - assertThat(parsedFormData.getFormData().get(AfmAntragstellerMapper.ANTRAGSTELLER_UPPERCASE)).isNull(); - } - - @Test - @DisplayName("should remove only 'antragsteller' key when both present") - void shouldRemoveOnlyOneKey() { - var parsedFormData = parseFormData(createFormData()); - - assertThat(parsedFormData.getFormData().get(AfmAntragstellerMapper.ANTRAGSTELLER_UPPERCASE)).isNotNull(); - } - - private FormData createFormData() { - var formDataMap = AfmAntragstellerTestFactory.createMutableFormDataMap(AfmAntragstellerMapper.ANTRAGSTELLER_UPPERCASE); - formDataMap.put(AfmAntragstellerMapper.ANTRAGSTELLER, AfmAntragstellerTestFactory.createPrivateAntragstelleMap()); - return FormData.builder().formData(formDataMap).build(); - } - } - } - - @Nested - class TestMapFirmAntragstellerData { - - @Test - void shouldMapFirmAntragstellerData() { - var parsedFormData = parseFormData(createFormData()); - - assertThat(parsedFormData.getAntragsteller()).usingRecursiveComparison() - .ignoringFields("data") - .isEqualTo(AfmAntragstellerTestFactory.createFirm()); - } - - private FormData createFormData() { - var formDataMap = AfmAntragstellerTestFactory.createFormDataMap(); - formDataMap.put(AfmAntragstellerMapper.ANTRAGSTELLER, AfmAntragstellerTestFactory.createFirmAntragstelleMap()); - return FormData.builder().formData(formDataMap).build(); - } - } - - private FormData parseFormData(FormData formData) { - return mapper.parseFormData(formData); - } -} diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerTestFactory.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerTestFactory.java deleted file mode 100644 index bcdf3985..00000000 --- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerTestFactory.java +++ /dev/null @@ -1,138 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.semantik.enginebased.afm; - -import java.util.Arrays; -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; -import java.util.UUID; - -import org.assertj.core.data.MapEntry; - -import de.ozgcloud.eingang.common.formdata.Antragsteller; - -public class AfmAntragstellerTestFactory { - - public static final String ANREDE = "Herr"; - public static final String FIRMA_NAME = "Firma X"; - public static final String VORNAME = "Max"; - public static final String NACHNAME = "Mustermann"; - public static final String GEBURTSNAME = "Maxi"; - public static final String GEBURTSDATUM = "01.01.1970"; - public static final String GEBURTSORT = "Sandhausen"; - public static final String EMAIL = "alsob@ne.ver"; - public static final String TELEFON = "+ 49 4621 9654"; - public static final String STRASSE = "Lachstrasse"; - public static final String HAUSNUMMER = "8484"; - public static final String PLZ = "12345"; - public static final String ORT = "Wohlfuehlhausen"; - - public static final String POSTFACH_ID = UUID.randomUUID().toString(); - - public static Antragsteller create() { - return createBuilder().build(); - } - - public static Antragsteller createFirm() { - return createBuilder() - .firmaName(FIRMA_NAME) - .geburtsname(null) - .geburtsdatum(null) - .geburtsort(null) - .build(); - } - - public static Antragsteller.AntragstellerBuilder createBuilder() { - return Antragsteller.builder() - .anrede(ANREDE) - .vorname(VORNAME) - .nachname(NACHNAME) - .geburtsname(GEBURTSNAME) - .geburtsdatum(GEBURTSDATUM) - .geburtsort(GEBURTSORT) - .email(EMAIL) - .telefon(TELEFON) - .strasse(STRASSE) - .hausnummer(HAUSNUMMER) - .plz(PLZ) - .ort(ORT) - .postfachId(POSTFACH_ID); - } - - public static Map<String, Object> createFormDataMap() { - return createFormDataMap(AfmAntragstellerMapper.ANTRAGSTELLER); - } - - public static Map<String, Object> createFormDataMap(String antragstellerKey) { - return createMutableFormDataMap(antragstellerKey); - } - - public static Map<String, Object> createMutableFormDataMap(String antragstellerKey) { - var map = new HashMap<String, Object>(); - map.put(antragstellerKey, createPrivateAntragstelleMap()); - map.put(AfmAntragstellerMapper.POSTFACH_ID, POSTFACH_ID); - return map; - } - - @SafeVarargs - public static Map<String, Object> createPrivateAntragstelleMap(MapEntry<String, Object>... additionalEntries) { - var map = new HashMap<String, Object>(); - map.put(AfmAntragstellerMapper.ANREDE, ANREDE); - map.put(AfmAntragstellerMapper.VORNAME, VORNAME); - map.put(AfmAntragstellerMapper.NACHNAME, NACHNAME); - map.put(AfmAntragstellerMapper.GEBURTSNAME, GEBURTSNAME); - map.put(AfmAntragstellerMapper.GEBURTSDATUM, GEBURTSDATUM); - map.put(AfmAntragstellerMapper.GEBURTSORT, GEBURTSORT); - map.put(AfmAntragstellerMapper.EMAIL, EMAIL); - map.put(AfmAntragstellerMapper.TELEFON, TELEFON); - map.put(AfmAntragstellerMapper.STRASSE, STRASSE); - map.put(AfmAntragstellerMapper.HAUSNUMMER, HAUSNUMMER); - map.put(AfmAntragstellerMapper.PLZ, PLZ); - map.put(AfmAntragstellerMapper.ORT, ORT); - - Arrays.stream(additionalEntries).forEach(entry -> map.put(entry.getKey(), entry.getValue())); - - return Collections.unmodifiableMap(map); - } - - @SafeVarargs - public static Map<String, Object> createFirmAntragstelleMap(MapEntry<String, Object>... additionalEntries) { - var map = new HashMap<String, Object>(); - map.put(AfmAntragstellerMapper.FIELD_FIRMA_NAME, FIRMA_NAME); - map.put(AfmAntragstellerMapper.FIELD_ANSPRECHPARTNER_ANREDE, ANREDE); - map.put(AfmAntragstellerMapper.FIELD_ANSPRECHPARTNER_VORNAME, VORNAME); - map.put(AfmAntragstellerMapper.FIELD_ANSPRECHPARTNER_NACHNAME, NACHNAME); - map.put(AfmAntragstellerMapper.EMAIL, EMAIL); - map.put(AfmAntragstellerMapper.TELEFON, TELEFON); - map.put(AfmAntragstellerMapper.FIELD_FIRMA_STRASSE, STRASSE); - map.put(AfmAntragstellerMapper.FIELD_FIRMA_HAUSNUMMER, HAUSNUMMER); - map.put(AfmAntragstellerMapper.FIELD_FIRMA_PLZ, PLZ); - map.put(AfmAntragstellerMapper.FIELD_FIRMA_STADT, ORT); - - Arrays.stream(additionalEntries).forEach(entry -> map.put(entry.getKey(), entry.getValue())); - - return Collections.unmodifiableMap(map); - } -} \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmEmpfangeneStelleMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmEmpfangeneStelleMapperTest.java deleted file mode 100644 index e2debc76..00000000 --- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmEmpfangeneStelleMapperTest.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.semantik.enginebased.afm; - -import static org.assertj.core.api.Assertions.*; - -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; - -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; - -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; -import de.ozgcloud.eingang.semantik.enginebased.afm.AfmEmpfangeneStelleMapper; -import de.ozgcloud.eingang.semantik.enginebased.afm.AfmEngineBasedMapper; - -class AfmEmpfangeneStelleMapperTest { - - @InjectMocks - private AfmEmpfangeneStelleMapper mapper; - - @Test - void shouldDoNothingIfNoEmpfangeneStelle() { - var formData = FormDataTestFactory.createBuilder().formData(Collections.emptyMap()).build(); - - var mapped = mapper.parseFormData(formData); - - assertThat(mapped).isEqualTo(formData); - } - - @Nested - class TestAddControlNode { - private FormData formData = FormDataTestFactory - .withFormDataMaps(Map.of(AfmEmpfangeneStelleMapper.EMPFANGENESTELLE, new HashMap<String, Object>())); - - @Test - void shouldAddControlNode() { - var mapped = mapper.parseFormData(formData); - - assertThat(getEmpfangeneStelle(mapped.getFormData())).containsKey(AfmEngineBasedMapper.KOP_CONTROLDATA_NODENAME); - } - - @SuppressWarnings("unchecked") - @Test - void shouldSetFlagToTrue() { - var mapped = mapper.parseFormData(formData); - - assertThat((Map<String, Object>) getEmpfangeneStelle(mapped.getFormData()) - .get(AfmEngineBasedMapper.KOP_CONTROLDATA_NODENAME)) - .containsEntry(AfmEngineBasedMapper.CONTROLDATA_METADATA_PROPERTYNAME, "true"); - } - - @SuppressWarnings("unchecked") - private Map<String, Object> getEmpfangeneStelle(Map<String, Object> formMap) { - return (Map<String, Object>) formMap.get(AfmEmpfangeneStelleMapper.EMPFANGENESTELLE); - } - } - -} diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmEngineBasedAdapterTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmEngineBasedAdapterTest.java deleted file mode 100644 index a99b6739..00000000 --- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmEngineBasedAdapterTest.java +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.semantik.enginebased.afm; - -import static org.assertj.core.api.Assertions.*; -import static org.mockito.Mockito.*; - -import java.util.Collections; -import java.util.Map; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.Spy; -import org.springframework.test.util.ReflectionTestUtils; - -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.FormHeader; -import de.ozgcloud.eingang.semantik.enginebased.afm.intelliform.IntelliFormRepresentationAdapter; - -class AfmEngineBasedAdapterTest { - - @Spy - @InjectMocks - private AfmEngineBasedAdapter adapter; - @Mock - private AfmEngineBasedMapper mapper; - - @Mock - private IntelliFormRepresentationAdapter intelliFormRepresentationAdapters; - - @DisplayName("Parse form data") - @Nested - class TestParseFromData { - private final String VORGANG_NUMMER = "AAAA-1234"; - - private final Map<String, Object> formDataMap = Map.of(AfmAntragstellerMapper.POSTFACH_ID, "postfachIdValue"); - private final FormData formData = FormData.builder() - .header(FormHeader.builder() - .vorgangNummer(VORGANG_NUMMER) - .build() - ) - .formData(formDataMap) - .build(); - - private final FormData processedFormData = FormData.builder() - .formData(formDataMap) - .build(); - - @BeforeEach - void mock() { - ReflectionTestUtils.setField(adapter, "mappers", Collections.singletonList(mapper)); - - when(mapper.parseFormData(processedFormData)).thenReturn(processedFormData); - when(intelliFormRepresentationAdapters.adaptByRepresentations(formData)).thenReturn(processedFormData); - } - - @Test - void shouldCallRepresentationAdapter() { - adapter.parseFormData(formData); - - verify(intelliFormRepresentationAdapters).adaptByRepresentations(formData); - } - - @Test - void shouldCallMappers() { - adapter.parseFormData(formData); - - verify(mapper).parseFormData(processedFormData); - } - - @Test - void shouldRemovePostfachId() { - var mappedFormData = adapter.parseFormData(formData); - - assertThat(mappedFormData.getFormData()).doesNotContainKey(AfmAntragstellerMapper.POSTFACH_ID); - } - - } - -} diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmErklaerungenMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmErklaerungenMapperTest.java deleted file mode 100644 index 88f90c2f..00000000 --- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmErklaerungenMapperTest.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.semantik.enginebased.afm; - -import static org.assertj.core.api.Assertions.*; - -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; - -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; - -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; -import de.ozgcloud.eingang.semantik.enginebased.afm.AfmEngineBasedMapper; -import de.ozgcloud.eingang.semantik.enginebased.afm.AfmErklaerungenMapper; - -class AfmErklaerungenMapperTest { - - @InjectMocks - private AfmErklaerungenMapper mapper; - - @Test - void shouldDoNothingIfNoEmpfangeneStelle() { - var formData = FormDataTestFactory.createBuilder().formData(Collections.emptyMap()).build(); - - var mapped = mapper.parseFormData(formData); - - assertThat(mapped).isEqualTo(formData); - } - - @Nested - class TestAddControlNode { - private FormData formData = FormDataTestFactory - .withFormDataMaps(Map.of(AfmErklaerungenMapper.ERKLAERUNGEN, new HashMap<String, Object>())); - - @Test - void shouldAddControlNode() { - var mapped = mapper.parseFormData(formData); - - assertThat(getErklaerungenStelle(mapped.getFormData())).containsKey(AfmEngineBasedMapper.KOP_CONTROLDATA_NODENAME); - } - - @SuppressWarnings("unchecked") - @Test - void shouldSetFlagToTrue() { - var mapped = mapper.parseFormData(formData); - - assertThat((Map<String, Object>) getErklaerungenStelle(mapped.getFormData()) - .get(AfmEngineBasedMapper.KOP_CONTROLDATA_NODENAME)) - .containsEntry(AfmEngineBasedMapper.CONTROLDATA_METADATA_PROPERTYNAME, "true"); - } - - @SuppressWarnings("unchecked") - private Map<String, Object> getErklaerungenStelle(Map<String, Object> formMap) { - return (Map<String, Object>) formMap.get(AfmErklaerungenMapper.ERKLAERUNGEN); - } - } - -} diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmFileCountMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmFileCountMapperTest.java deleted file mode 100644 index 7c63ef8e..00000000 --- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmFileCountMapperTest.java +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.semantik.enginebased.afm; - -import static org.assertj.core.api.Assertions.*; - -import java.util.List; - -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; -import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; -import de.ozgcloud.eingang.common.formdata.IncomingFileGroupTestFactory; -import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory; - -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Spy; - -class AfmFileCountMapperTest { - - @Spy - @InjectMocks - private AfmFileCountMapper mapper; - - private final IncomingFileGroup attachmentWithMultipleFiles = IncomingFileGroupTestFactory.createBuilder() - .name("anotherAttachment") - .clearFiles() - .files(List.of(IncomingFileTestFactory.create(), IncomingFileTestFactory.create())) - .build(); - - private final FormData formData = FormDataTestFactory.createBuilder() - .clearAttachments() - .attachments(List.of(IncomingFileGroupTestFactory.create(), attachmentWithMultipleFiles)) - .build(); - - @Nested - class TestParseFormData { - - @Test - void shouldKeepAttachments() { - var parsedFormData = parseFormData(); - - assertThat(parsedFormData.getAttachments()).hasSize(2); - assertThat(parsedFormData.getAttachments().get(0).getFiles()).hasSize(1); - assertThat(parsedFormData.getAttachments().get(1).getFiles()).hasSize(2); - } - - @Test - void shouldSetNumberOfAttachments() { - var parsedFormData = parseFormData(); - - assertThat(parsedFormData.getNumberOfAttachments()).isEqualTo(3); - } - - @Test - void shouldKeepRepresentations() { - var parsedFormData = parseFormData(); - - assertThat(parsedFormData.getRepresentations()).hasSize(1); - } - - @Test - void shouldSetNumberOfRepresentations() { - var parsedFormData = parseFormData(); - - assertThat(parsedFormData.getNumberOfRepresentations()).isEqualTo(1); - } - - private FormData parseFormData() { - return mapper.parseFormData(formData); - } - } -} diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmHeaderMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmHeaderMapperTest.java deleted file mode 100644 index 80a0e966..00000000 --- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmHeaderMapperTest.java +++ /dev/null @@ -1,199 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.semantik.enginebased.afm; - -import static org.assertj.core.api.Assertions.*; -import static org.mockito.ArgumentMatchers.*; -import static org.mockito.Mockito.*; - -import java.util.Optional; - -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.Spy; - -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.FormDataUtils; -import de.ozgcloud.eingang.common.formdata.ServiceKonto; -import de.ozgcloud.eingang.semantik.common.ServiceKontoFactory; - -class AfmHeaderMapperTest { - - @Spy - @InjectMocks - private AfmHeaderMapper mapper; - @Mock - private ServiceKontoFactory serviceKontoFactory; - - @DisplayName("Parse form data") - @Nested - class TestParseFormData { - - @DisplayName("map form header") - @Nested - class TestMapFormHeader { - - private static final FormData FORM_DATA = FormData.builder().formData(AfmHeaderTestFactory.createFormDataMap()).build(); - - @Test - void shouldKeepHeader() { - var parsedFormData = parseFormData(); - - assertThat(parsedFormData.getFormData().get(AfmHeaderMapper.HEADER_FIELD)).isNotNull(); - } - - @DisplayName("fields") - @Nested - class TestFields { - - @Test - void shouldMapRequestId() { - var parsedFormData = parseFormData(); - - assertThat(parsedFormData.getHeader().getRequestId()).isEqualTo(AfmHeaderTestFactory.ID); - } - - @Test - void shouldMapVorgangNummer() { - var parsedFormData = parseFormData(); - - assertThat(parsedFormData.getHeader().getVorgangNummer()).isEqualTo(AfmHeaderTestFactory.ID); - } - - @Test - void shouldMapCreatedAt() { - var parsedFormData = parseFormData(); - - assertThat(parsedFormData.getHeader().getCreatedAt()).isEqualTo(AfmHeaderTestFactory.TIMESTAMP); - } - - @Test - void shouldMapFormId() { - var parsedFormData = parseFormData(); - - assertThat(parsedFormData.getHeader().getFormId()).isEqualTo(AfmHeaderTestFactory.FORM_ID); - } - - @Test - void shouldMapFormName() { - var parsedFormData = parseFormData(); - - assertThat(parsedFormData.getHeader().getFormName()).isEqualTo(AfmHeaderTestFactory.FORM); - } - - @Test - void shouldMapSender() { - var parsedFormData = parseFormData(); - - assertThat(parsedFormData.getHeader().getSender()).isEqualTo(AfmHeaderTestFactory.SENDER); - } - - @Test - void shouldSetFormEngineName() { - var parsedFormData = parseFormData(); - - assertThat(parsedFormData.getHeader().getFormEngineName()).isEqualTo(AfmHeaderMapper.AFM_FORMENGINE_NAME); - } - - @DisplayName("service konto") - @Nested - class TestServiceKonto { - - @DisplayName("OSI") - @Nested - class TestOsiServiceKonto { - @Test - void shouldCallBuildServiceKontoIfPresent() { - parseFormData(); - - verify(serviceKontoFactory).buildOsiServiceKonto(any(), eq(FORM_DATA)); - } - - @Test - void shouldNotCallBuildServiceKontoIfNotExists() { - mapper.parseFormData(FormDataUtils.from(FORM_DATA).remove(AfmHeaderMapper.POSTFACH_NAME_ID).build()); - - verify(serviceKontoFactory, never()).buildOsiServiceKonto(any(), any()); - } - } - - @DisplayName("BayernID") - @Nested - class TestBayernId { - - @Mock - private FormData formData; - @Mock - private ServiceKonto serviceKonto; - - @Test - void shouldCallCreateBayernIdServiceKonto() { - var formData = FormData.builder().formData(AfmHeaderTestFactory.createFormDataMapWithExtendedHeaders()).build(); - - mapper.parseFormData(formData); - - verify(mapper).createBayernIdServiceKonto(formData); - } - - @Test - void shouldReturnServiceKonto() { - when(serviceKontoFactory.createBayernIdServiceKonto(any())).thenReturn(Optional.of(serviceKonto)); - - var parsedFormData = mapper.createBayernIdServiceKonto(formData); - - assertThat(parsedFormData).contains(serviceKonto); - } - - } - } - } - - private FormData parseFormData() { - return mapper.parseFormData(FORM_DATA); - } - } - - @DisplayName("remove mapped data") - @Nested - class TestRemoveMappedData { - - private final FormData formData = FormData.builder().formData(AfmHeaderTestFactory.createFormDataMap()).build(); - - @Test - void shouldRemoveRestResponseName() { - var parsedFormData = parseFormData(); - - assertThat(parsedFormData.getFormData().get(ServiceKontoFactory.REST_RESPONSE_NAME)).isNull(); - } - - private FormData parseFormData() { - return mapper.parseFormData(formData); - } - } - } - -} diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmHeaderTestFactory.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmHeaderTestFactory.java deleted file mode 100644 index ff8b85d5..00000000 --- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmHeaderTestFactory.java +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.semantik.enginebased.afm; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.UUID; - -import de.ozgcloud.eingang.semantik.common.ServiceKontoFactory; - -public class AfmHeaderTestFactory { - - public static final String ID = UUID.randomUUID().toString(); - public static final String TIMESTAMP = "2020-11-18T09:09:27.627Z"; - public static final String FORM_ID = "waffen/kleinerWaffenschein"; - public static final String FORM = "Kleiner Waffenschein gem. § 10 Abs. 4 Satz 4 Waffengesetz (WaffG)"; - public static final String SENDER = "afm.schleswig-holstein.de"; - - public static final String CUSTOM_POSTFACH_ID = "postfach_id"; - public static final String CUSTOM_VORNAME = "vorname"; - public static final String CUSTOM_NACHNAME = "nachname"; - public static final String CUSTOM_GEBURTSNAME = "Geburtsname"; - public static final String CUSTOM_GEBURTSORT = "geburtsort"; - public static final String CUSTOM_EMAIL = "email"; - public static final String CUSTOM_TELEFON = "telefon"; - public static final String CUSTOM_STRASSE = "strasse"; - public static final String CUSTOM_PLZ = "plz"; - public static final String CUSTOM_ORT = "ort"; - - public static final String POSTFACH_NAME_ID = "name-id-value"; - - public static final int REST_RESPONSE_NAME_MEMBER_SCOPE_MAILBOX_TYPE_VALUE = 1; - - public static Map<String, Object> createFormDataMap() { - var map = new HashMap<String, Object>(); - map.put(AfmHeaderMapper.HEADER_FIELD, createHeaderMap()); - map.put(AfmHeaderMapper.POSTFACH_NAME_ID, POSTFACH_NAME_ID); - map.put(ServiceKontoFactory.REST_RESPONSE_NAME, List.of(createRestResponseNameMap())); - - return map; - } - - @SuppressWarnings("unchecked") - public static Map<String, Object> createFormDataMapWithExtendedHeaders() { - var map = new HashMap<>(createFormDataMap()); - ((Map<String, Object>) map.get(AfmHeaderMapper.HEADER_FIELD)).putAll(createCustomHeaderMap()); - return map; - } - - public static Map<String, Object> createHeaderMap() { - var map = new HashMap<String, Object>(); - map.put(AfmHeaderMapper.ID, ID); - map.put(AfmHeaderMapper.TIMESTAMP, TIMESTAMP); - map.put(AfmHeaderMapper.FORM_ID, FORM_ID); - map.put(AfmHeaderMapper.FORM, FORM); - map.put(AfmHeaderMapper.SENDER, SENDER); - return map; - } - - public static Map<String, Object> createCustomHeaderMap() { - var map = new HashMap<String, Object>(); - map.put(ServiceKontoFactory.KEY_BAYERN_ID_POSTFACH_ID, CUSTOM_POSTFACH_ID); - map.put(AfmAntragstellerHeaderMapper.KEY_VORNAME, CUSTOM_VORNAME); - map.put(AfmAntragstellerHeaderMapper.KEY_NACHNAME, CUSTOM_NACHNAME); - map.put(AfmAntragstellerHeaderMapper.KEY_GEBURTSNAME, CUSTOM_GEBURTSNAME); - map.put(AfmAntragstellerHeaderMapper.KEY_GEBURTSORT, CUSTOM_GEBURTSORT); - map.put(AfmAntragstellerHeaderMapper.KEY_EMAIL, CUSTOM_EMAIL); - map.put(AfmAntragstellerHeaderMapper.KEY_TELEFON, CUSTOM_TELEFON); - map.put(AfmAntragstellerHeaderMapper.KEY_STRASSE, CUSTOM_STRASSE); - map.put(AfmAntragstellerHeaderMapper.KEY_PLZ, CUSTOM_PLZ); - map.put(AfmAntragstellerHeaderMapper.KEY_ORT, CUSTOM_ORT); - return map; - } - - public static Map<String, Object> createRestResponseNameMap() { - return Map.of(ServiceKontoFactory.REST_RESPONSE_NAME_MEMBER_SCOPE, List.of(createRestResponseNameMemberScopeMap())); - } - - private static Map<String, Object> createRestResponseNameMemberScopeMap() { - return Map.of(ServiceKontoFactory.REST_RESPONSE_NAME_MEMBER_SCOPE_MAILBOX_TYPE, REST_RESPONSE_NAME_MEMBER_SCOPE_MAILBOX_TYPE_VALUE); - } -} \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmZustaendigeStelleMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmZustaendigeStelleMapperTest.java deleted file mode 100644 index e9abbeff..00000000 --- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmZustaendigeStelleMapperTest.java +++ /dev/null @@ -1,194 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.semantik.enginebased.afm; - -import static org.assertj.core.api.Assertions.*; -import static org.mockito.Mockito.*; - -import java.util.HashMap; -import java.util.Map; - -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.Spy; - -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; -import de.ozgcloud.eingang.common.formdata.ZustaendigeStelle; - -class AfmZustaendigeStelleMapperTest { - - @InjectMocks - @Spy - private AfmZustaendigeStelleMapper mapper; - - @Mock - private ZustaendigeStelleMetadataMapper zustaendigeStelleMetadataMapper; - - @Nested - class TestParseFormData { - - @Test - void shouldDoNothingOnNullZustaendigeStelle() { - var formData = FormData.builder().formData(new HashMap<>()).build(); - - var parsedFormData = parseFormData(formData); - - assertThat(parsedFormData).isEqualTo(formData); - } - - @Nested - class TestMapZustaendigeStelle { - - private FormData formData = FormData.builder().formData(AfmZustaendigeStelleTestFactory.createFormDataMap()).build(); - private static final String BEZEICHNUNG = "Amt für Kleintier und Viezeug"; - - @Test - void shouldReturnFormDataOnNonExistingZustaendigeStelleAndOrganisationseinheitenId() { - var emptyFormData = FormData.builder().formData(new HashMap<String, Object>()).build(); - - var parsedFormData = parseZustaendigeStelleData(emptyFormData); - - assertThat(parsedFormData).isEqualTo(emptyFormData); - } - - @Test - void shouldMapOrganisationseinheitenId() { - var parsedFormData = parseZustaendigeStelleData(formData); - - assertThat(parsedFormData.getZustaendigeStelles()) - .extracting(ZustaendigeStelle::getOrganisationseinheitenId) - .containsExactly(AfmZustaendigeStelleTestFactory.ORGANISATIONSEINHEITEN_ID); - } - - @Test - void shouldMapBezeichnung() { - var parsedFormData = parseZustaendigeStelleData(formData); - - assertThat(parsedFormData.getZustaendigeStelles()) - .extracting(ZustaendigeStelle::getBezeichnung) - .containsExactly(BEZEICHNUNG); - } - - @Test - void shouldMapEmail() { - var parsedFormData = parseZustaendigeStelleData(formData); - - assertThat(parsedFormData.getZustaendigeStelles()) - .extracting(ZustaendigeStelle::getEmail) - .containsExactly(AfmZustaendigeStelleTestFactory.EMAIL); - } - - @Test - void shouldCallparseZustaendigeStelleData() { - parseFormData(formData); - - verify(mapper).parseZustaendigeStelleData(formData); - } - - @Test - void shouldCallParseBayernMetadata() { - when(zustaendigeStelleMetadataMapper.isResponsible(any())).thenReturn(true); - var expectedFormData = FormDataTestFactory.create(); - when(zustaendigeStelleMetadataMapper.parseZustaendigeStelleData(any())).thenReturn(expectedFormData); - - var resultFormData = parseFormData(formData); - - assertThat(resultFormData).isEqualTo(expectedFormData); - } - - private FormData parseZustaendigeStelleData(FormData formData) { - return mapper.parseZustaendigeStelleData(formData); - } - } - - @Nested - class TestAddMetaDataFlag { - - private FormData formData = FormDataTestFactory - .withFormDataMaps( - Map.of(FormDataTestFactory.NESTED_LIST_WITH_OBJECTS_KEY, FormDataTestFactory.NESTED_LIST_OBJECTS_ELEMENT_1), - AfmZustaendigeStelleTestFactory.createFormDataMap()); - - @Test - void shouldCallAddFlag() { - parseFormData(formData); - - verify(mapper).addMetaDataFlag(formData); - } - - @Test - void shouldHaveControlNode() { - var edited = mapper.addMetaDataFlag(formData); - - assertThat(getZustaendigeStelle(edited)).containsKey(AfmEngineBasedMapper.KOP_CONTROLDATA_NODENAME); - } - - @SuppressWarnings("unchecked") - @Test - void shouldSetFlagToTrue() { - var edited = mapper.addMetaDataFlag(formData); - - assertThat((Map<String, Object>) getZustaendigeStelle(edited).get(AfmEngineBasedMapper.KOP_CONTROLDATA_NODENAME)) - .containsEntry(AfmEngineBasedMapper.CONTROLDATA_METADATA_PROPERTYNAME, "true"); - } - - @Test - void shouldDoNothingIfNoZustaendigeStelle() { - var formDataMap = AfmZustaendigeStelleTestFactory.createFormDataMap(); - formDataMap.remove(AfmZustaendigeStelleMapper.ZUSTAENDIGESTELLE); - var formData = FormDataTestFactory.createBuilder().formData(formDataMap).build(); - - var edited = mapper.addMetaDataFlag(formData); - - assertThat(edited).doesNotContainKey(AfmZustaendigeStelleMapper.ZUSTAENDIGESTELLE); - } - - @SuppressWarnings("unchecked") - @Test - void shouldAddNoControlDataMapToOtherNodes() { - var edited = mapper.addMetaDataFlag(formData); - - edited.entrySet().stream() - .filter(entry -> entry.getKey() != AfmZustaendigeStelleMapper.ZUSTAENDIGESTELLE) - .filter(entry -> entry.getValue() instanceof Map) - .forEach(entry -> assertThat((Map<String, ?>) entry.getValue()) - .doesNotContainKey(AfmEngineBasedMapper.KOP_CONTROLDATA_NODENAME)); - } - - private Map<String, Object> getZustaendigeStelle(Map<String, Object> formDataMap) { - @SuppressWarnings("unchecked") - var zustaendigeStelle = (Map<String, Object>) formDataMap.get(AfmZustaendigeStelleMapper.ZUSTAENDIGESTELLE); - assertThat(zustaendigeStelle).isNotNull(); - return zustaendigeStelle; - } - } - - private FormData parseFormData(FormData formData) { - return mapper.parseFormData(formData); - } - } -} \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmZustaendigeStelleTestFactory.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmZustaendigeStelleTestFactory.java deleted file mode 100644 index f629a1f2..00000000 --- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmZustaendigeStelleTestFactory.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.semantik.enginebased.afm; - -import java.util.HashMap; -import java.util.Map; -import java.util.UUID; - -import de.ozgcloud.eingang.semantik.enginebased.afm.AfmZustaendigeStelleMapper; - -public class AfmZustaendigeStelleTestFactory { - - public static final String ORGANISATIONSEINHEITEN_ID = UUID.randomUUID().toString(); - public static final String EMAIL = UUID.randomUUID().toString(); - private static final String BEZEICHNUNG = "Amt für Kleintier und Viezeug"; - - public static Map<String, Object> createFormDataMap() { - Map<String, Object> map = new HashMap<>(); - map.put(AfmZustaendigeStelleMapper.ZUSTAENDIGESTELLE, createZustaendigeStelleMap()); - return map; - } - - public static Map<String, Object> createZustaendigeStelleMap() { - Map<String, Object> map = new HashMap<>(); - map.put(AfmZustaendigeStelleMapper.ORGANISATIONSEINHEITEN_ID, ORGANISATIONSEINHEITEN_ID); - map.put(AfmZustaendigeStelleMapper.TAG_BEZEICHNUNG, BEZEICHNUNG); - map.put(AfmZustaendigeStelleMapper.EMAIL, EMAIL); - return map; - } -} diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleDataTestFactory.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleDataTestFactory.java deleted file mode 100644 index b7d82d62..00000000 --- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleDataTestFactory.java +++ /dev/null @@ -1,62 +0,0 @@ -package de.ozgcloud.eingang.semantik.enginebased.afm; - -import static de.ozgcloud.eingang.semantik.enginebased.afm.ZustaendigeStelleMetadataMapper.*; - -import java.util.List; -import java.util.Map; - -import de.ozgcloud.eingang.semantik.enginebased.afm.ZustaendigeStelleData.ZustaendigeStelleDataBuilder; - -public class ZustaendigeStelleDataTestFactory { - public static final String BEHOERDE_ANZEIGE_NAME = "Landratsamt XYZ (Testbehörde für BDA)"; - public static final String BEHOERDE_CALLER_ID = "87331322433"; - public static final String GEMEINDE_SCHLUESSEL_BP = "09189155"; - public static final String BEHOERDE_EMAIL = "poststelle@testbehoerde.bayern"; - public static final String AMTLICHER_REGIONALSCHLUESSEL = "091890000000"; - public static final String BEHOERDE_HAUSANSCHRIFT_STRASSE = "Teststraße 1"; - public static final String BEHOERDE_HAUSANSCHRIFT_ORT = "Musterstadt"; - public static final String BEHOERDE_HAUSANSCHRIFT_PLZ = "12345"; - public static final String BEHOERDE_TELEFON = "+49 123 45-0"; - - public static final Map<String, String> BEHOERDE_METADATA = Map.of( - KEY_BEHOERDE_ANZEIGE_NAME, BEHOERDE_ANZEIGE_NAME, - KEY_BEHOERDE_CALLER_ID, BEHOERDE_CALLER_ID, - KEY_GEMEINDE_SCHLUESSEL_BP, GEMEINDE_SCHLUESSEL_BP, - KEY_BEHOERDE_EMAIL, BEHOERDE_EMAIL, - KEY_AMTLICHER_REGIONALSCHLUESSEL, AMTLICHER_REGIONALSCHLUESSEL, - KEY_BEHOERDE_HAUSANSCHRIFT_STRASSE, BEHOERDE_HAUSANSCHRIFT_STRASSE, - KEY_BEHOERDE_HAUSANSCHRIFT_ORT, BEHOERDE_HAUSANSCHRIFT_ORT, - KEY_BEHOERDE_HAUSANSCHRIFT_PLZ, BEHOERDE_HAUSANSCHRIFT_PLZ, - KEY_BEHOERDE_TELEFON, BEHOERDE_TELEFON - ); - - public static final List<ZustaendigeStelleData.Field> ZUSTAENDIGE_STELLE_DATA_FIELDS = List.of( - ZustaendigeStelleMetadataFieldTestFactory.createBuilder().name(KEY_BEHOERDE_ANZEIGE_NAME) - .value(ZustaendigeStelleDataTestFactory.BEHOERDE_ANZEIGE_NAME).build(), - ZustaendigeStelleMetadataFieldTestFactory.createBuilder().name(KEY_BEHOERDE_CALLER_ID) - .value(ZustaendigeStelleDataTestFactory.BEHOERDE_CALLER_ID).build(), - ZustaendigeStelleMetadataFieldTestFactory.createBuilder().name(KEY_GEMEINDE_SCHLUESSEL_BP) - .value(ZustaendigeStelleDataTestFactory.GEMEINDE_SCHLUESSEL_BP).build(), - ZustaendigeStelleMetadataFieldTestFactory.createBuilder().name(KEY_BEHOERDE_EMAIL).value(ZustaendigeStelleDataTestFactory.BEHOERDE_EMAIL) - .build(), - ZustaendigeStelleMetadataFieldTestFactory.createBuilder().name(KEY_AMTLICHER_REGIONALSCHLUESSEL) - .value(ZustaendigeStelleDataTestFactory.AMTLICHER_REGIONALSCHLUESSEL).build(), - ZustaendigeStelleMetadataFieldTestFactory.createBuilder().name(KEY_BEHOERDE_HAUSANSCHRIFT_STRASSE) - .value(ZustaendigeStelleDataTestFactory.BEHOERDE_HAUSANSCHRIFT_STRASSE).build(), - ZustaendigeStelleMetadataFieldTestFactory.createBuilder().name(KEY_BEHOERDE_HAUSANSCHRIFT_ORT) - .value(ZustaendigeStelleDataTestFactory.BEHOERDE_HAUSANSCHRIFT_ORT).build(), - ZustaendigeStelleMetadataFieldTestFactory.createBuilder().name(KEY_BEHOERDE_HAUSANSCHRIFT_PLZ) - .value(ZustaendigeStelleDataTestFactory.BEHOERDE_HAUSANSCHRIFT_PLZ).build(), - ZustaendigeStelleMetadataFieldTestFactory.createBuilder().name(KEY_BEHOERDE_TELEFON).value(ZustaendigeStelleDataTestFactory.BEHOERDE_TELEFON) - .build() - ); - - public static ZustaendigeStelleData create() { - return createBuilder().build(); - } - - public static ZustaendigeStelleDataBuilder createBuilder() { - return ZustaendigeStelleData.builder() - .fields(ZUSTAENDIGE_STELLE_DATA_FIELDS); - } -} diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleMetadataFieldTestFactory.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleMetadataFieldTestFactory.java deleted file mode 100644 index 2508c76d..00000000 --- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleMetadataFieldTestFactory.java +++ /dev/null @@ -1,20 +0,0 @@ -package de.ozgcloud.eingang.semantik.enginebased.afm; - -import de.ozgcloud.eingang.semantik.enginebased.afm.ZustaendigeStelleData.Field; -import de.ozgcloud.eingang.semantik.enginebased.afm.ZustaendigeStelleData.Field.FieldBuilder; - -public class ZustaendigeStelleMetadataFieldTestFactory { - - public static final String FIELD_NAME = "name"; - public static final String FIELD_VALUE = "value"; - - public static Field create() { - return createBuilder().build(); - } - - public static FieldBuilder createBuilder() { - return Field.builder() - .name(FIELD_NAME) - .value(FIELD_VALUE); - } -} diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleMetadataMapperITCase.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleMetadataMapperITCase.java deleted file mode 100644 index 7de876ff..00000000 --- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleMetadataMapperITCase.java +++ /dev/null @@ -1,50 +0,0 @@ -package de.ozgcloud.eingang.semantik.enginebased.afm; - -import static de.ozgcloud.eingang.semantik.enginebased.afm.ZustaendigeStelleMetadataMapper.*; -import static org.assertj.core.api.Assertions.*; - -import java.io.File; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; - -import de.ozgcloud.common.test.ITCase; -import de.ozgcloud.common.test.TestUtils; -import de.ozgcloud.eingang.common.formdata.IncomingFile; -import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory; -import lombok.SneakyThrows; - -@ITCase -class ZustaendigeStelleMetadataMapperITCase { - - @Autowired - private ZustaendigeStelleMetadataMapper mapper; - - private IncomingFile behoerdeMetadataXml; - - @SneakyThrows - @BeforeEach - void setUp() { - behoerdeMetadataXml = IncomingFileTestFactory.createBuilder() - .name(ZustaendigeStelleMetadataMapper.BEHOERDE_METADATA_FILE_NAME) - .file(new File(TestUtils.class.getClassLoader().getResource(BEHOERDE_METADATA_FILE_NAME).toURI())).build(); - - } - - @Test - void shouldReadXmlNodes() { - var metadata = mapper.readXmlContent(behoerdeMetadataXml); - - assertThat(metadata).get().extracting("fields").asList().usingRecursiveFieldByFieldElementComparator() - .containsAll(ZustaendigeStelleDataTestFactory.ZUSTAENDIGE_STELLE_DATA_FIELDS); - } - - @SneakyThrows - @Test - void shouldCatchException() { - var zustaendigeStelleData = mapper.readXmlContent(IncomingFileTestFactory.createBuilder().file(new File("broken-file")).build()); - - assertThat(zustaendigeStelleData).isEmpty(); - } -} \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleMetadataMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleMetadataMapperTest.java deleted file mode 100644 index 56058ec1..00000000 --- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleMetadataMapperTest.java +++ /dev/null @@ -1,171 +0,0 @@ -package de.ozgcloud.eingang.semantik.enginebased.afm; - -import static org.assertj.core.api.Assertions.*; -import static org.mockito.Mockito.*; - -import java.io.File; -import java.util.Map; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.Spy; - -import com.fasterxml.jackson.dataformat.xml.XmlMapper; - -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; -import de.ozgcloud.eingang.common.formdata.IncomingFile; -import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory; -import de.ozgcloud.eingang.common.formdata.ZustaendigeStelle; -import de.ozgcloud.eingang.common.formdata.ZustaendigeStelleTestFactory; -import lombok.SneakyThrows; - -class ZustaendigeStelleMetadataMapperTest { - - @Spy - @InjectMocks - private ZustaendigeStelleMetadataMapper mapper; - - @Mock - private XmlMapper xmlMapper; - - @Nested - class TestParseBehoerdeMetadata { - - private IncomingFile behoerdeMetadataFile; - - private FormData formData; - - @BeforeEach - void setUp() { - behoerdeMetadataFile = IncomingFileTestFactory.createBuilder().name(ZustaendigeStelleMetadataMapper.BEHOERDE_METADATA_FILE_NAME) - .build(); - formData = FormDataTestFactory.createBuilder() - .clearZustaendigeStelles() - .representation(behoerdeMetadataFile).build(); - } - - @SneakyThrows - @Test - void shouldCallReadBehoerdeMetadata() { - doReturn(ZustaendigeStelleDataTestFactory.BEHOERDE_METADATA).when(mapper).readZustaendigeStelleMetadata(behoerdeMetadataFile); - - mapper.parseZustaendigeStelleData(formData); - - verify(mapper).readZustaendigeStelleMetadata(behoerdeMetadataFile); - } - - @Test - void shouldCallMapZustaendigeStelle() { - var behoerdeMetadata = Map.of("key", "value"); - doReturn(behoerdeMetadata).when(mapper).readZustaendigeStelleMetadata(behoerdeMetadataFile); - - mapper.parseZustaendigeStelleData(formData); - - verify(mapper).mapZustaendigeStelle(behoerdeMetadata); - } - - @Test - void shouldSetParsedZustaendigeStelle() { - doReturn(Map.of("key", "value")).when(mapper).readZustaendigeStelleMetadata(any()); - var zustaendigeStelle = ZustaendigeStelleTestFactory.create(); - doReturn(zustaendigeStelle).when(mapper).mapZustaendigeStelle(any()); - - var result = mapper.parseZustaendigeStelleData(formData); - - assertThat(result.getZustaendigeStelles()).containsExactly(zustaendigeStelle); - } - } - - @Nested - class TestReadBehoerdeMetadata { - - private File brokenFile; - - } - - @Nested - class TestMapZuestaendigeStelle { - - @Test - void shouldSetBezeichnung() { - var zustaendigeStelle = mapZustaendigeStelle(); - - assertThat(zustaendigeStelle.getBezeichnung()).isEqualTo(ZustaendigeStelleDataTestFactory.BEHOERDE_ANZEIGE_NAME); - } - - @Test - void shouldSetOrganisationEinheitId() { - var zustaendigeStelle = mapZustaendigeStelle(); - - assertThat(zustaendigeStelle.getOrganisationseinheitenId()).isEqualTo(ZustaendigeStelleDataTestFactory.BEHOERDE_CALLER_ID); - } - - @Test - void shouldSetGemeindeSchluessel() { - var zustaendigeStelle = mapZustaendigeStelle(); - - assertThat(zustaendigeStelle.getGemeindeSchluessel()).isEqualTo(ZustaendigeStelleDataTestFactory.GEMEINDE_SCHLUESSEL_BP); - } - - @Test - void shouldSetEmail() { - var zustaendigeStelle = mapZustaendigeStelle(); - - assertThat(zustaendigeStelle.getEmail()).isEqualTo(ZustaendigeStelleDataTestFactory.BEHOERDE_EMAIL); - } - - @Test - void shouldSetAmtlicherRegionalSchluessel() { - var zustaendigeStelle = mapZustaendigeStelle(); - - assertThat(zustaendigeStelle.getAmtlicherRegionalSchluessel()).isEqualTo(ZustaendigeStelleDataTestFactory.AMTLICHER_REGIONALSCHLUESSEL); - } - - @Test - void shouldSetHausanschriftStrasse() { - var zustaendigeStelle = mapZustaendigeStelle(); - - assertThat(zustaendigeStelle.getHausanschriftStrasse()).isEqualTo(ZustaendigeStelleDataTestFactory.BEHOERDE_HAUSANSCHRIFT_STRASSE); - } - - @Test - void shouldSetHausanschriftOrt() { - var zusatendigeStelle = mapZustaendigeStelle(); - - assertThat(zusatendigeStelle.getHausanschriftOrt()).isEqualTo(ZustaendigeStelleDataTestFactory.BEHOERDE_HAUSANSCHRIFT_ORT); - } - - @Test - void shouldSetHausanschriftPlz() { - var zustaendigeStelle = mapZustaendigeStelle(); - - assertThat(zustaendigeStelle.getHausanschriftPlz()).isEqualTo(ZustaendigeStelleDataTestFactory.BEHOERDE_HAUSANSCHRIFT_PLZ); - } - - @Test - void shouldSetTelefon() { - var zusatendigeStelle = mapZustaendigeStelle(); - - assertThat(zusatendigeStelle.getTelefon()).isEqualTo(ZustaendigeStelleDataTestFactory.BEHOERDE_TELEFON); - } - - private ZustaendigeStelle mapZustaendigeStelle() { - return mapper.mapZustaendigeStelle(ZustaendigeStelleDataTestFactory.BEHOERDE_METADATA); - } - } - - @Test - void shouldApproveResponsibility() { - var formData = FormDataTestFactory.createBuilder() - .representation(IncomingFileTestFactory.createBuilder().name(ZustaendigeStelleMetadataMapper.BEHOERDE_METADATA_FILE_NAME) - .build()).build(); - - var isResponsible = mapper.isResponsible(formData); - - assertThat(isResponsible).isTrue(); - } -} \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/intelliform/IntelliFormRepresentationAdapterTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/intelliform/IntelliFormRepresentationAdapterTest.java deleted file mode 100644 index 27be6b86..00000000 --- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/intelliform/IntelliFormRepresentationAdapterTest.java +++ /dev/null @@ -1,456 +0,0 @@ -package de.ozgcloud.eingang.semantik.enginebased.afm.intelliform; - -import static de.ozgcloud.eingang.semantik.enginebased.afm.intelliform.IntelliFormRepresentationAdapter.*; -import static org.assertj.core.api.Assertions.*; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.Mockito.*; - -import java.io.IOException; -import java.io.InputStream; -import java.io.StringReader; -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.Optional; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.ParserConfigurationException; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.Arguments; -import org.junit.jupiter.params.provider.MethodSource; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.Spy; -import org.w3c.dom.Document; -import org.xml.sax.InputSource; -import org.xml.sax.SAXException; - -import com.thedeanda.lorem.LoremIpsum; - -import de.ozgcloud.eingang.common.errorhandling.TechnicalException; -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.IncomingFile; -import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; -import de.ozgcloud.eingang.common.formdata.IncomingFileGroupTestFactory; -import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory; - -class IntelliFormRepresentationAdapterTest { - - private static final String DOCUMENT_TEST_KEY = "doc-test-key"; - private static final String DOCUMENT_TEST_VALUE = "doc-test-value"; - - @Spy - @InjectMocks - IntelliFormRepresentationAdapter adapter; - - @Mock - private XmlToJavaMapsMapper xmlToJavaMapsMapper; - - @DisplayName("find IntelliForm XML representation") - @Nested - class TestFindIntelliFormXmlRepresentation { - - @Mock - private FormData formData; - - @DisplayName("should find first with IntelliForm schema") - @Test - void shouldFindFirstWithIntelliFormSchema() { - var schemas = Stream.of( - "<root xmlns=\"%s\" />".formatted(INTELLIFORM_TYPENAME), - "<root xmlns:t=\"unknown\">first</root>", - "<root>second</root>", - "<root xmlns:t=\"%s\">third</root>".formatted(INTELLIFORM_TYPENAME), - "<root xmlns:t=\"%s\">fourth</root>".formatted(INTELLIFORM_TYPENAME) - ).map(IntelliFormRepresentationAdapterTest.this::buildXMLDocument); - doReturn(schemas).when(adapter).streamXMLDocumentsFromRepresentations(formData); - - var firstWithSchema = adapter.findIntelliFormXMLRepresentation(formData); - - assertThat(firstWithSchema).isPresent(); - var rootElement = firstWithSchema.get().getDocumentElement(); - assertThat(rootElement.getTextContent()).isEqualTo("third"); - } - } - - @DisplayName("stream XML documents from representations") - @Nested - class TestStreamXmlDocumentsFromRepresentations { - - @Mock - private Document document; - - @Mock - private FormData formData; - - @Mock - private InputStream inputStream; - - @DisplayName("with no representations") - @Nested - class TestWithNoRepresentations { - @BeforeEach - void mock() { - when(formData.getRepresentations()).thenReturn(Collections.emptyList()); - } - - @DisplayName("should return empty") - @Test - void shouldReturnEmpty() { - var documents = doExtract(); - - assertThat(documents).isEmpty(); - } - } - - @DisplayName("with a xml representation") - @Nested - class TestWithAXMLRepresentations { - @Mock - private IncomingFile otherRepresentation; - - @Mock - private IncomingFile xmlRepresentation; - - @Mock - private IncomingFile otherXMLRepresentation; - - @Mock - private Document otherDocument; - - @Mock - private InputStream otherInputStream; - - @BeforeEach - void mock() { - when(otherRepresentation.getContentType()).thenReturn("pdf"); - when(xmlRepresentation.getContentType()).thenReturn("xml"); - when(otherXMLRepresentation.getContentType()).thenReturn("xml"); - when(formData.getRepresentations()).thenReturn(List.of(otherRepresentation, xmlRepresentation, otherXMLRepresentation)); - - when(xmlRepresentation.getContentStream()).thenReturn(inputStream); - when(xmlToJavaMapsMapper.parseAsW3cDocument(inputStream)).thenReturn(document); - - when(otherXMLRepresentation.getContentStream()).thenReturn(otherInputStream); - - } - - @DisplayName("should include all successfully parsed documents") - @Test - void shouldIncludeAllSuccessfullyParsedDocuments() { - when(xmlToJavaMapsMapper.parseAsW3cDocument(otherInputStream)).thenReturn(otherDocument); - - var documents = doExtract(); - - assertThat(documents).isEqualTo(List.of(document, otherDocument)); - } - - @DisplayName("should skip documents with parse error") - @Test - void shouldSkipDocumentsWithParseError() { - when(xmlToJavaMapsMapper.parseAsW3cDocument(otherInputStream)).thenThrow(new TechnicalException("some error")); - - var documents = doExtract(); - - assertThat(documents).isEqualTo(List.of(document)); - } - } - - private List<Document> doExtract() { - return adapter.streamXMLDocumentsFromRepresentations(formData).toList(); - } - } - - @DisplayName("is responsible") - @Nested - class TestIsResponsible { - - @Mock - private FormData formData; - - @DisplayName("should be true with namespace attribute match") - @Test - void shouldBeTrueWithNamespaceAttributeMatch() { - - doReturn(Optional.of(buildXMLDocument(""" - <myForm xmlns:t="%s"> - </myForm>""".formatted(INTELLIFORM_TYPENAME)))) - .when(adapter).findIntelliFormXMLRepresentation(formData); - - var isResponsible = adapter.isResponsible(formData); - - assertThat(isResponsible).isTrue(); - } - - @DisplayName("should be false without xml document") - @Test - void shouldBeFalseWithoutXmlDocument() { - doReturn(Optional.empty()) - .when(adapter).findIntelliFormXMLRepresentation(formData); - - var isResponsible = adapter.isResponsible(formData); - - assertThat(isResponsible).isFalse(); - } - - } - - @DisplayName("get form data entries from document") - @Nested - class TestGetFormDataEntriesFromDocument { - - private static final String OTHER_VENDOR_ID = "vendorId:other"; - private static final String MISSING_VENDOR_ID = "vendorId:missing"; - - @Mock - private Document document; - - private List<IncomingFileGroup> attachments; - - @BeforeEach - void mock() { - when(xmlToJavaMapsMapper.mapXmlToJavaMaps(document)).thenReturn(Map.of( - DOCUMENT_TEST_KEY, DOCUMENT_TEST_VALUE, - "Upload1", Map.of( - "file", Map.of("id", IncomingFileGroupTestFactory.VENDOR_ID_XXX) - ), - "Upload2", Map.of( - "file", Map.of("id", OTHER_VENDOR_ID) - ), - "Upload3", Map.of( - "file", Map.of("id", "representationId") - ), - "NoUpload1", Map.of( - "file", "" - ), - "NoUpload2", Map.of() - )); - attachments = List.of( - IncomingFileGroupTestFactory.create(), - IncomingFileGroupTestFactory.createBuilder() - .name("other") - .files(List.of( - IncomingFileTestFactory.createBuilder() - .vendorId(MISSING_VENDOR_ID) - .build(), - IncomingFileTestFactory.createBuilder() - .vendorId(OTHER_VENDOR_ID) - .build())) - .build()); - - } - - @DisplayName("should prune upload element if is an attachment") - @Test - void shouldPruneUploadElementIfIsAnAttachment() { - var entryKeys = obtainResidualEntryKeys(); - - assertThat(entryKeys).containsExactlyInAnyOrder(DOCUMENT_TEST_KEY, "Upload3", "NoUpload1", "NoUpload2"); - } - - private List<String> obtainResidualEntryKeys() { - return adapter.getFormDataEntriesFromDocument(document, attachments).map(Map.Entry::getKey).toList(); - } - } - - @DisplayName("create header map") - @Nested - class TestCreateHeaderMap { - - private Document document; - - @DisplayName("with full fields") - @Nested - class TestWithFullFields { - - private Map<String, Object> headerMap; - - @BeforeEach - void mock() { - headerMap = Stream.concat(HEADER_ATTRIBUTE_NAMES.stream(), CUSTOM_HEADER_ATTRIBUTE_NAMES.stream()) - .collect(Collectors.toMap(name -> name, name -> LoremIpsum.getInstance().getName())); - document = buildXMLDocument("<root %s/>".formatted( - headerMap.entrySet().stream() - .map(entry -> "%s=\"%s\"".formatted(entry.getKey(), entry.getValue())) - .collect(Collectors.joining(" ")) - ) - ); - } - - @DisplayName("should include header field") - @ParameterizedTest - @MethodSource("headerNames") - void shouldIncludeAllHeaderField(String headerName) { - var resultHeaderMap = adapter.createHeaderMap(document); - - assertThat(resultHeaderMap).containsEntry(headerName, headerMap.get(headerName)); - } - - private static Stream<Arguments> headerNames() { - return HEADER_ATTRIBUTE_NAMES.stream().map(Arguments::of); - } - - @DisplayName("should include custom header field") - @ParameterizedTest - @MethodSource("customHeaderNames") - void shouldIncludeAllCustomHeaderField(String headerName) { - var resultHeaderMap = adapter.createHeaderMap(document); - - assertThat(resultHeaderMap).containsEntry(headerName, headerMap.get(headerName)); - } - - private static Stream<Arguments> customHeaderNames() { - return CUSTOM_HEADER_ATTRIBUTE_NAMES.stream().map(Arguments::of); - } - } - - @DisplayName("with empty fields") - @Nested - class TestWithEmptyFields { - @BeforeEach - void mock() { - document = buildXMLDocument("<root />"); - } - - @DisplayName("should include empty header field") - @ParameterizedTest - @MethodSource("headerNames") - void shouldIncludeAllHeaderField(String headerName) { - var resultHeaderMap = adapter.createHeaderMap(document); - - assertThat(resultHeaderMap).containsEntry(headerName, ""); - } - - private static Stream<Arguments> headerNames() { - return HEADER_ATTRIBUTE_NAMES.stream().map(Arguments::of); - } - - @DisplayName("should not include custom header field") - @ParameterizedTest - @MethodSource("customHeaderNames") - void shouldNotIncludeAllCustomHeaderField(String headerName) { - var resultHeaderMap = adapter.createHeaderMap(document); - - assertThat(resultHeaderMap).doesNotContainKey(headerName); - } - - private static Stream<Arguments> customHeaderNames() { - return CUSTOM_HEADER_ATTRIBUTE_NAMES.stream().map(Arguments::of); - } - } - } - - @DisplayName("adapt by representation") - @Nested - class TestAdaptByRepresentation { - - @Mock - private FormData formData; - - @DisplayName("should throw exception without xml document") - @Test - void shouldThrowExceptionWithoutXmlDocument() { - doReturn(Optional.empty()) - .when(adapter).findIntelliFormXMLRepresentation(formData); - - assertThrows(TechnicalException.class, () -> - adapter.adaptByRepresentations(formData) - ); - } - - @DisplayName("with xml document") - @Nested - class TestWithXmlDocument { - - @Mock - private IncomingFileGroup attachmentGroup; - - @Mock - private IncomingFile xmlRepresentation; - - @Mock - private IncomingFile otherRepresentation; - - @Mock - private Document document; - - @Mock - private Map<String, Object> headerFields; - - private List<IncomingFileGroup> attachments; - private List<IncomingFile> representations; - - @BeforeEach - void mock() { - attachments = List.of(attachmentGroup); - representations = List.of(xmlRepresentation, otherRepresentation); - - when(formData.getRepresentations()).thenReturn(representations); - when(formData.getAttachments()).thenReturn(attachments); - doReturn(Optional.of(document)).when(adapter).findIntelliFormXMLRepresentation(formData); - - doReturn(Map.of(DOCUMENT_TEST_KEY, DOCUMENT_TEST_VALUE).entrySet().stream()) - .when(adapter).getFormDataEntriesFromDocument(document, attachments); - - doReturn(headerFields) - .when(adapter).createHeaderMap(document); - } - - @DisplayName("should have document field") - @Test - void shouldHaveDocumentField() { - var documentValue = obtainMappingByKey(DOCUMENT_TEST_KEY); - - assertThat(documentValue).isEqualTo(DOCUMENT_TEST_VALUE); - } - - @DisplayName("should have header field") - @Test - void shouldHaveHeaderField() { - var headerValue = obtainMappingByKey(HEADER_FIELD); - - assertThat(headerValue).isEqualTo(headerFields); - } - - private Object obtainMappingByKey(String key) { - var formDataResult = adapter.adaptByRepresentations(formData); - - return formDataResult.getFormData().get(key); - } - - @DisplayName("should have attachments") - @Test - void shouldHaveAttachments() { - var formDataResult = adapter.adaptByRepresentations(formData); - - assertThat(formDataResult.getAttachments()).isEqualTo(attachments); - } - - @DisplayName("should have representations") - @Test - void shouldHaveRepresentations() { - var formDataResult = adapter.adaptByRepresentations(formData); - - assertThat(formDataResult.getRepresentations()).isEqualTo(representations); - } - } - } - - private Document buildXMLDocument(String xmlString) { - try { - return DocumentBuilderFactory.newInstance() - .newDocumentBuilder() - .parse(new InputSource(new StringReader(xmlString))); - } catch (ParserConfigurationException | IOException | SAXException e) { - throw new RuntimeException(e); - } - } - -} diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/intelliform/JsonServiceTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/intelliform/JsonServiceTest.java deleted file mode 100644 index c9212b4d..00000000 --- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/intelliform/JsonServiceTest.java +++ /dev/null @@ -1,99 +0,0 @@ -package de.ozgcloud.eingang.semantik.enginebased.afm.intelliform; - -import static org.assertj.core.api.Assertions.*; -import static org.mockito.ArgumentMatchers.*; -import static org.mockito.Mockito.*; - -import java.util.Collections; -import java.util.List; -import java.util.Map; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.Mockito; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; - -import de.ozgcloud.common.errorhandling.TechnicalException; -import de.ozgcloud.eingang.semantik.enginebased.afm.intelliform.JsonService; -import lombok.SneakyThrows; - -class JsonServiceTest { - - @InjectMocks - private JsonService service; - @Mock - private ObjectMapper objectMapper; - - @DisplayName("Map form data") - @Nested - class TestMapFormData { - - @DisplayName("with invalid json") - @Nested - class TestWithInvalidJson { - - @SneakyThrows - @BeforeEach - void mockNode() { - when(objectMapper.readValue(anyString(), Mockito.<TypeReference<List<Map<String, Object>>>>any())) - .thenThrow(JsonProcessingException.class); - } - - @SneakyThrows - @Test - void shouldCallObjectMapper() { - try { - mapFormData(); - } catch (TechnicalException e) { - verify(objectMapper).readValue(anyString(), Mockito.<TypeReference<List<Map<String, Object>>>>any()); - } - } - - @Test - void shouldThrowTechnicalException() { - assertThatThrownBy(() -> mapFormData()) - .isInstanceOf(TechnicalException.class) - .hasMessageStartingWith("Error parsing JSON") - .hasMessageContaining("ExceptionId"); - } - } - - @DisplayName("with valid json") - @Nested - class TestWithValidJson { - - @SneakyThrows - @BeforeEach - void mockNode() { - when(objectMapper.readValue(anyString(), Mockito.<TypeReference<List<Map<String, Object>>>>any())) - .thenReturn(Collections.emptyList()); - } - - @SneakyThrows - @Test - void shouldCallObjectMapper() { - mapFormData(); - - verify(objectMapper).readValue(anyString(), Mockito.<TypeReference<List<Map<String, Object>>>>any()); - } - - @Test - void shouldReturnValue() { - var list = mapFormData(); - - assertThat(list).isEmpty(); - } - } - - private List<Map<String, Object>> mapFormData() { - return service.readAsListMap("{}"); - } - } -} diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/intelliform/XmlToJavaMapsMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/intelliform/XmlToJavaMapsMapperTest.java deleted file mode 100644 index 37df5097..00000000 --- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/intelliform/XmlToJavaMapsMapperTest.java +++ /dev/null @@ -1,329 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.semantik.enginebased.afm.intelliform; - -import static org.assertj.core.api.Assertions.*; -import static org.mockito.ArgumentMatchers.*; -import static org.mockito.Mockito.*; - -import java.util.Collections; -import java.util.List; -import java.util.Map; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.w3c.dom.Document; -import org.w3c.dom.Node; - -import de.ozgcloud.common.errorhandling.TechnicalException; - -class XmlToJavaMapsMapperTest { - - @InjectMocks - private XmlToJavaMapsMapper mapper = new XmlToJavaMapsMapper(); - @Mock - private JsonService jsonService; - - private final Document document = mapper.parseAsW3cDocument( - XmlToJavaMapsMapperTest.class.getResourceAsStream("/intelliform/SimpleFormDataMapperTestFile.xml")); - - @Test - void testSimpleNode() { - - Map<String, Object> formData = mapXmlToJavaMaps(); - - assertThat(formData).containsKey("simplenode"); - assertThat(formData.get("simplenode")).isInstanceOf(String.class).isEqualTo("simplenodevalue"); - } - - @Test - void testEmptyNodeNotMapped() { - - Map<String, Object> formData = mapXmlToJavaMaps(); - - assertThat(formData).doesNotContainKey("emptynode"); - } - - @Nested - class TestNestedMapNode { - - private static final String MAIN_NODE_NAME = "nestedmapnode"; - - @Test - void nestedMapNodeShouldBeMap() { - - Map<String, Object> formData = mapXmlToJavaMaps(); - - assertThat(formData).containsKey(MAIN_NODE_NAME); - assertThat(formData.get(MAIN_NODE_NAME)).isInstanceOf(Map.class); - } - - @Test - @SuppressWarnings("unchecked") - void nestedMapNodeShouldContainValues() { - - Map<String, Object> nestedMapNode = (Map<String, Object>) mapXmlToJavaMaps().get(MAIN_NODE_NAME); - - assertThat(nestedMapNode).hasSize(2) - .containsEntry("nestedmapnode1", "nestedmapnodevalue1") - .containsEntry("nestedmapnode2", "nestedmapnodevalue2"); - } - } - - @Nested - @SuppressWarnings("unchecked") - class TestNestedListNodeWithStrings { - - private static final String MAIN_NODE_NAME = "nestedlistnodewithstrings"; - private static final String NESTED_NODE_NAME = "nestednode"; - - @Test - void shouldContainNestedListWithStringsNode() { - - Map<String, Object> formData = mapXmlToJavaMaps(); - - assertThat(formData).containsKey(MAIN_NODE_NAME); - } - - @Test - void valuesShouldBeJavaList() { - - Map<String, Object> formData = mapXmlToJavaMaps(); - - Map<String, Object> mainNode = (Map<String, Object>) formData.get(MAIN_NODE_NAME); - - assertThat(mainNode).containsKey(NESTED_NODE_NAME).isInstanceOf(Map.class); - assertThat(mainNode.get(NESTED_NODE_NAME)).isInstanceOf(List.class); - } - - @Test - void shouldContainValues() { - - Map<String, Object> formData = mapXmlToJavaMaps(); - Map<String, Object> mainNode = (Map<String, Object>) formData.get(MAIN_NODE_NAME); - List<String> nestedList = (List<String>) mainNode.get(NESTED_NODE_NAME); - - assertThat(nestedList).hasSize(3).contains("nestedlistnodevalue1", "nestedlistnodevalue2", "nestedlistnodevalue3"); - } - } - - @Nested - @SuppressWarnings("unchecked") - class TestNestedListNodeWithObjects { - - private static final String MAIN_NODE_NAME = "nestedlistnodewithmap"; - private static final String NESTED_NODE_NAME = "nestednode"; - - @Test - void shouldContainNestedListWithObjectsNode() { - - Map<String, Object> formData = mapXmlToJavaMaps(); - - assertThat(formData).containsKey(MAIN_NODE_NAME); - } - - @Test - void valuesShouldBeJavaList() { - - Map<String, Object> formData = mapXmlToJavaMaps(); - - Map<String, Object> mainNode = (Map<String, Object>) formData.get(MAIN_NODE_NAME); - - assertThat(mainNode).containsKey(NESTED_NODE_NAME).isInstanceOf(Map.class); - assertThat(mainNode.get(NESTED_NODE_NAME)).isInstanceOf(List.class); - } - - @Test - void shouldContainTwoElements() { - - Map<String, Object> formData = mapXmlToJavaMaps(); - List<Object> nestedList = getNestedList(formData); - - assertThat(nestedList).hasSize(2); - } - - @Test - void validateLevel2ValuesOfMap1() { - - Map<String, Object> formData = mapXmlToJavaMaps(); - List<Object> nestedList = getNestedList(formData); - - Map<String, Object> map1 = (Map<String, Object>) nestedList.get(0); - - assertThat(map1).hasSize(1) - .containsEntry("level2", "nestedlistnodevalue1"); - } - - @Test - void validateLevel2ValuesOfMap2() { - - Map<String, Object> formData = mapXmlToJavaMaps(); - List<Object> nestedList = getNestedList(formData); - - Map<String, Object> map2 = (Map<String, Object>) nestedList.get(1); - - assertThat(map2).hasSize(1); - assertThat(map2.get("level2")).isInstanceOf(List.class); - - List<String> map21 = (List<String>) map2.get("level2"); - assertThat(map21).contains("nestedlistnodevalue1", "nestedlistnodevalue2", "nestedlistnodevalue3"); - } - - private List<Object> getNestedList(Map<String, Object> formData) { - Map<String, Object> mainNode = (Map<String, Object>) formData.get(MAIN_NODE_NAME); - List<Object> nestedList = (List<Object>) mainNode.get(NESTED_NODE_NAME); - return nestedList; - } - } - - @Nested - class TestParseFile { - - private static final String FILE = "file"; - - @Nested - class TestParseFileList { - - private static final String LIST_FILE_PARENT = "list_file_parent"; - private static final String LIST_FILE_PARENT_ITEM = "list_file_parent-item"; - - @Test - void shouldMapAttributesOnListFirstElement() { - var javaMap = mapXmlToJavaMaps(); - - assertThat(getListItemFile(javaMap, 0)) - .containsEntry("id", "assistants.21B483DAA2DC7900C1D1135E566D0F672CB42832") - .containsEntry("content-type", "image/jpeg") - .containsEntry("description", "file description for first list file") - .containsEntry("length", "1184319") - .containsEntry("text", "20210326_133516[1].jpg"); - } - - @Test - void shouldMapAttributesOnListSecondElement() { - var javaMap = mapXmlToJavaMaps(); - - assertThat(getListItemFile(javaMap, 1)) - .containsEntry("id", "assistants.2F1FF737CF4F23191C1952091CB342254EE22A37") - .containsEntry("content-type", "image/jpeg") - .containsEntry("description", "file description for second list file") - .containsEntry("length", "1384037") - .containsEntry("text", "20210326_133526[1].jpg"); - } - - @SuppressWarnings("unchecked") - private Map<String, Object> getListItemFile(Map<String, Object> map, int index) { - var listFileParent = (Map<String, Object>) map.get(LIST_FILE_PARENT); - var listFileParentItem = (List<?>) listFileParent.get(LIST_FILE_PARENT_ITEM); - var firstFileItem = (Map<String, Object>) listFileParentItem.get(index); - return (Map<String, Object>) firstFileItem.get(FILE); - } - } - - @Nested - class TestParseSingleFile { - - private static final String SINGLE_FILE_PARENT = "single_file_parent"; - private static final String SINGLE_FILE_PARENT_ITEM = "single_file_parent-item"; - - @Test - void shouldMapAttributesOnSingleElement() { - var javaMap = mapXmlToJavaMaps(); - - assertThat(getSingleItemFile(javaMap)) - .containsEntry("id", "assistants.B20451156C677116B91A4EF2D1E859837B6CE510") - .containsEntry("content-type", "image/jpeg") - .containsEntry("description", "file description for single file") - .containsEntry("length", "3066416") - .containsEntry("text", "20210324_103054[1].jpg"); - } - - @SuppressWarnings("unchecked") - private Map<String, Object> getSingleItemFile(Map<String, Object> map) { - var singleFileParent = (Map<String, Object>) map.get(SINGLE_FILE_PARENT); - var singleFileParentItem = (Map<String, Object>) singleFileParent.get(SINGLE_FILE_PARENT_ITEM); - return (Map<String, Object>) singleFileParentItem.get(FILE); - } - } - } - - @DisplayName("Get content value") - @Nested - class TestGetContentValue { - - @DisplayName("from json node") - @Nested - class TestJsonNode { - - private static final String VALID_EMPTY_JSON = "{}"; - - @Mock - private Node node; - - @BeforeEach - void mockNode() { - when(node.getNodeName()).thenReturn(XmlToJavaMapsMapper.REST_RESPONSE_NAME); - } - - @Test - void shouldCallJSONService() { - getContentValue(); - - verify(jsonService).readAsListMap(any()); - } - - @Test - void shouldReturnValueOnValidJson() { - var expectedValue = Collections.<Map<String, Object>>emptyList(); - when(jsonService.readAsListMap(anyString())).thenReturn(expectedValue); - - var value = getContentValue(); - - assertThat(value).isEqualTo(expectedValue); - } - - @Test - void shouldReturnEmptyListOnException() { - when(jsonService.readAsListMap(anyString())).thenThrow(TechnicalException.class); - - var value = getContentValue(); - - assertThat(value).isEmpty(); - } - - @SuppressWarnings("unchecked") - private List<Object> getContentValue() { - return (List<Object>) mapper.getContentValue(node, VALID_EMPTY_JSON); - } - } - } - - private Map<String, Object> mapXmlToJavaMaps() { - return mapper.mapXmlToJavaMaps(document); - } -} diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelEngineBasedSemantikAdapterTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelEngineBasedSemantikAdapterTest.java deleted file mode 100644 index 512d0a84..00000000 --- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelEngineBasedSemantikAdapterTest.java +++ /dev/null @@ -1,340 +0,0 @@ -package de.ozgcloud.eingang.semantik.enginebased.dfoerdermittel; - -import static de.ozgcloud.eingang.semantik.enginebased.dfoerdermittel.DFoerdermittelEngineBasedSemantikAdapter.*; -import static de.ozgcloud.eingang.semantik.enginebased.dfoerdermittel.DFoerdermittelFormDataTestFactory.*; -import static org.assertj.core.api.Assertions.*; -import static org.assertj.core.api.InstanceOfAssertFactories.*; -import static org.mockito.ArgumentMatchers.*; -import static org.mockito.Mockito.*; - -import java.util.Collections; -import java.util.Map; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.Spy; - -import de.ozgcloud.common.binaryfile.TempFileUtils; -import de.ozgcloud.common.test.TestUtils; -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; -import de.ozgcloud.eingang.common.formdata.IncomingFile; -import de.ozgcloud.eingang.common.formdata.PostfachAddressTestFactory; -import de.ozgcloud.eingang.common.formdata.ServiceKontoTestFactory; -import de.ozgcloud.eingang.common.formdata.StringBasedIdentifier; -import de.ozgcloud.eingang.common.formdata.ZustaendigeStelle; -import de.ozgcloud.eingang.common.formdata.ZustaendigeStelleTestFactory; -import de.ozgcloud.eingang.semantik.common.ServiceKontoFactory; - -class DFoerdermittelEngineBasedSemantikAdapterTest { - - @Spy - @InjectMocks - private DFoerdermittelEngineBasedSemantikAdapter adapter; - - @Mock - private ServiceKontoFactory serviceKontoFactory; - - @Nested - class TestIsResponsible { - - @Test - void shouldBeTrueWithFachnachricht() { - var responsible = adapter.isResponsible(createWithFachnachricht()); - - assertThat(responsible).isTrue(); - } - - @Test - void shouldBeFalseForOuther() { - var responsible = adapter.isResponsible(FormDataTestFactory.create()); - - assertThat(responsible).isFalse(); - } - } - - @Nested - class TestParseFachnachricht { - - @Nested - class ExtractData { - @Test - void shouldHaveFormData() { - var result = adapter.extractFormDataFormXML(TestUtils.loadFile("xta/Beispieldatensatz_Fachnachricht.xml")); - - assertThat(result).isNotNull(); - } - - @Test - void shouldHavePages() { - var result = adapter.extractFormDataFormXML(TestUtils.loadFile("xta/Beispieldatensatz_Fachnachricht.xml")); - - assertThat(result).containsKey("Pages"); - } - - @Test - void shouldHaveInboxRef() { - var result = adapter.extractFormDataFormXML(TestUtils.loadFile("xta/Beispieldatensatz_Fachnachricht.xml")); - - assertThat(result).containsEntry("InboxReference", "sh/sh/4dd01647-b9d9-4775-1b50-08da3d83800a"); - } - } - - @Nested - class HandleFachnachrichtData { - - private final Map<String, Object> extracted = Map.of("name", "Theo"); - - @Test - void shouldCallExtractData() { - doReturn(extracted).when(adapter).extractFormDataFormXML(any()); - - adapter.parseFachnachricht(createWithFachnachricht(), createFachnachrichtFile()); - - verify(adapter).extractFormDataFormXML(notNull()); - } - - @Test - void shouldAddMap() { - doReturn(extracted).when(adapter).extractFormDataFormXML(any()); - - var result = adapter.parseFachnachricht(createWithFachnachricht(), createFachnachrichtFile()); - - assertThat(result.getFormData()).containsEntry("Fachnachricht", extracted); - } - - @Test - void shouldIgnoreEmptyData() { - doReturn(Collections.emptyMap()).when(adapter).extractFormDataFormXML(any()); - - var result = adapter.parseFachnachricht(createWithFachnachricht(), createFachnachrichtFile()); - - assertThat(result.getFormData()).doesNotContainKey("Fachnachricht"); - } - } - } - - FormData createWithFachnachricht() { - - return FormData.builder() - .formData(Collections.emptyMap()) - .representation(createFachnachrichtFile()).build(); - } - - IncomingFile createFachnachrichtFile() { - var tmpFile = TempFileUtils.writeTmpFile(TestUtils.loadFile("xta/Beispieldatensatz_Fachnachricht.xml")); - - return IncomingFile.builder() - .file(tmpFile) - .contentType("application/xml") - .size(1283) - .name("Beispieldatensatz_Fachnachricht.xml") - .build(); - } - - @Nested - class TestProcessFachnachricht { - - @Mock - FormData formData0; - - @Mock - FormData formData1; - - @Mock - FormData formData2; - - @Mock - FormData formData3; - - @Mock - FormData formData4; - - @Mock - FormData formData5; - - @BeforeEach - void mock() { - doReturn(formData1).when(adapter).addFormName(formData0); - doReturn(formData2).when(adapter).addFormEngineName(formData1); - doReturn(formData3).when(adapter).addServiceKonto(formData2); - doReturn(formData4).when(adapter).addOrganisationsEinheitId(formData3); - doReturn(formData5).when(adapter).addFormId(formData4); - } - - @Test - void shouldReturn() { - var processedFormData = adapter.processFachnachricht(formData0); - - assertThat(processedFormData).isEqualTo(formData5); - } - } - - @Nested - class TestAddServiceKonto { - - @BeforeEach - void init() { - when(serviceKontoFactory.buildOsiServiceKonto(any())).thenReturn(ServiceKontoTestFactory.create()); - } - - @Test - void shouldHaveServiceKonto() { - var formData = adapter.addServiceKonto(DFoerdermittelFormDataTestFactory.create()); - - assertThat(formData.getHeader().getServiceKonto().getPostfachAddresses().getFirst().getIdentifier()) - .asInstanceOf(type(StringBasedIdentifier.class)).extracting(StringBasedIdentifier::getPostfachId) - .isEqualTo(PostfachAddressTestFactory.POSTFACH_ID); - } - - @Test - void shouldRemovePrefix() { - adapter.addServiceKonto(DFoerdermittelFormDataTestFactory.create()); - - verify(serviceKontoFactory).buildOsiServiceKonto(DFoerdermittelFormDataTestFactory.POSTFACH_ID); - } - } - - @Nested - class TestExtractPrefix { - @Test - void shouldRemoveAllBeforeLastSlash() { - var result = adapter.extractPrefix("bla/bla/bla/12345"); - - assertThat(result).isEqualTo("12345"); - } - - @Test - void shouldBeFineWithoutSlash() { - var result = adapter.extractPrefix("12345"); - - assertThat(result).isEqualTo("12345"); - } - } - - @Nested - class TestAddOrganisationsEinheitId { - - @DisplayName("with no existing zustaendige stelles") - @Nested - class TestWithNoExistingZustaendigeStelles { - @Test - void shouldHaveOrganisationsEinheitId() { - var inputFormData = DFoerdermittelFormDataTestFactory.createBuilder() - .clearZustaendigeStelles() - .build(); - - var formData = adapter.addOrganisationsEinheitId(inputFormData); - - assertThat(formData.getZustaendigeStelles()) - .extracting(ZustaendigeStelle::getOrganisationseinheitenId) - .containsExactly(ORGANISATIONS_EINHEIT_ID); - } - } - - @DisplayName("with one existing zustaendige stelle") - @Nested - class TestWithOneExistingZustaendigeStelle { - - @Test - void shouldHaveOrganisationsEinheitId() { - var formData = adapter.addOrganisationsEinheitId(DFoerdermittelFormDataTestFactory.create()); - - assertThat(formData.getZustaendigeStelles()) - .extracting(ZustaendigeStelle::getOrganisationseinheitenId) - .containsExactly(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID, ORGANISATIONS_EINHEIT_ID); - } - - @DisplayName("should log error for existing zustaendige stelle") - @Test - void shouldLogErrorForExistingZustaendigeStelle() { - adapter.addOrganisationsEinheitId(DFoerdermittelFormDataTestFactory.create()); - - verify(adapter).logErrorForExistingZustaendigeStelle(); - } - } - } - - @Nested - class TestAddFormName { - - @DisplayName("should have form name from title") - @Test - void shouldHaveFormNameFromTitle() { - var formData = adapter.addFormName(createFormDataWithTitle(FORM_NAME)); - - assertThat(formData.getHeader().getFormName()).isEqualTo(FORM_NAME); - } - - @DisplayName("should have default form name for empty title") - @Test - void shouldHaveDefaultFormNameForEmptyTitle() { - var formData = adapter.addFormName(createFormDataWithTitle("")); - - assertThat(formData.getHeader().getFormName()).isEqualTo(DEFAULT_FORM_NAME); - } - - @DisplayName("should have default form name for missing title") - @Test - void shouldHaveDefaultFormNameForMissingTitle() { - var formData = adapter.addFormName(createFormDataWithTitle(null)); - - assertThat(formData.getHeader().getFormName()).isEqualTo(DEFAULT_FORM_NAME); - } - - FormData createFormDataWithTitle(String title) { - return createFachnachrichtBuilder().title(title).build().createFormData(); - } - - } - - @DisplayName("add form id") - @Nested - class TestAddFormId { - - @DisplayName("should get form id from project title") - @Test - void shouldGetFormIdFromProjectTitle() { - var formData = adapter.addFormId(createFormDataWithProjectTitle(FORM_ID)); - - assertThat(formData.getHeader().getFormId()).isEqualTo(FORM_ID); - } - - @DisplayName("should keep form id if project title is empty") - @Test - void shouldKeepFormIdIfProjectTitleIsEmpty() { - var formData = adapter.addFormId(createFormDataWithProjectTitle("")); - - assertThat(formData.getHeader().getFormId()).isEqualTo(DEFAULT_FORM_ID); - } - - @DisplayName("should keep form id if project title is null") - @Test - void shouldKeepFormIdIfProjectTitleIsNull() { - var formData = adapter.addFormId(createFormDataWithProjectTitle(null)); - - assertThat(formData.getHeader().getFormId()).isEqualTo(DEFAULT_FORM_ID); - } - - FormData createFormDataWithProjectTitle(String projectTitle) { - return createFachnachrichtBuilder().projectTitle(projectTitle).build().createFormData(); - } - - } - - @Nested - class TestAddFormEngineName { - - @Test - void shouldHaveFormEngineName() { - var formData = adapter.addFormEngineName(DFoerdermittelFormDataTestFactory.create()); - - assertThat(formData.getHeader().getFormEngineName()).isEqualTo("dFördermittelantrag"); - } - - } -} diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelFormDataTestFactory.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelFormDataTestFactory.java deleted file mode 100644 index 7bd4cc6a..00000000 --- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelFormDataTestFactory.java +++ /dev/null @@ -1,75 +0,0 @@ -package de.ozgcloud.eingang.semantik.enginebased.dfoerdermittel; - -import static java.util.stream.Collectors.*; - -import java.util.Map; -import java.util.Objects; -import java.util.function.Predicate; -import java.util.stream.IntStream; - -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; -import de.ozgcloud.eingang.common.formdata.FormHeaderTestFactory; -import lombok.Builder; - -class DFoerdermittelFormDataTestFactory { - - static final String FORM_NAME = "Name of form"; - static final String FORM_ID = "Wert von ProjectTitle"; - static final String POSTFACH_ID = "4dd01647-b9d9-4775-1b50-08da3d83800a"; - static final String ORGANISATIONS_EINHEIT_ID = "9795669"; - - static Fachnachricht.FachnachrichtBuilder createFachnachrichtBuilder() { - return Fachnachricht.builder() - .title(FORM_NAME) - .projectTitle(FORM_ID) - .postfachId(POSTFACH_ID) - .organisationsEinheitId(ORGANISATIONS_EINHEIT_ID); - } - - static FormData create() { - return createBuilder().build(); - } - - static FormData.FormDataBuilder createBuilder() { - return createBuilderWithFachnachricht(createFachnachrichtBuilder().build()); - } - - static FormData.FormDataBuilder createBuilderWithFachnachricht(Fachnachricht fachnachricht) { - return FormDataTestFactory.createBuilder() - .header(FormHeaderTestFactory.create()) - .formData(Map.of("Fachnachricht", createFachnachrichtMapWithFachnachricht(fachnachricht))); - } - - static Map<String, Object> createFachnachrichtMap() { - return createFachnachrichtMapWithFachnachricht(createFachnachrichtBuilder().build()); - } - - static Map<String, Object> createFachnachrichtMapWithFachnachricht(Fachnachricht fachnachricht) { - return createMapWithValueFilter( - Objects::nonNull, - "Title", fachnachricht.title(), - "ProjectTitle", fachnachricht.projectTitle(), - "InboxReference", "sh/sh/" + fachnachricht.postfachId(), - "MetaText1", fachnachricht.organisationsEinheitId() - ); - } - - private static Map<String, Object> createMapWithValueFilter(Predicate<String> valuePredicate, String... keyValuePairs) { - if (keyValuePairs.length % 2 != 0) { - throw new IllegalArgumentException("Array length must be even to form key-value pairs."); - } - - return IntStream.range(0, keyValuePairs.length / 2) - .boxed() - .filter(i -> valuePredicate.test(keyValuePairs[2 * i + 1])) - .collect(toMap(i -> keyValuePairs[2 * i], i -> keyValuePairs[2 * i + 1])); - } - - @Builder - record Fachnachricht(String title, String projectTitle, String postfachId, String organisationsEinheitId) { - FormData createFormData() { - return createBuilderWithFachnachricht(this).build(); - } - } -} diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormCycleEngineBasedAdapterTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormCycleEngineBasedAdapterTest.java deleted file mode 100644 index e0641a50..00000000 --- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormCycleEngineBasedAdapterTest.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.semantik.enginebased.formcycle; - -import static org.assertj.core.api.Assertions.*; -import static org.mockito.Mockito.*; - -import java.util.List; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.springframework.test.util.ReflectionTestUtils; - -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; - -class FormCycleEngineBasedAdapterTest { - - @InjectMocks - private FormCycleEngineBasedAdapter adapter; - - @Mock - private FormcycleEngineBasedMapper mapper; - @Mock - private FormData formData; - - @BeforeEach - void setup() { - ReflectionTestUtils.setField(adapter, "mappers", List.of(mapper)); - } - - @Test - void shouldParseFormData() { - adapter.parseFormData(formData); - - verify(mapper).parseFormData(formData); - } - - @Test - void shouldNotRemoveParsedFormData() { - when(mapper.parseFormData(any())).thenReturn(formData); - - var result = adapter.parseFormData(FormDataTestFactory.create()); - - assertThat(result).isSameAs(formData); - } -} diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormcycleAntragstellerMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormcycleAntragstellerMapperTest.java deleted file mode 100644 index 4bcbc1cb..00000000 --- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormcycleAntragstellerMapperTest.java +++ /dev/null @@ -1,239 +0,0 @@ -package de.ozgcloud.eingang.semantik.enginebased.formcycle; - -import static org.assertj.core.api.Assertions.*; -import static org.mockito.Mockito.*; - -import java.util.HashMap; -import java.util.Map; -import java.util.Optional; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.Spy; - -import de.ozgcloud.eingang.common.formdata.Antragsteller; -import de.ozgcloud.eingang.common.formdata.AntragstellerTestFactory; -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; - -class FormcycleAntragstellerMapperTest { - - @Spy - @InjectMocks - private FormcycleAntragstellerMapper mapper; - - private static final String VALUE_KEY = "value"; - private static final String LABEL_KEY = "label"; - - private Map<String, Object> antragstellerData = new HashMap<>(); - private Map<String, Object> antragstellerMap = Map.of("fsBKAllDaten", Map.of(VALUE_KEY, antragstellerData)); - - @Nested - class TestParseFormData { - - @Mock - private Antragsteller antragsteller; - - @Test - void shouldCallGetAntragsteller() { - mapper.parseFormData(buildFormData()); - - verify(mapper).getAntragstellerData(antragstellerMap); - } - - @Test - void shouldCallBuildAntragsteller() { - doReturn(Optional.of(antragstellerData)).when(mapper).getAntragstellerData(anyMap()); - - mapper.parseFormData(buildFormData()); - - verify(mapper).buildAntragsteller(antragstellerData); - } - - @Test - void shouldSetAntragsteller() { - doReturn(antragsteller).when(mapper).buildAntragsteller(anyMap()); - - var formData = mapper.parseFormData(buildFormData()); - - assertThat(formData.getAntragsteller()).isSameAs(antragsteller); - } - - @Test - void shouldReturnSameFormData() { - var formData = FormDataTestFactory.create(); - - var result = mapper.parseFormData(formData); - - assertThat(result).isSameAs(formData); - } - - FormData buildFormData() { - return FormData.builder().formData(antragstellerMap).build(); - } - } - - @Nested - class TestGetAntragstellerData { - - @Test - void shouldReturnEmpty() { - Map<String, Object> formDataMap = Map.of("key", "value"); - - var result = mapper.getAntragstellerData(formDataMap); - - assertThat(result).isEmpty(); - } - - @Test - void shouldReturnAntragstellerData() { - var result = mapper.getAntragstellerData(antragstellerMap); - - assertThat(result).contains(antragstellerData); - } - } - - @Nested - class TestBuildAntragsteller { - - @Test - void shouldSetAnrede() { - antragstellerData.put("tfAntragstellerAnrede", Map.of(VALUE_KEY, AntragstellerTestFactory.ANREDE, LABEL_KEY, "Anrede")); - - var result = buildAntragsteller(); - - assertThat(result.getAnrede()).isEqualTo(AntragstellerTestFactory.ANREDE); - } - - @Test - void shouldSetVorname() { - antragstellerData.put("tfAntragstellerVorname", Map.of(LABEL_KEY, "Vorname", VALUE_KEY, AntragstellerTestFactory.VORNAME)); - - var result = buildAntragsteller(); - - assertThat(result.getVorname()).isEqualTo(AntragstellerTestFactory.VORNAME); - } - - @Test - void shouldSetNachname() { - antragstellerData.put("tfAntragstellerName", Map.of(VALUE_KEY, AntragstellerTestFactory.NACHNAME, LABEL_KEY, "Nachname")); - - var result = buildAntragsteller(); - - assertThat(result.getNachname()).isEqualTo(AntragstellerTestFactory.NACHNAME); - } - - @Test - void shouldSetGeburtsname() { - antragstellerData.put("tfAntragstellerGeburtsname", Map.of(VALUE_KEY, AntragstellerTestFactory.GEBURTSNAME, LABEL_KEY, "Geburtsname")); - - var result = buildAntragsteller(); - - assertThat(result.getGeburtsname()).isEqualTo(AntragstellerTestFactory.GEBURTSNAME); - } - - @Test - void shouldSetGeburtsdatum() { - antragstellerData.put("tfAntragstellerGeburtsdatum", Map.of(VALUE_KEY, AntragstellerTestFactory.GEBURTSDATUM, LABEL_KEY, "Geburtsdatum")); - - var result = buildAntragsteller(); - - assertThat(result.getGeburtsdatum()).isEqualTo(AntragstellerTestFactory.GEBURTSDATUM); - } - - @Test - void shouldSetGeburtsort() { - antragstellerData.put("tfAntragstellerGeburtsort", Map.of(VALUE_KEY, AntragstellerTestFactory.GEBURTSORT, LABEL_KEY, "Geburtsort")); - - var result = buildAntragsteller(); - - assertThat(result.getGeburtsort()).isEqualTo(AntragstellerTestFactory.GEBURTSORT); - } - - @Test - void shouldSetEmail() { - antragstellerData.put("tfAntragstellerEmail", Map.of(VALUE_KEY, AntragstellerTestFactory.EMAIL, LABEL_KEY, "E-Mail")); - - var result = buildAntragsteller(); - - assertThat(result.getEmail()).isEqualTo(AntragstellerTestFactory.EMAIL); - } - - @Test - void shouldSetTelefon() { - antragstellerData.put("tfAntragstellerTelefon", Map.of(VALUE_KEY, AntragstellerTestFactory.TELEFON, LABEL_KEY, "Telefon")); - - var result = buildAntragsteller(); - - assertThat(result.getTelefon()).isEqualTo(AntragstellerTestFactory.TELEFON); - } - - @Test - void shouldSetAdresse() { - antragstellerData.put("tfAntragstellerAdresse", - Map.of(LABEL_KEY, "Adresse", VALUE_KEY, AntragstellerTestFactory.STRASSE + " " + AntragstellerTestFactory.HAUSNUMMER)); - - var result = buildAntragsteller(); - - assertThat(result.getStrasse()).isEqualTo(AntragstellerTestFactory.STRASSE + " " + AntragstellerTestFactory.HAUSNUMMER); - } - - @Test - void shouldSetPlz() { - antragstellerData.put("tfAntragstellerPLZ", Map.of(LABEL_KEY, "PLZ", VALUE_KEY, AntragstellerTestFactory.PLZ)); - - var result = buildAntragsteller(); - - assertThat(result.getPlz()).isEqualTo(AntragstellerTestFactory.PLZ); - } - - @Test - void shouldSetOrt() { - antragstellerData.put("tfAntragstellerOrt", Map.of(LABEL_KEY, "Ort", VALUE_KEY, AntragstellerTestFactory.ORT)); - - var result = buildAntragsteller(); - - assertThat(result.getOrt()).isEqualTo(AntragstellerTestFactory.ORT); - } - - Antragsteller buildAntragsteller() { - return mapper.buildAntragsteller(antragstellerData); - } - } - - @Nested - class TestBuildFirmaAntragsteller { - - @BeforeEach - void fillAntragstellerData() { - antragstellerData.put("tfOrgName", Map.of(VALUE_KEY, AntragstellerTestFactory.FIRMA_NAME, LABEL_KEY, "Firmenname")); - antragstellerData.put("tfAntragstellerAnrede", Map.of(VALUE_KEY, AntragstellerTestFactory.ANREDE, LABEL_KEY, "Anrede")); - antragstellerData.put("tfAntragstellerVorname", Map.of(LABEL_KEY, "Vorname", VALUE_KEY, AntragstellerTestFactory.VORNAME)); - antragstellerData.put("tfAntragstellerName", Map.of(VALUE_KEY, AntragstellerTestFactory.NACHNAME, LABEL_KEY, "Nachname")); - antragstellerData.put("tfAntragstellerGeburtsname", Map.of(VALUE_KEY, AntragstellerTestFactory.GEBURTSNAME, LABEL_KEY, "Geburtsname")); - antragstellerData.put("tfAntragstellerGeburtsdatum", Map.of(VALUE_KEY, AntragstellerTestFactory.GEBURTSDATUM, LABEL_KEY, "Geburtsdatum")); - antragstellerData.put("tfAntragstellerGeburtsort", Map.of(VALUE_KEY, AntragstellerTestFactory.GEBURTSORT, LABEL_KEY, "Geburtsort")); - antragstellerData.put("tfAntragstellerEmail", Map.of(VALUE_KEY, AntragstellerTestFactory.EMAIL, LABEL_KEY, "E-Mail")); - antragstellerData.put("tfAntragstellerTelefon", Map.of(VALUE_KEY, AntragstellerTestFactory.TELEFON, LABEL_KEY, "Telefon")); - antragstellerData.put("tfAntragstellerAdresse", - Map.of(LABEL_KEY, "Adresse", VALUE_KEY, AntragstellerTestFactory.STRASSE + " " + AntragstellerTestFactory.HAUSNUMMER)); - antragstellerData.put("tfAntragstellerPLZ", Map.of(LABEL_KEY, "PLZ", VALUE_KEY, AntragstellerTestFactory.PLZ)); - antragstellerData.put("tfAntragstellerOrt", Map.of(LABEL_KEY, "Ort", VALUE_KEY, AntragstellerTestFactory.ORT)); - } - - @Test - void shouldMapFirmaData() { - var expectedAntragsteller = AntragstellerTestFactory.createFirmBuilder() - .strasse("%s %s".formatted(AntragstellerTestFactory.STRASSE, AntragstellerTestFactory.HAUSNUMMER)) - .hausnummer(null).postfachId(null).data(null).build(); - - var result = mapper.buildAntragsteller(antragstellerData); - - assertThat(result).usingRecursiveComparison().isEqualTo(expectedAntragsteller); - } - - } -} \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsAntragstellerMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsAntragstellerMapperTest.java deleted file mode 100644 index 768bb910..00000000 --- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsAntragstellerMapperTest.java +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.semantik.enginebased.formsolutions; - -import static de.ozgcloud.eingang.common.formdata.AntragstellerTestFactory.*; -import static de.ozgcloud.eingang.common.formdata.FormDataTestFactory.*; -import static de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsAntragstellerMapper.*; -import static de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsEngineBasedAdapter.*; -import static de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsPanelMapper.*; -import static org.assertj.core.api.Assertions.*; -import static org.mockito.ArgumentMatchers.*; -import static org.mockito.Mockito.*; - -import java.util.List; -import java.util.Map; - -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mockito.Spy; - -import de.ozgcloud.eingang.common.formdata.Antragsteller; -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; -import de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsAntragstellerMapper; -import de.ozgcloud.eingang.semantik.enginebased.formsolutions.IdentifierValueParser; - -class FormSolutionsAntragstellerMapperTest { - - @Spy - private final FormSolutionsAntragstellerMapper mapper = new FormSolutionsAntragstellerMapper(); - - @DisplayName("Parse formData") - @Nested - class TestParseFormData { - private static final String ANTRAGSTELLER_NAME_PANEL_IDENTIFIER = "AS_Name1"; - private static final List<Map<String, Object>> ANTRAGSTELLER_PANEL_CONTENT_LIST = List.of( - Map.of(IDENTIFIER_KEY, ANTRAGSTELLER_NAME_PANEL_IDENTIFIER), - Map.of(COMPONENTS, List.of( - Map.of(IDENTIFIER_KEY, VORNAME_KEY, STRING_VALUE, VORNAME), - Map.of(IDENTIFIER_KEY, NACHNAME_KEY, STRING_VALUE, NACHNAME)))); - - private static final Map<String, Object> ASSISTANT_MAP = Map.of(PANELS, List.of( - Map.of(IDENTIFIER_KEY, ANTRAGSTELLER_PANEL_IDENTIFIER), - Map.of(COMPONENTS, ANTRAGSTELLER_PANEL_CONTENT_LIST))); - - private final FormData formData = FormDataTestFactory.createBuilder().antragsteller(null) - .formData(Map.of( - SIMPLE_VALUE_KEY, SIMPLE_VALUE, - FormSolutionsAntragstellerMapper.POSTKORBHANDLE, POSTFACH_ID, - ASSISTANT, ASSISTANT_MAP)) - .build(); - - @Test - void shouldParseAntragsteller() { - var expectedAntragsteller = Antragsteller.builder().vorname(VORNAME).nachname(NACHNAME).postfachId(POSTFACH_ID).build(); - var identifierValueMap = Map.of(VORNAME_KEY, VORNAME, NACHNAME_KEY, NACHNAME); - try (var valuesParser = mockStatic(IdentifierValueParser.class)) { - valuesParser.when(() -> IdentifierValueParser.parsePanelsData(any())).thenReturn(identifierValueMap); - - var resultFormData = parseFormData(); - - assertThat(resultFormData.getAntragsteller()).usingRecursiveComparison().isEqualTo(expectedAntragsteller); - } - } - - @Test - @DisplayName("should process Antragsteller data only") - void shouldNotChangeAnother() { - var resultFormData = parseFormData(); - - assertThat(resultFormData).usingRecursiveComparison().ignoringFields("antragsteller", "formData").isEqualTo(formData); - assertThat(resultFormData.getFormData()).containsAllEntriesOf( - Map.of(SIMPLE_VALUE_KEY, FormDataTestFactory.SIMPLE_VALUE, ASSISTANT, ASSISTANT_MAP)); - } - - private FormData parseFormData() { - return mapper.parseFormData(formData); - } - - @DisplayName("build antragsteller") - @Nested - class TestBuildAntragsteller { - - @Test - void shouldHaveVorname() { - var antragsteller = buildAntragsteller(); - - assertThat(antragsteller.getVorname()).isEqualTo(VORNAME); - } - - @Test - void shouldHaveNachname() { - var antragsteller = buildAntragsteller(); - - assertThat(antragsteller.getNachname()).isEqualTo(NACHNAME); - } - - @Test - void shouldHavePostfachId() { - var antragsteller = buildAntragsteller(); - - assertThat(antragsteller.getPostfachId()).isEqualTo(POSTFACH_ID); - } - - private Antragsteller buildAntragsteller() { - return mapper.buildAntragsteller(formData); - } - } - } -} \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsEngineBasedAdapterITCase.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsEngineBasedAdapterITCase.java deleted file mode 100644 index 974eb2a5..00000000 --- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsEngineBasedAdapterITCase.java +++ /dev/null @@ -1,289 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.semantik.enginebased.formsolutions; - -import static de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsEngineBasedAdapter.*; -import static org.assertj.core.api.Assertions.*; - -import java.io.File; -import java.nio.file.Files; -import java.nio.file.Path; -import java.util.Map; -import java.util.Optional; - -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.boot.test.mock.mockito.SpyBean; -import org.springframework.test.context.ActiveProfiles; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; - -import de.ozgcloud.common.binaryfile.TempFileUtils; -import de.ozgcloud.common.test.TestUtils; -import de.ozgcloud.eingang.common.errorhandling.TechnicalException; -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; -import de.ozgcloud.eingang.common.formdata.IncomingFileGroupTestFactory; -import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory; -import de.ozgcloud.eingang.common.formdata.ZustaendigeStelle; -import de.ozgcloud.eingang.semantik.SemantikAdapter; -import lombok.SneakyThrows; - -@SpringBootTest -@ActiveProfiles({ "local", "itcase" }) -public class FormSolutionsEngineBasedAdapterITCase { - - private static final String ZIP_CONTENT_TYPE = "application/zip"; - private static final String FILE_NAME_ZIP_ATTACHMENT = "formsolutions/attachment-2files.zip"; - - @MockBean - private SemantikAdapter semantikAdapter; - - @SpyBean - private FormSolutionsEngineBasedAdapter engineAdapter; - - private ObjectMapper objectMapper = new ObjectMapper(); - - @Nested - class TestEngineBasedAdapter { - - private FormData formData = prepareTestData(); - - @Test - void shouldMap() { - var data = engineAdapter.parseFormData(formData); - - assertThat(data).isNotNull(); - } - - @Test - void shouldRemoveRawData() { - var data = engineAdapter.parseFormData(formData); - - assertThat(data.getFormData().get(ASSISTANT)).isNull(); - } - - @Nested - class TestAntragsteller { - @Test - void shouldMap() { - var data = engineAdapter.parseFormData(formData); - - assertThat(data.getAntragsteller()).isNotNull(); - } - - @Test - void shouldMapVorname() { - var data = engineAdapter.parseFormData(formData); - - assertThat(data.getAntragsteller().getVorname()).isEqualTo("OZG-Cloud"); - } - - @Test - void shouldMapNachname() { - var data = engineAdapter.parseFormData(formData); - - assertThat(data.getAntragsteller().getNachname()).isEqualTo("Team"); - } - } - - @Nested - class TestAttachments { - @Test - void shouldBeEmptyForNoAttachments() { - var data = engineAdapter.parseFormData(FormDataTestFactory.createBuilder().clearAttachments().build()); - - assertThat(data.getAttachments()).isEmpty(); - } - - @Test - void shouldMap() { - var data = engineAdapter.parseFormData(formData); - - assertThat(data.getAttachments()).isNotEmpty(); - } - - @Test - void shouldMapAttachment() { - var data = engineAdapter.parseFormData(formData); - - assertThat(data.getAttachments().get(0)).isNotNull(); - assertThat(data.getNumberOfAttachments()).isEqualTo(2); - } - } - - @Nested - class TestHeader { - @Test - void shouldMap() { - var data = engineAdapter.parseFormData(formData); - - assertThat(data.getHeader()).isNotNull(); - } - - @Test - void shouldMapRequestId() { - var data = engineAdapter.parseFormData(formData); - - assertThat(data.getHeader().getRequestId()).isEqualTo("KFAS_KOP_TEST-yCkgCdqG"); - } - - @Test - void shouldMapFormName() { - var data = engineAdapter.parseFormData(formData); - - assertThat(data.getHeader().getFormName()).isEqualTo("KFAS_KOP_TEST"); - } - - @Test - void shouldMapFormId() { - var data = engineAdapter.parseFormData(formData); - - assertThat(data.getHeader().getFormId()).isEqualTo("KFAS_KOP_TEST"); - } - } - - @Nested - class TestPanels { - - @Test - void shouldMap() { - var data = engineAdapter.parseFormData(formData).getFormData(); - - assertThat(data).isNotNull(); - } - - @Test - void shouldMapIdentifier() { - var data = engineAdapter.parseFormData(formData).getFormData(); - - assertThat(data).containsKey("Panel_0"); - } - - @Test - void shouldMapComponents() { - var data = engineAdapter.parseFormData(formData).getFormData(); - - assertThat(getPanel0(data)).isNotNull(); - } - - @Test - void shouldMapComponentIdentifier() { - var data = engineAdapter.parseFormData(formData).getFormData(); - - assertThat(getPanel0(data)).containsKey("1208_Hund Grunddaten"); - } - - @Test - @SuppressWarnings("unchecked") - void shouldMapNestedComponents() { - var data = engineAdapter.parseFormData(formData).getFormData(); - - assertThat((Map<String, Object>) getPanel0(data).get("1208_Hund Grunddaten")).isNotNull(); - } - - @Test - @SuppressWarnings("unchecked") - void shouldMapNestedSubComponentIdentifier() { - var data = engineAdapter.parseFormData(formData).getFormData(); - - assertThat((Map<String, Object>) getPanel0(data).get("1208_Hund Grunddaten")) - .containsKey("1208_Hund Grunddaten"); - } - - @Test - @SuppressWarnings("unchecked") - void shouldMapNestedSubComponents() { - var data = engineAdapter.parseFormData(formData).getFormData(); - - assertThat((Map<String, Object>) ((Map<String, Object>) (getPanel0(data)).get("1208_Hund Grunddaten")) - .get("1208_Hund Grunddaten")).containsKey("Hund_Name"); - } - - @SuppressWarnings("unchecked") - private Map<String, Object> getPanel0(Map<String, Object> data) { - return ((Map<String, Object>) data.get("Panel_0")); - } - } - - @Nested - class TestZutaendigeStelle { - @Test - void shouldMap() { - var data = engineAdapter.parseFormData(formData); - - assertThat(data.getZustaendigeStelles()).isNotNull().isNotEmpty(); - } - - @Test - void shouldMapOrganistaionseinheitenId() { - var data = engineAdapter.parseFormData(formData); - - assertThat(data.getZustaendigeStelles()) - .extracting(ZustaendigeStelle::getOrganisationseinheitenId) - .containsExactly("test"); - } - } - } - - private FormData prepareTestData() { - var fileGroup = IncomingFileGroupTestFactory.createBuilder() - .name(FormSolutionsFilesMapper.FILE_GROUP_ZIP_NAME) - .clearFiles() - .file(IncomingFileTestFactory.createBuilder() - .name(FILE_NAME_ZIP_ATTACHMENT) - .file(asFile(FILE_NAME_ZIP_ATTACHMENT)) - .size(getFileSize(FILE_NAME_ZIP_ATTACHMENT)) - .contentType(ZIP_CONTENT_TYPE) - .build()) - .build(); - - return FormData.builder().formData(getTestDataFromFile()).attachment(fileGroup).build(); - } - - @SneakyThrows - private long getFileSize(String fileName) { - Path filePath = Path.of(FormSolutionsEngineBasedAdapterITCase.class.getClassLoader().getResource(fileName).toURI()); - return Files.size(filePath); - } - - private Map<String, Object> getTestDataFromFile() { - try { - var testData = TestUtils.loadTextFile("formsolutions001.json"); - return objectMapper.readValue(testData, new TypeReference<>() { - }); - } catch (JsonProcessingException e) { - var msg = Optional.ofNullable(e.getCause()).map(Throwable::getMessage).orElseGet(e::getMessage); - throw new TechnicalException("Error parsing test JSON " + msg, e); - } - } - - private File asFile(String path) { - return TempFileUtils.writeTmpFile(TestUtils.loadFile(path)); - } -} diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsEngineBasedAdapterTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsEngineBasedAdapterTest.java deleted file mode 100644 index c7fbb383..00000000 --- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsEngineBasedAdapterTest.java +++ /dev/null @@ -1,124 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.semantik.enginebased.formsolutions; - -import static de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsEngineBasedAdapter.*; -import static org.assertj.core.api.Assertions.*; -import static org.mockito.ArgumentMatchers.*; -import static org.mockito.Mockito.*; - -import java.util.Collections; -import java.util.Map; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.Spy; -import org.springframework.test.util.ReflectionTestUtils; - -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; -import de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsAntragstellerMapper; -import de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsEngineBasedAdapter; -import de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsEngineBasedMapper; - -class FormSolutionsEngineBasedAdapterTest { - - @Spy - @InjectMocks - private FormSolutionsEngineBasedAdapter adapter; - @Mock - private FormSolutionsEngineBasedMapper mapper; - - @DisplayName("Parse formData") - @Nested - class TestParseFormData { - - private final FormData formData = FormDataTestFactory.create(); - - @BeforeEach - void mockMappers() { - ReflectionTestUtils.setField(adapter, "mappers", Collections.singletonList(mapper)); - } - - @Test - void shouldCallMappers() { - when(mapper.parseFormData(any())).thenReturn(formData); - - adapter.parseFormData(formData); - - verify(mapper).parseFormData(formData); - } - - @Test - void shouldCallRemoveProcessedRawData() { - when(mapper.parseFormData(any())).thenReturn(formData); - - adapter.parseFormData(formData); - - verify(adapter).removeProcessedData(formData); - } - - @DisplayName("remove processed data") - @Nested - class TestRemoveProcessedData { - - private final Map<String, Object> formDataMap = Map.of(ASSISTANT, "testValue", - ANLIEGEN_ID, "testValue2", KOMMUNALVERWALTUNG_ID, "testValue3", - FormSolutionsAntragstellerMapper.POSTKORBHANDLE, "testValue4"); - private final FormData formData = FormData.builder().formData(formDataMap).build(); - - @Test - void shouldRemoveAssistant() { - var cleanedFormData = adapter.removeProcessedData(formData); - - assertThat(cleanedFormData.getFormData()).doesNotContainKey(ASSISTANT); - } - - @Test - void shouldRemoveAnliegenId() { - var cleanedFormData = adapter.removeProcessedData(formData); - - assertThat(cleanedFormData.getFormData()).doesNotContainKey(ANLIEGEN_ID); - } - - @Test - void shouldRemoveKommunalVerwaltungId() { - var cleanedFormData = adapter.removeProcessedData(formData); - - assertThat(cleanedFormData.getFormData()).doesNotContainKey(KOMMUNALVERWALTUNG_ID); - } - - @Test - void shouldRemovePostkorbhandle() { - var cleanedFormData = adapter.removeProcessedData(formData); - - assertThat(cleanedFormData.getFormData()).doesNotContainKey(FormSolutionsAntragstellerMapper.POSTKORBHANDLE); - } - } - } -} \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsFilesMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsFilesMapperTest.java deleted file mode 100644 index b5f3510a..00000000 --- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsFilesMapperTest.java +++ /dev/null @@ -1,204 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.semantik.enginebased.formsolutions; - -import static org.assertj.core.api.Assertions.*; -import static org.mockito.ArgumentMatchers.*; -import static org.mockito.Mockito.*; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.stream.Stream; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mockito.ArgumentCaptor; -import org.mockito.Captor; -import org.mockito.InjectMocks; -import org.mockito.Spy; - -import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; -import de.ozgcloud.eingang.common.formdata.IncomingFile; -import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; -import de.ozgcloud.eingang.common.formdata.IncomingFileGroupTestFactory; -import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory; -import de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsFilesMapper.ZippedAttachmentsProcessor; - -class FormSolutionsFilesMapperTest { - - private static final String ATTACHMENT_ZIP_FILE_NAME = "attachments.zip"; - private static final String ZIP_CONTENT_TYPE = "application/zip"; - - @Spy - @InjectMocks - private final FormSolutionsFilesMapper mapper = new FormSolutionsFilesMapper(); - - @Nested - class TestParseFormData { - @Test - void shouldCallReadAttachments() { - mapper.parseFormData(FormDataTestFactory.create()); - - verify(mapper).readAttachments(any()); - } - - @Test - void shouldAddGroup() { - var attachmentGroup = IncomingFileGroupTestFactory.create(); - doReturn(List.of(attachmentGroup)).when(mapper).readAttachments(any()); - - var result = mapper.parseFormData(FormDataTestFactory.create()); - - assertThat(result.getAttachments()).containsOnly(attachmentGroup); - } - - @Test - void shouldHaveNoAttachmentIfMissing() { - doReturn(Collections.emptyList()).when(mapper).readAttachments(any()); - - var result = mapper.parseFormData(FormDataTestFactory.create()); - - assertThat(result.getAttachments()).isEmpty(); - } - - } - - @Nested - class TestZippedAttachmentsProcessor { - - private final List<IncomingFileGroup> attachments = new ArrayList<>(); - - private final ZippedAttachmentsProcessor processor = spy(mapper.new ZippedAttachmentsProcessor(attachments)); - - @Nested - class Process { - - @BeforeEach - void fillAttachmentList() { - attachments.add(IncomingFileGroupTestFactory.create()); - when(processor.nonZipFileGroups()).thenReturn(Stream.empty()); - } - - @Test - void shouldCallExtractAttachments() { - processor.process(); - - verify(processor).extractAttachments(); - } - - @Test - void shouldReturnExtractedGroups() { - var expected = IncomingFileTestFactory.create(); - doReturn(Stream.of(expected)).when(processor).extractAttachments(); - - var result = processor.process(); - - assertThat(result).flatMap(IncomingFileGroup::getFiles).containsOnly(expected); - } - - @Test - void shouldReturnEmptyIfNoAttachments() { - attachments.clear(); - - var result = processor.process(); - - assertThat(result).isEmpty(); - } - } - - @Nested - class ExtractAttachments { - - @Captor - private ArgumentCaptor<IncomingFile> fileCaptor; - - @Test - void shouldCallUnzip() { - attachments.add(buildZipFileGroup()); - - processor.extractAttachments().toList(); - - verify(processor).unzip(fileCaptor.capture()); - } - - @Test - void shouldNotCallUnzipForOtherGroup() { - attachments.add(IncomingFileGroupTestFactory.create()); - - processor.extractAttachments().toList(); - - verify(processor, never()).unzip(any()); - } - - private IncomingFileGroup buildZipFileGroup() { - return IncomingFileGroupTestFactory.createBuilder().clearFiles() - .name(FormSolutionsFilesMapper.FILE_GROUP_ZIP_NAME) - .file(buildZipFile()) - .build(); - } - - } - - @Nested - class Unzip { - - @Test - void shouldCallReadFromZip() { - IncomingFile zipFile = buildZipFile(); - - processor.unzip(zipFile); - - verify(processor).readFromZip(zipFile); - } - - @Test - void resultShouldContainUnzippedContent() { - var resultFile = IncomingFileTestFactory.create(); - doReturn(Stream.of(resultFile)).when(processor).readFromZip(any()); - - var result = processor.unzip(buildZipFile()); - - assertThat(result).containsOnly(resultFile); - } - - @Test - void shouldReturnZipFileOnException() { - doThrow(new RuntimeException()).when(processor).readFromZip(any()); - IncomingFile zipFile = buildZipFile(); - - var result = processor.unzip(zipFile); - - assertThat(result).hasSize(1).contains(zipFile); - } - } - - private IncomingFile buildZipFile() { - return IncomingFileTestFactory.createBuilder() - .name(ATTACHMENT_ZIP_FILE_NAME).contentType(ZIP_CONTENT_TYPE) - .build(); - } - } -} \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsHeaderMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsHeaderMapperTest.java deleted file mode 100644 index 56df1f63..00000000 --- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsHeaderMapperTest.java +++ /dev/null @@ -1,141 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.semantik.enginebased.formsolutions; - -import static de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsHeaderTestFactory.*; -import static org.assertj.core.api.Assertions.*; -import static org.mockito.ArgumentMatchers.*; -import static org.mockito.Mockito.*; - -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.Spy; - -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.FormDataUtils; -import de.ozgcloud.eingang.common.formdata.FormHeader; -import de.ozgcloud.eingang.semantik.common.ServiceKontoFactory; - -class FormSolutionsHeaderMapperTest { - - @Spy - @InjectMocks - private final FormSolutionsHeaderMapper mapper = new FormSolutionsHeaderMapper(); - @Mock - private ServiceKontoFactory serviceKontoFactory; - - @DisplayName("Parse formData") - @Nested - class TestParseFormData { - - private final FormData formData = FormSolutionsHeaderTestFactory.create(); - - @Test - void shouldCallBuildFormHeader() { - parseFormData(); - - verify(mapper).buildFormHeader(formData); - } - - @Test - void shouldReturnValue() { - var result = parseFormData(); - - assertThat(result).usingRecursiveComparison().ignoringFields("header", "formData").isEqualTo(formData); - } - - @Test - void shouldRemoveTransactionId() { - var result = parseFormData(); - - assertThat(result.getFormData()).doesNotContainKey(FormSolutionsHeaderMapper.TRANSACTION_ID); - } - - private FormData parseFormData() { - return mapper.parseFormData(formData); - } - - @DisplayName("build form header") - @Nested - class TestBuildFormHeader { - - @Test - void shouldHaveFormName() { - var formHeader = buildFormHeader(); - - assertThat(formHeader.getFormName()).isEqualTo(FORM_NAME); - } - - @Test - void shouldHaveFormId() { - var formHeader = buildFormHeader(); - - assertThat(formHeader.getFormId()).isEqualTo(FORM_NAME); - } - - @Test - void shouldHaveTransactionId() { - var formHeader = buildFormHeader(); - - assertThat(formHeader.getRequestId()).isEqualTo(REQUEST_ID); - } - - @Test - void shouldHaveFormEngineName() { - var formHeader = buildFormHeader(); - - assertThat(formHeader.getFormEngineName()).isEqualTo(FormSolutionsHeaderMapper.FORM_ENGINE_NAME); - } - - @DisplayName("service konto") - @Nested - class TestGetServiceKonto { - - @Test - void shouldCallServiceKontoBuildHelper() { - buildFormHeader(); - - verify(serviceKontoFactory).buildOsiServiceKonto(any()); - } - - @Test - void shouldNotCallServiceKontoBuildHelper() { - var formDataWithoutPostkorbHandle = FormDataUtils.from(formData).remove(FormSolutionsHeaderMapper.POSTKORBHANDLE).build(); - - mapper.buildFormHeader(formDataWithoutPostkorbHandle); - - verify(serviceKontoFactory, never()).buildOsiServiceKonto(any()); - } - - } - - private FormHeader buildFormHeader() { - return mapper.buildFormHeader(formData); - } - } - } -} \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsHeaderTestFactory.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsHeaderTestFactory.java deleted file mode 100644 index a57d9179..00000000 --- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsHeaderTestFactory.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.semantik.enginebased.formsolutions; - -import static de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsEngineBasedAdapter.*; -import static de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsHeaderMapper.*; - -import java.util.Map; -import java.util.UUID; - -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsHeaderMapper; - -public class FormSolutionsHeaderTestFactory { - - public static final String FORM_NAME = "form name"; - public static final Object REQUEST_ID = "transaction id"; - public static final String POSTKORBHANDLE_VALUE = UUID.randomUUID().toString(); - - public static FormData create() { - return createBuilder().build(); - } - - public static FormData.FormDataBuilder createBuilder() { - return FormData.builder() - .formData(Map.of( - ASSISTANT, Map.of(IDENTIFIER_KEY, FORM_NAME), - TRANSACTION_ID, REQUEST_ID, - FormSolutionsHeaderMapper.POSTKORBHANDLE, POSTKORBHANDLE_VALUE)); - } -} diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsPanelMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsPanelMapperTest.java deleted file mode 100644 index eea209cd..00000000 --- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsPanelMapperTest.java +++ /dev/null @@ -1,187 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.semantik.enginebased.formsolutions; - -import static de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsEngineBasedAdapter.*; -import static de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsPanelTestFactory.*; -import static org.assertj.core.api.Assertions.*; - -import java.util.Map; - -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; - -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsPanelMapper; - -class FormSolutionsPanelMapperTest { - - private FormSolutionsPanelMapper mapper = new FormSolutionsPanelMapper(); - - @Nested - class TestMapping { - - @Test - void shouldMap() { - var formData = mapper.parseFormData(FormSolutionsPanelTestFactory.create()); - - assertThat(formData.getFormData()).isNotEmpty(); - } - } - - @Nested - class TestMapPanel { - @Test - void shouldContainIdentifier() { - var formData = mapper.parseFormData(FormSolutionsPanelTestFactory.create()); - - assertThat(formData.getFormData()).containsKey(PANEL_0); - } - - @Test - @SuppressWarnings("unchecked") - void shouldContainComponents() { - var formData = mapper.parseFormData(FormSolutionsPanelTestFactory.create()); - - var panelContent = (Map<String, Object>) formData.getFormData().get(PANEL_0); - - assertThat(panelContent).containsEntry(DATE_FIELD, DATE_VALUE_CONTENT).containsEntry(TEXT_FIELD, STRING_VALUE_CONTENT); - } - - @Test - void shouldContainNestedComponents() { - var formData = mapper.parseFormData(FormSolutionsPanelTestFactory.createBuilder().formData(NESTED_PANEL_FORM).build()); - - assertThat(formData.getFormData()).containsKey(PANEL_0); - } - } - - @Nested - class TestMapComponents { - @Nested - class TestMapNestedComponents { - - @Test - @SuppressWarnings("unchecked") - void shouldHaveGroup() { - var formData = mapper.parseFormData(FormSolutionsPanelTestFactory.createBuilder().formData(NESTED_PANEL_FORM).build()); - - var group = (Map<String, Object>) formData.getFormData().get(PANEL_0); - - assertThat(group).containsKey(GROUP_IDENTIFIER); - } - - @Test - @SuppressWarnings("unchecked") - void shouldHaveComponent() { - var formData = mapper.parseFormData(FormSolutionsPanelTestFactory.createBuilder().formData(NESTED_PANEL_FORM).build()); - - var group = (Map<String, Object>) ((Map<String, Object>) formData.getFormData().get(PANEL_0)).get(GROUP_IDENTIFIER); - - assertThat(group).containsEntry(DATE_FIELD, DATE_VALUE_CONTENT); - } - - @Test - @SuppressWarnings("unchecked") - void shouldNotHaveEmptyComponent() { - var formData = mapper.parseFormData(FormSolutionsPanelTestFactory.createBuilder().formData(PANEL_FORM_EMPTY).build()); - - var group = (Map<String, Object>) ((Map<String, Object>) formData.getFormData().get(PANEL_0)).get(TEXT_FIELD); - - assertThat(group).isNull(); - } - } - } - - @Nested - class TestGetPanels { - - @Test - void shoudReturnPanels() { - var panels = FormSolutionsPanelMapper.getPanels(FormSolutionsPanelTestFactory.create()); - - assertThat(panels).isEqualTo(PANEL_LIST); - } - - @Test - @DisplayName("should return empty list when ASSISTANT map is missing") - void shouldHandleMissingAssistant() { - var formData = FormSolutionsPanelTestFactory.createBuilder().formData(Map.of()).build(); - - var panels = FormSolutionsPanelMapper.getPanels(formData); - - assertThat(panels).isEmpty(); - } - - @Test - @DisplayName("should return empty list when PANELS map is missing") - void shouldHandleMissingPanels() { - var formData = FormSolutionsPanelTestFactory.createBuilder().formData(Map.of(ASSISTANT, Map.of())).build(); - - var panels = FormSolutionsPanelMapper.getPanels(formData); - - assertThat(panels).isEmpty(); - } - - @Test - void shouldHandleNullFormDataMap() { - var panels = FormSolutionsPanelMapper.getPanels(FormData.builder().build()); - - assertThat(panels).isEmpty(); - } - - @Test - void shouldHandleNullFormData() { - var panels = FormSolutionsPanelMapper.getPanels(null); - - assertThat(panels).isEmpty(); - } - } - - @Nested - class TestGetComponents{ - - @Test - void shouldReturnComponentList() { - var components = FormSolutionsPanelMapper.getComponentList(PANEL_LIST.get(0)); - - assertThat(components).isEqualTo(COMPONENT_LIST); - } - - @Test - void shouldHandleNull() { - var components = FormSolutionsPanelMapper.getComponentList(null); - - assertThat(components).isEmpty(); - } - - @Test - void shouldHandleEmptyMap() { - var components = FormSolutionsPanelMapper.getComponentList(Map.of()); - - assertThat(components).isEmpty(); - } - } -} diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsPanelTestFactory.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsPanelTestFactory.java deleted file mode 100644 index ce6ea22f..00000000 --- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsPanelTestFactory.java +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.semantik.enginebased.formsolutions; - -import static de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsEngineBasedAdapter.*; -import static de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsPanelMapper.*; - -import java.util.List; -import java.util.Map; - -import de.ozgcloud.eingang.common.formdata.FormData; - -public class FormSolutionsPanelTestFactory { - public static final String PANEL_0 = "Panel_0_1"; - public static final String TEXT_FIELD = "Textfeld (einzeilig)"; - public static final String DATE_FIELD = "Datums- / Uhrzeitfeld"; - public static final String STRING_VALUE_CONTENT = "kfjhkfjhk"; - public static final String DATE_VALUE_CONTENT = "22.05.1996"; - public static final String GROUP_IDENTIFIER = "Objektgruppe[0]"; - public static final String FORM = "AS_123"; - public static final List<Map<String, Object>> COMPONENT_LIST = List.of( - Map.of( - IDENTIFIER_KEY, TEXT_FIELD, - STRING_VALUE, STRING_VALUE_CONTENT), - Map.of( - IDENTIFIER_KEY, DATE_FIELD, - STRING_VALUE, DATE_VALUE_CONTENT)); - - public static final List<Map<String, Object>> EMPTY_COMPONENT_LIST = List.of( - Map.of(IDENTIFIER_KEY, TEXT_FIELD, "needed", false)); - - public static final List<Map<String, Object>> NESTED_COMPONENT_LIST = List.of( - Map.of( - IDENTIFIER_KEY, GROUP_IDENTIFIER, - COMPONENTS, List.of(Map.of( - IDENTIFIER_KEY, DATE_FIELD, - STRING_VALUE, DATE_VALUE_CONTENT)))); - - public static final List<Map<String, Object>> PANEL_LIST = List.of(Map.of( - IDENTIFIER_KEY, PANEL_0, - COMPONENTS, COMPONENT_LIST)); - - public static final List<Map<String, Object>> PANEL_LIST_EMPTY = List.of(Map.of( - IDENTIFIER_KEY, PANEL_0, - COMPONENTS, EMPTY_COMPONENT_LIST)); - - public static final List<Map<String, Object>> NESTED_PANEL_LIST = List.of(Map.of( - IDENTIFIER_KEY, PANEL_0, - COMPONENTS, NESTED_COMPONENT_LIST)); - - public static final Map<String, Object> PANEL_FORM = Map.of( - ASSISTANT, Map.of( - IDENTIFIER_KEY, FORM, - PANELS, PANEL_LIST)); - - public static final Map<String, Object> NESTED_PANEL_FORM = Map.of( - ASSISTANT, Map.of( - IDENTIFIER_KEY, FORM, - PANELS, NESTED_PANEL_LIST)); - - public static final Map<String, Object> PANEL_FORM_EMPTY = Map.of( - ASSISTANT, Map.of( - IDENTIFIER_KEY, FORM, - PANELS, PANEL_LIST_EMPTY)); - - public static FormData create() { - return FormSolutionsPanelTestFactory.createBuilder().build(); - } - - public static FormData.FormDataBuilder createBuilder() { - return FormData.builder().formData(PANEL_FORM); - } -} diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsZustaendigeStelleMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsZustaendigeStelleMapperTest.java deleted file mode 100644 index bd31c421..00000000 --- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsZustaendigeStelleMapperTest.java +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.semantik.enginebased.formsolutions; - -import static de.ozgcloud.eingang.common.formdata.ZustaendigeStelleTestFactory.*; -import static de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsZustaendigeStelleMapper.*; -import static org.assertj.core.api.Assertions.*; - -import java.util.Map; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mockito.Spy; - -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; - -class FormSolutionsZustaendigeStelleMapperTest { - - @Spy - private final FormSolutionsZustaendigeStelleMapper mapper = new FormSolutionsZustaendigeStelleMapper(); - - @DisplayName("Parse formData") - @Nested - class TestParseFormData { - - private FormData formData; - - @BeforeEach - void setup() { - formData = FormDataTestFactory.createBuilder() - .formData(Map.of( - FormDataTestFactory.SIMPLE_VALUE_KEY, FormDataTestFactory.SIMPLE_VALUE, - FormSolutionsZustaendigeStelleMapper.ZUSTAENDIGE_STELLE, ORGANISATIONSEINHEIT_ID)) - .build(); - } - - @Test - void shouldParseFormData() { - var resultFormData = mapper.parseFormData(formData); - - assertThat(resultFormData.getZustaendigeStelles().getFirst().getOrganisationseinheitenId()).isEqualTo(ORGANISATIONSEINHEIT_ID); - assertThat(resultFormData.getFormData()).doesNotContainKey(ZUSTAENDIGE_STELLE); - } - - @Test - @DisplayName("should process ZustaendigeStelle data only") - void shouldNotChangeAnother() { - var resultFormData = mapper.parseFormData(formData); - - assertThat(resultFormData).usingRecursiveComparison().ignoringFields("zustaendigeStelles", "formData").isEqualTo(formData); - assertThat(resultFormData.getFormData()) - .containsAllEntriesOf(Map.of(FormDataTestFactory.SIMPLE_VALUE_KEY, FormDataTestFactory.SIMPLE_VALUE)); - } - - @DisplayName("build zustaendigeStelle") - @Nested - class TestBuildZustaendigeStelle { - - @Test - void shouldHaveOrganisationseinheitenId() { - var zustaendigeStelle = mapper.buildZustaendigeStelle(formData); - - assertThat(zustaendigeStelle.getOrganisationseinheitenId()).isEqualTo(ORGANISATIONSEINHEIT_ID); - } - } - - @DisplayName("remove processed data") - @Nested - class TestRemoveProcessedData { - - @Test - void shouldRemoveZustaendigeStelle() { - var cleanedFormData = mapper.removeProcessedData(formData); - - assertThat(cleanedFormData).doesNotContainKey(ZUSTAENDIGE_STELLE); - } - } - } -} \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/IdentifierValueParserTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/IdentifierValueParserTest.java deleted file mode 100644 index 5c47f250..00000000 --- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/IdentifierValueParserTest.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.semantik.enginebased.formsolutions; - -import static de.ozgcloud.eingang.common.formdata.AntragstellerTestFactory.*; -import static de.ozgcloud.eingang.common.formdata.FormDataTestFactory.*; -import static de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsAntragstellerMapper.*; -import static de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsEngineBasedAdapter.*; -import static de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsPanelMapper.*; -import static org.assertj.core.api.Assertions.*; - -import java.util.List; -import java.util.Map; - -import org.junit.jupiter.api.Test; - -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; -import de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsHeaderMapper; -import de.ozgcloud.eingang.semantik.enginebased.formsolutions.IdentifierValueParser; - -class IdentifierValueParserTest { - - private static final String ANTRAGSTELLER_NAME_PANEL_IDENTIFIER = "AS_Name1"; - private static final List<Map<String, Object>> ANTRAGSTELLER_PANEL_CONTENT_LIST = List.of( - Map.of(IDENTIFIER_KEY, ANTRAGSTELLER_NAME_PANEL_IDENTIFIER), - Map.of(COMPONENTS, List.of( - Map.of(IDENTIFIER_KEY, VORNAME_KEY, STRING_VALUE, VORNAME), - Map.of(IDENTIFIER_KEY, NACHNAME_KEY, STRING_VALUE, NACHNAME)))); - - private static final Map<String, Object> ASSISTANT_MAP = Map.of(PANELS, List.of( - Map.of(IDENTIFIER_KEY, ANTRAGSTELLER_PANEL_IDENTIFIER), Map.of(COMPONENTS, ANTRAGSTELLER_PANEL_CONTENT_LIST))); - - private FormData formData = FormDataTestFactory.createBuilder() - .formData(Map.of(SIMPLE_VALUE_KEY, SIMPLE_VALUE, - FormSolutionsHeaderMapper.POSTKORBHANDLE, POSTFACH_ID, ASSISTANT, ASSISTANT_MAP)) - .build(); - - @Test - void shoudParseData() { - var expectedMap = Map.of(VORNAME_KEY, VORNAME, NACHNAME_KEY, NACHNAME); - - var stringValueMap = IdentifierValueParser.parsePanelsData(formData); - - assertThat(stringValueMap).isEqualTo(expectedMap); - } - - @Test - void shouldHandleNullPanels() { - formData = FormDataTestFactory.createBuilder().formData(null).build(); - - var stringValueMap = IdentifierValueParser.parsePanelsData(formData); - - assertThat(stringValueMap).isEmpty(); - } - -} \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/formbased/FormBasedSemantikAdapterTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/formbased/FormBasedSemantikAdapterTest.java deleted file mode 100644 index 7cb39b39..00000000 --- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/formbased/FormBasedSemantikAdapterTest.java +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.semantik.formbased; - -import static org.assertj.core.api.Assertions.*; -import static org.mockito.ArgumentMatchers.*; -import static org.mockito.Mockito.*; - -import java.util.ArrayList; -import java.util.List; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.Spy; - -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; - -class FormBasedSemantikAdapterTest { - - @Spy - @InjectMocks - private FormBasedSemantikAdapter adapter; - @Spy - private List<FormBasedMapper> mappers = new ArrayList<>(); - @Mock - private FormBasedMapper mapper; - - @Nested - class TestParseFromData { - - private FormData formData = FormDataTestFactory.create(); - - @BeforeEach - void mockEngineBasedMapper() { - when(mapper.isResponsible(any())).thenReturn(true); - mappers.add(mapper); - } - - @Test - void shouldCallMapperIfResponsible() { - adapter.parseFormData(formData); - - verify(mapper).parseFormData(formData); - } - - @Test - void shouldNotCallMapperIfNotResponsible() { - when(mapper.isResponsible(any())).thenReturn(false); - - adapter.parseFormData(formData); - - verifyNoMoreInteractions(mapper); - } - - @Test - void shouldReturnMappingResult() { - var expected = FormDataTestFactory.create(); - when(mapper.parseFormData(any())).thenReturn(expected); - - var result = adapter.parseFormData(formData); - - assertThat(result).isSameAs(expected); - } - } -} diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/formbased/mantelantrag/MantelantragITCase.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/formbased/mantelantrag/MantelantragITCase.java deleted file mode 100644 index e80eeca2..00000000 --- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/formbased/mantelantrag/MantelantragITCase.java +++ /dev/null @@ -1,187 +0,0 @@ -package de.ozgcloud.eingang.semantik.formbased.mantelantrag; - -import static de.ozgcloud.eingang.common.formdata.FormDataTestFactory.*; -import static org.assertj.core.api.Assertions.*; -import static org.mockito.ArgumentMatchers.*; -import static org.mockito.Mockito.*; - -import java.io.File; -import java.nio.file.Files; -import java.nio.file.Path; -import java.util.Collections; -import java.util.List; -import java.util.Optional; - -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mockito.ArgumentCaptor; -import org.mockito.Captor; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.boot.test.mock.mockito.SpyBean; -import org.springframework.test.context.ActiveProfiles; -import org.springframework.test.context.DynamicPropertyRegistry; -import org.springframework.test.context.DynamicPropertySource; - -import de.ozgcloud.common.binaryfile.TempFileUtils; -import de.ozgcloud.common.test.TestUtils; -import de.ozgcloud.eingang.Application; -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory; -import de.ozgcloud.eingang.router.VorgangRemoteService; -import de.ozgcloud.eingang.semantik.SemantikAdapter; -import de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsEngineBasedAdapterITCase; -import lombok.SneakyThrows; - -@ActiveProfiles({ "local", "itcase" }) -@SpringBootTest(classes = Application.class) -public class MantelantragITCase { - - private static final String FILE_NAME_XDOMEA = "mantelantrag/4620-EH6C_b3c9168a-6ae9-4361-8b2f-6837bb341021_Geschaeftsgang.Geschaeftsgang.0201.xml"; - private static final String FILE_NAME_MANTELANTRAG = "mantelantrag/4620-EH6C_7d703670-15b6-42b2-8cd1-88a7e4c494b9_Antrag_Max_Mustermann_SGBXII.xml"; - - @MockBean - VorgangRemoteService vorgangRemoteService; - - @SpyBean - SemantikAdapter semantikAdapter; - - @Captor - ArgumentCaptor<FormData> formDataCaptor; - private FormData formData; - - @Captor - ArgumentCaptor<Optional<String>> oeIdCaptor; - - @Autowired - MantelantragZustaendigeStelleMapper mantelantragZustaendigeStelleMapper; - - static List<String> xtaIdentifiers = Collections.emptyList(); - - @BeforeEach - void mock() { - clearInvocations(vorgangRemoteService); - doReturn(VORGANG_ID).when(vorgangRemoteService).createVorgang(any(FormData.class), any()); - formData = prepareTestData(); - mantelantragZustaendigeStelleMapper.init(); - } - - @DynamicPropertySource - static void dynamicProperties(DynamicPropertyRegistry registry) { - registry.add("ozgcloud.xta.identifiers", () -> xtaIdentifiers); - } - - @DisplayName("without matching zustaendige stelle") - @Nested - class TestWithoutMatchingZustaendigeStelle { - - @BeforeAll - static void setup() { - xtaIdentifiers = List.of("afmsh:unknown"); - } - - @DisplayName("should create one vorgang") - @Test - void shouldCreateOneVorgang() { - semantikAdapter.processFormData(formData); - - verify(vorgangRemoteService, times(1)).createVorgang(formDataCaptor.capture(), oeIdCaptor.capture()); - assertThat(oeIdCaptor.getValue()).isEmpty(); - } - } - - @DisplayName("with one matching zustaendige stelle") - @Nested - class TestWithOneMatchingZustaendigeStelle { - @BeforeAll - static void setup() { - xtaIdentifiers = List.of("afmsh:ozg-cloud-utopia-test"); - } - - @DisplayName("should create one vorgang") - @Test - void shouldCreateOneVorgang() { - semantikAdapter.processFormData(formData); - - verify(vorgangRemoteService, times(1)).createVorgang(formDataCaptor.capture(), oeIdCaptor.capture()); - assertThat(oeIdCaptor.getValue()).contains("123"); - } - } - - @DisplayName("with two matching zustaendige stelle") - @Nested - class TestWithTwoMatchingZustaendigeStelle { - - @BeforeAll - static void setup() { - xtaIdentifiers = List.of("afmsh:ozg-cloud-utopia-test", "gae:ozg-cloud-itcase-test"); - } - - @DisplayName("should create two vorangs with partially matching zustaendigeStelle") - @Test - void shouldCreateTwoVorangsWithPartiallyMatchingZustaendigeStelle() { - semantikAdapter.processFormData(formData); - - verify(vorgangRemoteService, times(2)).createVorgang(formDataCaptor.capture(), oeIdCaptor.capture()); - assertThat(oeIdCaptor.getAllValues()).contains(Optional.of("123"), Optional.of("444")); - } - } - - @DisplayName("with three matching zustaendige stelles") - @Nested - class TestWithThreeMatchingZustaendigeStelles { - - @BeforeAll - static void setup() { - xtaIdentifiers = List.of("afmsh:ozg-cloud-utopia-test", "gae:ozg-cloud-itcase-test", "afmsh:ozg-cloud-bad-segeberg-kreis"); - } - - @DisplayName("should create three vorgangs") - @Test - void shouldCreateThreeVorgangs() { - semantikAdapter.processFormData(formData); - - verify(vorgangRemoteService, times(3)).createVorgang(formDataCaptor.capture(), oeIdCaptor.capture()); - assertThat(oeIdCaptor.getAllValues()).contains(Optional.of("123"), Optional.of("321"), Optional.of("444")); - } - } - - @DisplayName("should return first vorgangId") - @Test - void shouldReturnFirstVorgangId() { - var result = semantikAdapter.processFormData(formData); - - assertThat(result).isEqualTo(VORGANG_ID); - } - - private FormData prepareTestData() { - var xdomeaFile = IncomingFileTestFactory.createBuilder() - .name(FILE_NAME_XDOMEA) - .file(asFile(FILE_NAME_XDOMEA)) - .size(getFileSize(FILE_NAME_XDOMEA)) - .contentType("application/xml") - .build(); - var mantelantragFile = IncomingFileTestFactory.createBuilder() - .name(FILE_NAME_MANTELANTRAG) - .file(asFile(FILE_NAME_MANTELANTRAG)) - .size(getFileSize(FILE_NAME_MANTELANTRAG)) - .contentType("application/xml") - .build(); - - return FormData.builder().representations(List.of(xdomeaFile, mantelantragFile)).build(); - } - - @SneakyThrows - private long getFileSize(String fileName) { - Path filePath = Path.of(FormSolutionsEngineBasedAdapterITCase.class.getClassLoader().getResource(fileName).toURI()); - return Files.size(filePath); - } - - private File asFile(String path) { - return TempFileUtils.writeTmpFile(TestUtils.loadFile(path)); - } -} diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/formbased/mantelantrag/MantelantragZustaendigeStelleMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/formbased/mantelantrag/MantelantragZustaendigeStelleMapperTest.java deleted file mode 100644 index 782209df..00000000 --- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/formbased/mantelantrag/MantelantragZustaendigeStelleMapperTest.java +++ /dev/null @@ -1,381 +0,0 @@ -package de.ozgcloud.eingang.semantik.formbased.mantelantrag; - -import static de.ozgcloud.eingang.semantik.formbased.mantelantrag.MantelantragZustaendigeStelleMapper.*; -import static java.util.Collections.*; -import static org.assertj.core.api.Assertions.*; -import static org.mockito.Mockito.*; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.function.Function; -import java.util.stream.Stream; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.Arguments; -import org.junit.jupiter.params.provider.MethodSource; -import org.junit.jupiter.params.provider.ValueSource; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.Spy; - -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; -import de.ozgcloud.eingang.common.formdata.FormHeaderTestFactory; -import de.ozgcloud.eingang.common.formdata.ZustaendigeStelle; - -class MantelantragZustaendigeStelleMapperTest { - private static final String TARGET_OEID = "123456"; - private static final String IDENTIFIER = "gea:test"; - private static final String IDENTIFIER2 = "dfad:test"; - private static final String IDENTIFIER2UPPERCASE = "dfad:Test"; - private static final List<String> IDENTIFIERS = List.of(IDENTIFIER, IDENTIFIER2, "aa:other"); - - @Spy - @InjectMocks - private MantelantragZustaendigeStelleMapper mapper; - - @BeforeEach - void mock() { - doReturn(IDENTIFIERS).when(mapper).getIdentifierList(); - mapper.init(); - } - - @DisplayName("is responsible") - @Nested - class TestIsResponsible { - - @DisplayName("should be true if mantelantrag starts with form id") - @ParameterizedTest - @ValueSource(strings = { MANTELANTRAG_FORM_ID, MANTELANTRAG_FORM_ID + "_pvog" }) - void shouldBeTrueIfMantelantragStartsWithFormId(String formId) { - var formData = createWithFormId(formId); - - var isResponsibleResult = mapper.isResponsible(formData); - - assertThat(isResponsibleResult).isTrue(); - } - - @DisplayName("should be false if not mantelantrag form id") - @Test - void shouldBeFalseIfNotMantelantragFormId() { - var formData = createWithFormId("any other id"); - - var isResponsibleResult = mapper.isResponsible(formData); - - assertThat(isResponsibleResult).isFalse(); - } - - @DisplayName("should be false if header null") - @Test - void shouldBeFalseIfHeaderNull() { - var formData = FormDataTestFactory.createBuilder() - .header(null) - .build(); - - var isResponsibleResult = mapper.isResponsible(formData); - - assertThat(isResponsibleResult).isFalse(); - } - - @DisplayName("should be false if form id null") - @Test - void shouldBeFalseIfFormIdNull() { - var formData = FormDataTestFactory.createBuilder() - .header(FormHeaderTestFactory.createBuilder() - .formId(null) - .build()) - .build(); - - var isResponsibleResult = mapper.isResponsible(formData); - - assertThat(isResponsibleResult).isFalse(); - } - - private FormData createWithFormId(String formId) { - return FormDataTestFactory.createBuilder() - .header(FormHeaderTestFactory.createBuilder() - .formId(formId) - .build()) - .build(); - } - } - - @DisplayName("parse form data") - @Nested - class TestParseFormData { - - private FormData formData; - - @Mock - private ZustaendigeStelle zustaendigeStelle; - - @BeforeEach - void mock() { - formData = FormDataTestFactory.create(); - } - - @DisplayName("should override zustaendige stelles") - @Test - void shouldOverrideZustaendigeStelles() { - doReturn(List.of(zustaendigeStelle)).when(mapper).getZustaendigeStelles(formData); - - var result = mapper.parseFormData(formData); - - assertThat(result.getZustaendigeStelles()).containsExactly(zustaendigeStelle); - } - - @DisplayName("should keep other formdata fields") - @Test - void shouldKeepOtherFormdataFields() { - doReturn(formData.getZustaendigeStelles()).when(mapper).getZustaendigeStelles(formData); - - var result = mapper.parseFormData(formData); - - assertThat(result).usingRecursiveComparison().isEqualTo(formData); - } - } - - @DisplayName("get zustaendige stelles") - @Nested - class TestGetZustaendigeStelles { - - private FormData formData; - - @Mock - private Map<String, Object> fieldMap; - - @Mock - private ZustaendigeStelle stelle1; - - @Mock - private ZustaendigeStelle stelle2; - - @Mock - private ZustaendigeStelle stelle3; - - @BeforeEach - void mock() { - formData = FormDataTestFactory.createBuilder() - .formData(fieldMap) - .build(); - } - - @DisplayName("should return") - @Test - void shouldReturn() { - doReturn(emptyList()).when(mapper).getMatchingSlots(fieldMap); - - var result = mapper.getZustaendigeStelles(formData); - - assertThat(result).isEmpty(); - } - - @DisplayName("should log error for no matching identifiers") - @Test - void shouldLogErrorForNoMatchingIdentifiers() { - doReturn(emptyList()).when(mapper).getMatchingSlots(fieldMap); - - mapper.getZustaendigeStelles(formData); - - verify(mapper).logErrorForNoMatchingIdentifiers(); - } - - @DisplayName("should return with three zustaendige stelle") - @Test - void shouldReturnWithThreeZustaendigeStelle() { - doReturn(List.of(0, 1, 2)).when(mapper).getMatchingSlots(fieldMap); - doReturn(stelle1).when(mapper).getZustaendigeStelle(fieldMap, 0); - doReturn(stelle2).when(mapper).getZustaendigeStelle(fieldMap, 1); - doReturn(stelle3).when(mapper).getZustaendigeStelle(fieldMap, 2); - - var result = mapper.getZustaendigeStelles(formData); - - assertThat(result).containsExactly(stelle1, stelle2, stelle3); - } - } - - @DisplayName("get zustaendige stelle") - @Nested - class TestGetZustaendigeStelle { - - static final Map<String, Function<ZustaendigeStelle, String>> FIELD_NAME_TO_EXPECTED_VALUE_EXTRACTOR = Map.of( - BEZEICHNUNG_FIELD, ZustaendigeStelle::getBezeichnung, - EMAIL_FIELD, ZustaendigeStelle::getEmail, - HAUSANSCHRIFT_STRASSE_FIELD, ZustaendigeStelle::getHausanschriftStrasse, - HAUSANSCHRIFT_PLZ_FIELD, ZustaendigeStelle::getHausanschriftPlz, - HAUSANSCHRIFT_ORT_FIELD, ZustaendigeStelle::getHausanschriftOrt, - TELEFON_FIELD, ZustaendigeStelle::getTelefon - ); - private Map<String, Object> fieldMap; - - @BeforeEach - void mock() { - fieldMap = new HashMap<>(Map.of( - getOrganisationseinheitIDFieldName(1), " ", - getOrganisationseinheitIDFieldName(2), "", - getOrganisationseinheitIDFieldName(10), "1111111" - )); - } - - @DisplayName("should map organisationseinheitId") - @ParameterizedTest - @ValueSource(ints = { 0, 1, 2 }) - void shouldMapOrganisationseinheitId(int slotIndex) { - mockWithOEID(slotIndex, TARGET_OEID); - - var zustaendigeStelle = getZustaendigeStelle(slotIndex); - - assertThat(zustaendigeStelle.getOrganisationseinheitenId()).isEqualTo(TARGET_OEID); - } - - private String getOrganisationseinheitIDFieldName(int slotIndex) { - return mapper.getNameForSlotIndex(ORGANISATIONSEINHEIT_ID_FIELD, slotIndex); - } - - @DisplayName("should log warning if organistaionseinheitId is missing") - @ParameterizedTest - @ValueSource(ints = { 0, 1, 2 }) - void shouldLogWarningIfOrganistaionseinheitIdIsMissing(int slotIndex) { - getZustaendigeStelle(slotIndex); - - verify(mapper).logWarningForEmptyOrganisationseinheitId(slotIndex); - } - - @DisplayName("should map optional field") - @ParameterizedTest - @MethodSource("generateFieldNameAndSlotIndex") - void shouldMapOptionalField(int slotIndex, String fieldName) { - mockWithSomeOEID(slotIndex); - var optionalFieldValue = "value of '%s'".formatted(fieldName); - fieldMap.put(mapper.getNameForSlotIndex(fieldName, slotIndex), optionalFieldValue); - - var zustaendigeStelle = getZustaendigeStelle(slotIndex); - - assertThat(getExpectedValueByFieldName(zustaendigeStelle, fieldName)).isEqualTo(optionalFieldValue); - } - - @DisplayName("should map missing optional fields to empty") - @ParameterizedTest - @MethodSource("generateFieldNameAndSlotIndex") - void shouldMapMissingOptionalFieldsToEmpty(int slotIndex, String fieldName) { - mockWithSomeOEID(slotIndex); - - var zustaendigeStelle = getZustaendigeStelle(slotIndex); - - assertThat(getExpectedValueByFieldName(zustaendigeStelle, fieldName)).isEmpty(); - } - - @DisplayName("should map empty optional fields to empty") - @ParameterizedTest - @MethodSource("generateFieldNameAndSlotIndex") - void shouldMapEmptyOptionalFieldsToEmpty(int slotIndex, String fieldName) { - mockWithSomeOEID(slotIndex); - fieldMap.put(mapper.getNameForSlotIndex(fieldName, slotIndex), ""); - - var zustaendigeStelle = getZustaendigeStelle(slotIndex); - - assertThat(getExpectedValueByFieldName(zustaendigeStelle, fieldName)).isEmpty(); - } - - private static Stream<Arguments> generateFieldNameAndSlotIndex() { - return Stream.of(0, 1, 2) - .flatMap(slotIndex -> FIELD_NAME_TO_EXPECTED_VALUE_EXTRACTOR - .keySet().stream() - .map(fieldName -> Arguments.of(slotIndex, fieldName)) - ); - } - - private String getExpectedValueByFieldName(ZustaendigeStelle zustaendigeStelle, String fieldName) { - var valueExtractor = FIELD_NAME_TO_EXPECTED_VALUE_EXTRACTOR.get(fieldName); - return valueExtractor.apply(zustaendigeStelle); - } - - private void mockWithSomeOEID(int slotIndex) { - mockWithOEID(slotIndex, "some"); - } - - private void mockWithOEID(int slotIndex, String targetOeid) { - fieldMap.put(getOrganisationseinheitIDFieldName(slotIndex), targetOeid); - } - - private ZustaendigeStelle getZustaendigeStelle(int slotIndex) { - return mapper.getZustaendigeStelle(fieldMap, slotIndex); - } - - } - - @DisplayName("get matching slots") - @Nested - class TestGetMatchingSlots { - - private Map<String, Object> fieldMap; - - @BeforeEach - void mock() { - fieldMap = new HashMap<>(Map.of( - getZustaendigeStelleName(1), "unknown", - getZustaendigeStelleName(2), "" - )); - } - - @DisplayName("should return empty") - @Test - void shouldReturnEmpty() { - var resultSlotIndices = mapper.getMatchingSlots(fieldMap); - - assertThat(resultSlotIndices).isEmpty(); - } - - @DisplayName("should return matching slots") - @ParameterizedTest - @ValueSource(ints = { 0, 1, 2 }) - void shouldReturnMatchingSlot(int slotIndex) { - fieldMap.put(getZustaendigeStelleName(slotIndex), IDENTIFIER); - - var resultSlotIndices = mapper.getMatchingSlots(fieldMap); - - assertThat(resultSlotIndices).containsExactly(slotIndex); - } - - @DisplayName("should return matching slot with upper-/lowercase difference in identifiers") - @ParameterizedTest - @ValueSource(ints = { 0, 1, 2 }) - void shouldReturnMatchingSlotWithUppercaseIdentifier(int slotIndex) { - fieldMap.put(getZustaendigeStelleName(slotIndex), IDENTIFIER2UPPERCASE); - - var resultSlotIndex = mapper.getMatchingSlots(fieldMap); - - assertThat(resultSlotIndex).containsExactly(slotIndex); - } - - private String getZustaendigeStelleName(int slotIndex) { - return mapper.getNameForSlotIndex(ZUSTELLUNG_NACHRICHTENBROKER_FIELD, slotIndex); - } - } - - @DisplayName("get name for slot index") - @Nested - class TestGetNameForSlotIndex { - private static Stream<Arguments> nameAndSlotIndexAndExpected() { - return Stream.of( - Arguments.of("name", 0, "name"), - Arguments.of("name", 1, "name2"), - Arguments.of("name", 2, "name3") - ); - } - - @DisplayName("should return name") - @ParameterizedTest - @MethodSource("nameAndSlotIndexAndExpected") - void shouldReturnName(String name, int slotIndex, String expected) { - var resultName = mapper.getNameForSlotIndex(name, slotIndex); - - assertThat(resultName).isEqualTo(expected); - } - } -} diff --git a/semantik-adapter/src/test/resources/A12/a12FormData.json b/semantik-adapter/src/test/resources/A12/a12FormData.json deleted file mode 100644 index 5b939783..00000000 --- a/semantik-adapter/src/test/resources/A12/a12FormData.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "root": { - "Haushaltsjahr": "2024", - "Anlage_2": { - "Finanzierungsplan": { - "Insgesamt_Finanzierungsplan": 117450, - "Eigenmittel_von_Hundert": 1.5, - "Erlaeuterungen_Finanzierungsplan": "Das passt doch schon so.", - "Zuwendung_kommunale": { - "Gemeinden": "Eselstadt", - "Zuwendung_Gemeinden": 100000 - } - } - } - } -} \ No newline at end of file diff --git a/semantik-adapter/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension b/semantik-adapter/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension deleted file mode 100644 index 79b126e6..00000000 --- a/semantik-adapter/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension +++ /dev/null @@ -1 +0,0 @@ -org.mockito.junit.jupiter.MockitoExtension \ No newline at end of file diff --git a/semantik-adapter/src/test/resources/attachment-1file.zip b/semantik-adapter/src/test/resources/attachment-1file.zip deleted file mode 100644 index 1bde2108dcd8ce6edf4d1afe2c221ededc9915a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 291 zcmWIWW@Zs#U|`^2h>org+4m&9yO4o_VJ-s$10RD7Lse#hZdztes;+@vNkvI$2qy#c z-D1}ymC}RBr4`%^j4WRn85qF&ea{}`JnX>Za&h<S8B9J}p2A(KJqfC7%T=3qpLf#R z$#?kodx@kAcBc<qOiIXV@+mqlXs4>0-FxJ9@rwBqmRXkhByN~=@bGE54nA(TuCJ{t z?w@+v>1Fb34TnlSW8=k_ELl}oH#101slO+?wn}X8wzu2?-i%Cg%($E`!2kk`3=9lQ h8bK^{kFY{Kg64?;Z&o&tYDNY|h7bk@hMgb|0{{)1T5<pY diff --git a/semantik-adapter/src/test/resources/attachment-2files.zip b/semantik-adapter/src/test/resources/attachment-2files.zip deleted file mode 100644 index 1cd6370639e85040002e6b17df7dc2c36b877673..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3260 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 ZYN%tF$;t+D0TTlg!wLolhJV~39soeH{H_21 diff --git a/semantik-adapter/src/test/resources/attachment-empty.zip b/semantik-adapter/src/test/resources/attachment-empty.zip deleted file mode 100644 index c429aa655987d9210d6fb3c7aa5bfd36e60552ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 174 zcmWIWW@Zs#0D&p9jlw`Q46`vPFr?-dlvL`6hVU}5M_Qdo2H|L{6Un6&+zgB?Ul|z~ nz<L9`8JR?wahn1&@vS3>MXZ^uY#`N)42%pR3=9k|APxfn8`~Ug diff --git a/semantik-adapter/src/test/resources/attachment-encrypted.zip b/semantik-adapter/src/test/resources/attachment-encrypted.zip deleted file mode 100644 index b144825f7836af85657e3abd26fa87da9ec92747..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 308 zcmWIWW@Zs#;AG%n$cb(YDN`}KR>Q!+Fo%JGfs;Xop*S}&Cr7WOq9inglYzPBs9O>U zmsW5yFtQ}&Byh7ZG9_?7Wm}>CcW&o3TOl#o+Jg!!rX;##r!Y(j*vjGk|K;b88}qmp z&bSow?e_=cwI{eVs?NmyY`nL4kE_1S(%1V8cGlZ%e=WIAtYMj%xof`Hn#+klriG;# zZ`i32pPl)dvuFK;SMSfgJD{$3c0%^L-^-o^OC7v_Y~9hM?xW&*8zWT%yxBRB9Ub7! w$Rx*%%R>?jAi&7Lz_6qd#6t2OE5v(fUJLMMWdkW>WME|QXJBAB58^NY0GLZ<$N&HU diff --git a/semantik-adapter/src/test/resources/behoerde_metadata.xml b/semantik-adapter/src/test/resources/behoerde_metadata.xml deleted file mode 100644 index 66b1f000..00000000 --- a/semantik-adapter/src/test/resources/behoerde_metadata.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<data xmlns="http://xmlns.cit.de/assistants/store" name="myForm" class="de.cit.assistants.DataBean"> - <field type="string" readonly="true" name="behoerde_anzeige_name">Landratsamt XYZ (Testbehörde für BDA)</field> - <field type="string" readonly="true" name="behoerde_caller_id">87331322433</field> - <field type="string" readonly="true" name="behoerde_pki_email"></field> - <field type="string" readonly="true" name="behoerde_link"> - https://redesign.bayernportal.bayern.de/dokumente/behoerde/87331322433</field> - <field type="string" readonly="true" name="behoerde_sicherer_kontakt_link"></field> - <field type="string" readonly="true" name="behoerde_postkorb_eakte"></field> - <field type="string" readonly="true" name="behoerde_organisationseinheit_eakte"></field> - <field type="string" readonly="true" name="gemeinde_schluessel_bp">09189155</field> - <field type="string" readonly="true" name="amtlicher_regionalschluessel">091890000000</field> - <field type="string" readonly="true" name="behoerde_email">poststelle@testbehoerde.bayern</field> - <field type="string" readonly="true" name="behoerde_telefon">+49 123 45-0</field> - <field type="string" readonly="true" name="behoerde_telefax">+49 12 45-7</field> - <field type="string" readonly="true" name="behoerde_hausanschrift_strasse">Teststraße 1</field> - <field type="string" readonly="true" name="behoerde_hausanschrift_plz">12345</field> - <field type="string" readonly="true" name="behoerde_hausanschrift_ort">Musterstadt</field> - <field type="string" readonly="true" name="behoerde_safeId"></field> - <field type="string" readonly="true" name="dvdv_praefix">bab</field> - <field type="string" readonly="true" name="dvdv_kennung">09189</field> -</data> \ No newline at end of file diff --git a/semantik-adapter/src/test/resources/eingang.pdf b/semantik-adapter/src/test/resources/eingang.pdf deleted file mode 100644 index 1107550f6d33553de96634c3765aaf787e21e07c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50962 zcmY!laB<T$)HC5yz5M0OLoP!F1BLvgEG`=xE`8^s)Wnj^{5+S$l2io^7b_zJBNGD) zLlZ+oLjwa-Z38290|RwUF8z?qlAKfp8#h-sHv<DxM*{<MQv(BYV*>*-Ljwad7brG0 zFfem9FfcQNh=b(87$$CR2emQ32yT{vfq{vMfq{t`)I1BQULykoa{~hdBLf2iV?zT2 zBUb|hV^aeIV~`k#Z31C~_#kWqas$Y2kh@GEW|^CS%;JJN3d}JuFgG$VFf)M|Yy`5* z!oUEe5R45V8jT$d42;|$*v#C(z|0b&#tftu<QXG~gUmny;0Ch51)>=2TV&foiY*Nc zz=nWa2GR%$K?8^*Kp|xcG6duhLx|%*zBU1gxk315rd$RFMwWJ5`T<4xDW%D&MG6`L zE^fsciA4nphI*z3dL{-22D*8vCB-F)c`1oSDGD(f86_nJ#a8<I>6s-NrAd0p`MLVV zCB-GFndzxT`T;3v!64nv`9-NQnwng8c3i1>DWD`_gp@QwDhpB-^qmt+5_9s?x%2}P z(^HETj1>$Nf{-+T_#lm-v;@%rR>!69oL`z(qF~6S@12=atPpJi(ie-Q5hQ@AkxSn< zH6=6ADZfG?+CafT!PL@J!NSBS7G!-<YF-J{etqZsypq(sl46BuQ;@+5hEU23!ZU|Z z79c8?OFt;JIKQ+gIkgy^<O7QGlY>)B6r%M5T-@|SQY%XIJ#!P&Q=K4`GlcSt<<fVp zC~*%iNi0bP>vIn_Pyn0HrSBeWs9<ObG9Bb2eYgC)60j0C0|i5nvxB(w-3%2BL4E`W zmYp4!zI#!AX#rT3bFhNGOKMqWa%zyf6PJFlf__L*VqS4UVo_>dawW(_M1+9+1q&vh z)V%bP3<YBgOD=u4%$$<cA_aZ7oWzn;m(=9^lvI$$;*z4	Xe5IctNxvzQHe?*10p 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 S0ht;Yn^|zFs=E5SaRC651|oX^ diff --git a/semantik-adapter/src/test/resources/formsolutions/attachment-2files.zip b/semantik-adapter/src/test/resources/formsolutions/attachment-2files.zip deleted file mode 100644 index 1cd6370639e85040002e6b17df7dc2c36b877673..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3260 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 ZYN%tF$;t+D0TTlg!wLolhJV~39soeH{H_21 diff --git a/semantik-adapter/src/test/resources/formsolutions001.json b/semantik-adapter/src/test/resources/formsolutions001.json deleted file mode 100644 index c3587b8e..00000000 --- a/semantik-adapter/src/test/resources/formsolutions001.json +++ /dev/null @@ -1,211 +0,0 @@ -{ - "assistant": { - "i18n": { - "i18nItems": { - "de": "KFAS_KOP_TEST" - } - }, - "identifier": "KFAS_KOP_TEST", - "panels": [ - { - "identifier": "Antragstellende Person", - "components": [ - { - "identifier": "AS_Name1", - "needed": true, - "components": [ - { - "identifier": "AS_Name1", - "needed": true, - "components": [ - { - "identifier": "AS_Vorname", - "needed": true, - "stringValue": "OZG-Cloud" - }, - { - "identifier": "AS_Name", - "needed": true, - "stringValue": "Team" - }, - { - "identifier": "AS_Rufname", - "needed": true - }, - { - "identifier": "AS_Ordensname_Kuenstlername", - "needed": true - } - ] - } - ] - }, - { - "identifier": "AS_Adresse", - "needed": true, - "components": [ - { - "identifier": "AS_Adresse", - "needed": true, - "components": [ - { - "identifier": "Adresse", - "needed": true, - "components": [ - { - "identifier": "staat", - "needed": true, - "components": [ - { - "identifier": "staat", - "needed": true, - "stringValue": "DE" - } - ] - }, - { - "identifier": "AS_PLZ", - "needed": true, - "stringValue": "12345" - }, - { - "identifier": "AS_Ort", - "needed": true, - "stringValue": "Kiel" - }, - { - "identifier": "Bundesland", - "needed": true - }, - { - "identifier": "AS_Strasse", - "needed": true, - "stringValue": "Hauptstra?e" - }, - { - "identifier": "AS_Hausnummer", - "needed": true - } - ] - } - ] - } - ] - }, - { - "identifier": "AS_Kontaktdaten", - "needed": true, - "components": [ - { - "identifier": "AS_Kontaktdaten", - "needed": true, - "components": [ - { - "identifier": "AS_Telefon", - "needed": true - }, - { - "identifier": "AS_E-Mail", - "needed": true, - "stringValue": "noreply@ozg-sh.de" - }, - { - "identifier": "AS_Fax", - "needed": true - }, - { - "identifier": "ofsXX1_from_smail3", - "needed": true, - "stringValue": "noreply@ozg-sh.de" - } - ] - } - ] - } - ], - "needed": true - }, - { - "identifier": "Panel_0", - "components": [ - { - "identifier": "1208_Hund Grunddaten", - "needed": true, - "components": [ - { - "identifier": "1208_Hund Grunddaten", - "needed": true, - "components": [ - { - "identifier": "Hund_Name", - "needed": true, - "stringValue": "Hasso" - }, - { - "identifier": "Hund_Rasse", - "needed": true, - "stringValue": "Sch?ferhund" - }, - { - "identifier": "Hund_Geschlecht", - "needed": true, - "stringValue": "weiblich" - }, - { - "identifier": "Kastration", - "needed": true, - "stringValue": "nein" - }, - { - "identifier": "Hund_Geburtdatum", - "needed": true - }, - { - "identifier": "Hund_Alter", - "needed": true, - "stringValue": "5" - }, - { - "identifier": "Hund_ChipNr", - "needed": true, - "stringValue": "123456789123456" - }, - { - "identifier": "Hund_Taetowierungsnr", - "needed": false - }, - { - "needed": true - }, - { - "identifier": "Hund_Fellfarbe", - "needed": true, - "stringValue": "hell" - }, - { - "identifier": "Hund_Groesse", - "needed": true, - "stringValue": "40" - }, - { - "identifier": "Hund_Gewicht", - "needed": true, - "stringValue": "15" - } - ] - } - ] - } - ], - "needed": true - } - ] - }, - "transactionId": "KFAS_KOP_TEST-yCkgCdqG", - "pdf": "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ZW5kb2JqCjI5IDAgb2JqCjw8L0NvbG9yU3BhY2UvRGV2aWNlR3JheS9TdWJ0eXBlL0ltYWdlL0hlaWdodCAxOS9GaWx0ZXIvRmxhdGVEZWNvZGUvVHlwZS9YT2JqZWN0L1dpZHRoIDE5L0xlbmd0aCAxMzIvQml0c1BlckNvbXBvbmVudCA4Pj5zdHJlYW0KeJxl0AENwCAMBMCXUAmTgAQkTMIkTEIdIGESkDAJSJgEJHQtDEKzTyDhUlqCyD83+9wijCVEYE+HSPQUtA97KiJ1c5S06HS9oo3HSvTYtU6Uc1DKWrSjk64asKtkfGSHulXdaFCbZImYhKtJwkLNCjmycQGeqMwX8/ivtP7XPy90XasiCmVuZHN0cmVhbQplbmRvYmoKMzAgMCBvYmoKPDwvQ29sb3JTcGFjZS9EZXZpY2VSR0IvU3VidHlwZS9JbWFnZS9IZWlnaHQgMTkvRmlsdGVyL0ZsYXRlRGVjb2RlL1R5cGUvWE9iamVjdC9XaWR0aCAxOS9TTWFzayAyOSAwIFIvTGVuZ3RoIDE4L0JpdHNQZXJDb21wb25lbnQgOD4+c3RyZWFtCnicY2AYBaNgFIwCkgEABDsAAQplbmRzdHJlYW0KZW5kb2JqCjMxIDAgb2JqCjw8L0NvbG9yU3BhY2UvRGV2aWNlR3JheS9TdWJ0eXBlL0ltYWdlL0hlaWdodCAxOS9GaWx0ZXIvRmxhdGVEZWNvZGUvVHlwZS9YT2JqZWN0L1dpZHRoIDE5L0xlbmd0aCAzMS9CaXRzUGVyQ29tcG9uZW50IDg+PnN0cmVhbQp4nPv/HxPsb0AF+///b2BABQ2jQgghLOGFCQANA2i1CmVuZHN0cmVhbQplbmRvYmoKMzIgMCBvYmoKPDwvQ29sb3JTcGFjZS9EZXZpY2VSR0IvU3VidHlwZS9JbWFnZS9IZWlnaHQgMTkvRmlsdGVyL0ZsYXRlRGVjb2RlL1R5cGUvWE9iamVjdC9XaWR0aCAxOS9TTWFzayAzMSAwIFIvTGVuZ3RoIDE4L0JpdHNQZXJDb21wb25lbnQgOD4+c3RyZWFtCnicY2AYBaNgFIwCkgEABDsAAQplbmRzdHJlYW0KZW5kb2JqCjMzIDAgb2JqCjw8L0NvbG9yU3BhY2UvRGV2aWNlR3JheS9TdWJ0eXBlL0ltYWdlL0hlaWdodCAxOS9GaWx0ZXIvRmxhdGVEZWNvZGUvVHlwZS9YT2JqZWN0L1dpZHRoIDE5L0xlbmd0aCAzMS9CaXRzUGVyQ29tcG9uZW50IDg+PnN0cmVhbQp4nPv/HxPsb0AF+///b2BABQ2jQgghLOGFCQANA2i1CmVuZHN0cmVhbQplbmRvYmoKMzQgMCBvYmoKPDwvQ29sb3JTcGFjZS9EZXZpY2VSR0IvU3VidHlwZS9JbWFnZS9IZWlnaHQgMTkvRmlsdGVyL0ZsYXRlRGVjb2RlL1R5cGUvWE9iamVjdC9XaWR0aCAxOS9TTWFzayAzMyAwIFIvTGVuZ3RoIDE4L0JpdHNQZXJDb21wb25lbnQgOD4+c3RyZWFtCnicY2AYBaNgFIwCkgEABDsAAQplbmRzdHJlYW0KZW5kb2JqCjM1IDAgb2JqCjw8L0NvbG9yU3BhY2UvRGV2aWNlR3JheS9TdWJ0eXBlL0ltYWdlL0hlaWdodCAxOS9GaWx0ZXIvRmxhdGVEZWNvZGUvVHlwZS9YT2JqZWN0L1dpZHRoIDE5L0xlbmd0aCAxMzIvQml0c1BlckNvbXBvbmVudCA4Pj5zdHJlYW0KeJxl0AENwCAMBMCXUAmTgAQkTMIkTEIdIGESkDAJSJgEJHQtDEKzTyDhUlqCyD83+9wijCVEYE+HSPQUtA97KiJ1c5S06HS9oo3HSvTYtU6Uc1DKWrSjk64asKtkfGSHulXdaFCbZImYhKtJwkLNCjmycQGeqMwX8/ivtP7XPy90XasiCmVuZHN0cmVhbQplbmRvYmoKMzYgMCBvYmoKPDwvQ29sb3JTcGFjZS9EZXZpY2VSR0IvU3VidHlwZS9JbWFnZS9IZWlnaHQgMTkvRmlsdGVyL0ZsYXRlRGVjb2RlL1R5cGUvWE9iamVjdC9XaWR0aCAxOS9TTWFzayAzNSAwIFIvTGVuZ3RoIDE4L0JpdHNQZXJDb21wb25lbnQgOD4+c3RyZWFtCnicY2AYBaNgFIwCkgEABDsAAQplbmRzdHJlYW0KZW5kb2JqCjM3IDAgb2JqCjw8L1N1YnR5cGUvRm9ybS9GaWx0ZXIvRmxhdGVEZWNvZGUvVHlwZS9YT2JqZWN0L01hdHJpeFsxIDAgMCAxIDAgMF0vRm9ybVR5cGUgMS9SZXNvdXJjZXM8PC9Gb250PDwvSGVsdiAx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bHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAxMSAwIFI+Pi9GZiAwPj4KZW5kb2JqCjQ5IDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoZmlsZVVybCkvVHlwZS9Bbm5vdC9WKGh0dHBzJTNBJTJGJTJGa3VuZGVudGVzdC5mb3JtLXNvbHV0aW9ucy5kZSUyRm1ldGFmb3JtJTJGRm9ybS1Tb2x1dGlvbnMlMkZzaWQlMkZhc3Npc3RhbnQlMkY2MWIyMDhlODY2ZGExMjM2NDRjOTdlNTYlM0ZhbmxpZWdlbklkJTNEMTIzNCUyNm9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5JRCUzRDkwMzAyMjklMjZrb21tdW5hbHZlcndhbHR1bmdJZCUzRDEwMDAwMDAwMCUyNmNvbnNlbnRDb21wbGV0ZSUzRHRydWUlMjZjYWNoZUlEJTNENGZiNmI2ZTAtMGYxYy00OTcwLWI5ZWQtZGJmMjQyZDMzM2Y5JTI2Y2l0aXplblBvcnRhbExvZ2luU3VjY2VzcyUzRHRydWUpL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAxMiAwIFI+Pi9GZiAwPj4KZW5kb2JqCjUwIDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoQVNfVm9ybmFtZSkvVHlwZS9Bbm5vdC9WKFN1c2FubmUpL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAxNSAwIFI+Pi9GZiAwPj4KZW5kb2JqCjUxIDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoQVNfTmFtZSkvVHlwZS9Bbm5vdC9WKEZpc2NoZXIpL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAxNiAwIFI+Pi9GZiAwPj4KZW5kb2JqCjUyIDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoQVNfUnVmbmFtZSkvVHlwZS9Bbm5vdC9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gMTcgMCBSPj4vRmYgMD4+CmVuZG9iago1MyAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKEFTX09yZGVuc25hbWVfS3VlbnN0bGVybmFtZSkvVHlwZS9Bbm5vdC9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gMTggMCBSPj4vRmYgMD4+CmVuZG9iago1NCAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKHN0YWF0KS9UeXBlL0Fubm90L1YoREUpL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAxOSAwIFI+Pi9GZiAwPj4KZW5kb2JqCjU1IDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoQVNfUExaKS9UeXBlL0Fubm90L1YoMTIzNDUpL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAyMCAwIFI+Pi9GZiAwPj4KZW5kb2JqCjU2IDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoQVNfT3J0KS9UeXBlL0Fubm90L1YoS2llbCkvRiA2L0RBKC9IZWx2IDAgVGYgMCBnICkvRlQvVHgvRFI8PC9Gb250PDwvSGVsdiAxMCAwIFI+Pj4+L1JlY3RbMCAwIDAgMF0vQVA8PC9OIDIxIDAgUj4+L0ZmIDA+PgplbmRvYmoKNTcgMCBvYmoKPDwvQlM8PC9TL1MvVyAxPj4vU3VidHlwZS9XaWRnZXQvVChCdW5kZXNsYW5kKS9UeXBlL0Fubm90L0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAyMiAwIFI+Pi9GZiAwPj4KZW5kb2JqCjU4IDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoQVNfU3RyYXNzZSkvVHlwZS9Bbm5vdC9WKEhhdXB0c3RyYd9lKS9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gMjMgMCBSPj4vRmYgMD4+CmVuZG9iago1OSAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKEFTX0hhdXNudW1tZXIpL1R5cGUvQW5ub3QvRiA2L0RBKC9IZWx2IDAgVGYgMCBnICkvRlQvVHgvRFI8PC9Gb250PDwvSGVsdiAxMCAwIFI+Pj4+L1JlY3RbMCAwIDAgMF0vQVA8PC9OIDI0IDAgUj4+L0ZmIDA+PgplbmRvYmoKNjAgMCBvYmoKPDwvQlM8PC9TL1MvVyAxPj4vU3VidHlwZS9XaWRnZXQvVChBU19UZWxlZm9uKS9UeXBlL0Fubm90L0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAyNSAwIFI+Pi9GZiAwPj4KZW5kb2JqCjYxIDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoQVNfRS1NYWlsKS9UeXBlL0Fubm90L1Yobm9yZXBseUBvemctc2guZGU=KS9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gMjYgMCBSPj4vRmYgMD4+CmVuZG9iago2MiAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKEFTX0ZheCkvVHlwZS9Bbm5vdC9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gMjcgMCBSPj4vRmYgMD4+CmVuZG9iago2MyAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKG9mc1hYMV9mcm9tX3NtYWlsMykvVHlwZS9Bbm5vdC9WKHN1c2FubmUuZmlzY2hlckBkYXRhcG9ydC5kZSkvRiA2L0RBKC9IZWx2IDAgVGYgMCBnICkvRlQvVHgvRFI8PC9Gb250PDwvSGVsdiAxMCAwIFI+Pj4+L1JlY3RbMCAwIDAgMF0vQVA8PC9OIDI4IDAgUj4+L0ZmIDA+PgplbmRvYmoKNjQgMCBvYmoKPDwvQlM8PC9TL1MvVyAxPj4vU3VidHlwZS9XaWRnZXQvVChIdW5kX05hbWUpL1R5cGUvQW5ub3QvVihIYXNzbykvRiA2L0RBKC9IZWx2IDAgVGYgMCBnICkvRlQvVHgvRFI8PC9Gb250PDwvSGVsdiAxMCAwIFI+Pj4+L1JlY3RbMCAwIDAgMF0vQVA8PC9OIDM3IDAgUj4+L0ZmIDA+PgplbmRvYmoKNjUgMCBvYmoKPDwvQlM8PC9TL1MvVyAxPj4vU3VidHlwZS9XaWRnZXQvVChIdW5kX1Jhc3NlKS9UeXBlL0Fubm90L1YoU2No5GZlcmh1bmQpL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAzOCAwIFI+Pi9GZiAwPj4KZW5kb2JqCjY2IDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoSHVuZF9HZXNjaGxlY2h0KS9UeXBlL0Fubm90L1Yod2VpYmxpY2gpL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAzOSAwIFI+Pi9GZiAwPj4KZW5kb2JqCjY3IDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoS2FzdHJhdGlvbikvVHlwZS9Bbm5vdC9WKG5laW4pL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiA0MCAwIFI+Pi9GZiAwPj4KZW5kb2JqCjY4IDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoSHVuZF9HZWJ1cnRkYXR1bSkvVHlwZS9Bbm5vdC9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gNDEgMCBSPj4vRmYgMD4+CmVuZG9iago2OSAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKEh1bmRfQWx0ZXIpL1R5cGUvQW5ub3QvVig1KS9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gNDIgMCBSPj4vRmYgMD4+CmVuZG9iago3MCAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKEh1bmRfQ2hpcE5yKS9UeXBlL0Fubm90L1YoMTIzNDU2Nzg5MTIzNDU2KS9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gNDMgMCBSPj4vRmYgMD4+CmVuZG9iago3MSAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKEh1bmRfRmVsbGZhcmJlKS9U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ZWxkc1s0NyAwIFIgNDggMCBSIDQ5IDAgUiA1MCAwIFIgNTEgMCBSIDUyIDAgUiA1MyAwIFIgNTQgMCBSIDU1IDAgUiA1NiAwIFIgNTcgMCBSIDU4IDAgUiA1OSAwIFIgNjAgMCBSIDYxIDAgUiA2MiAwIFIgNjMgMCBSIDY0IDAgUiA2NSAwIFIgNjYgMCBSIDY3IDAgUiA2OCAwIFIgNjkgMCBSIDcwIDAgUiA3MSAwIFIgNzIgMCBSIDczIDAgUl0vREEoL0hlbHYgMCBUZiAwIGcgKS9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4+PgplbmRvYmoKODMgMCBvYmoKPDwvVHlwZS9DYXRhbG9nL0Fjcm9Gb3JtIDgyIDAgUi9QYWdlcyA3NSAwIFI+PgplbmRvYmoKeHJlZgowIDg0CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAxNSAwMDAwMCBuIAowMDAwMDAyODA5IDAwMDAwIG4gCjAwMDAwMDQyMDYgMDAwMDAgbiAKMDAwMDAwNTYwNCAwMDAwMCBuIAowMDAwMDA1OTA5IDAwMDAwIG4gCjAwMDAwMDU5ODUgMDAwMDAgbiAKMDAwMDAwNjEyNSAwMDAwMCBuIAowMDAwMDA3NDA2IDAwMDAwIG4gCjAwMDAwMDYzNDEgMDAwMDAgbiAKMDAwMDAwNjU5NSAwMDAwMCBuIAowMDAwMDA2Njg0IDAwMDAwIG4gCjAwMDAwMDY5MzkgMDAwMDAgbiAKMDAwMDAzODI3NyAwMDAwMCBuIAowMDAwMDM4ODA0IDAwMDAwIG4gCjAwMDAwMDc1MzYgMDAwMDAgbiAKMDAwMDAwNzc5NCAwMDAwMCBuIAowMDAwMDA4MDUyIDAwMDAwIG4gCjAwMDAwMDgyNDcgMDAwMDAgbiAKMDAwMDAwODQ0MiAwMDAwMCBuIAowMDAwMDA4Njk1IDAwMDAwIG4gCjAwMDAwMDg5NTEgMDAwMDAgbiAKMDAwMDAwOTIwNiAwMDAwMCBuIAowMDAwMDA5NDAxIDAwMDAwIG4gCjAwMDAwMDk2NjQgMDAwMDAgbiAKMDAwMDAwOTg1OSAwMDAwMCBuIAowMDAwMDEwMDU0IDAwMDAwIG4gCjAwMDAwMTAzMzMgMDAwMDAgbiAKMDAwMDAxMDUyOCAwMDAwMCBuIAowMDAwMDEwODA3IDAwMDAwIG4gCjAwMDAwMTEwOTQgMDAwMDAgbiAKMDAwMDAxMTI3OCAwMDAwMCBuIAowMDAwMDExNDYzIDAwMDAwIG4gCjAwMDAwMTE2NDcgMDAwMDAgbiAKMDAwMDAxMTgzMiAwMDAwMCBuIAowMDAwMDEyMDE2IDAwMDAwIG4gCjAwMDAwMTIzMDMgMDAwMDAgbiAKMDAwMDAxMjQ4NyAwMDAwMCBuIAowMDAwMDEyNzQzIDAwMDAwIG4gCjAwMDAwMTMwMDYgMDAwMDAgbiAKMDAwMDAxMzI2NSAwMDAwMCBuIAowMDAwMDEzNTIwIDAwMDAwIG4gCjAwMDAwMTM3MTUgMDAwMDAgbiAKMDAwMDAxMzk2NyAwMDAwMCBuIAowMDAwMDE0MjI5IDAwMDAwIG4gCjAwMDAwMTQ0ODQgMDAwMDAgbiAKMDAwMDAxNDczNyAwMDAwMCBuIAowMDAwMDE0OTkwIDAwMDAwIG4gCjAwMDAwMTUxNjYgMDAwMDAgbiAKMDAwMDAxNTM1OCAwMDAwMCBuIAowMDAwMDE1ODQ0IDAwMDAwIG4gCjAwMDAwMTYwMjQgMDAwMDAgbiAKMDAwMDAxNjIwMSAwMDAwMCBuIAowMDAwMDE2MzcwIDAwMDAwIG4gCjAwMDAwMTY1NTYgMDAwMDAgbiAKMDAwMDAxNjcyNiAwMDAwMCBuIAowMDAwMDE2OTAwIDAwMDAwIG4gCjAwMDAwMTcwNzMgMDAwMDAgbiAKMDAwMDAxNzI0MiAwMDAwMCBuIAowMDAwMDE3NDI2IDAwMDAwIG4gCjAwMDAwMTc1OTggMDAwMDAgbiAKMDAwMDAxNzc2NyAwMDAwMCBuIAowMDAwMDE3OTY2IDAwMDAwIG4gCjAwMDAwMTgxMzEgMDAwMDAgbiAKMDAwMDAxODMzOSAwMDAwMCBuIAowMDAwMDE4NTE2IDAwMDAwIG4gCjAwMDAwMTg3MDAgMDAwMDAgbiAKMDAwMDAxODg4NiAwMDAwMCBuIAowMDAwMDE5MDYzIDAwMDAwIG4gCjAwMDAwMTkyMzggMDAwMDAgbiAKMDAwMDAxOTQxMiAwMDAwMCBuIAowMDAwMDE5NjAxIDAwMDAwIG4gCjAwMDAwMTk3ODIgMDAwMDAgbiAKMDAwMDAxOTk1OSAwMDAwMCBuIAowMDAwMDIwMTM2IDAwMDAwIG4gCjAwMDAwMjE0MTUgMDAwMDAgbiAKMDAwMDAyMTQ3NSAwMDAwMCBuIAowMDAwMDIzNjMzIDAwMDAwIG4gCjAwMDAwMjE5NTggMDAwMDAgbiAKMDAwMDAyMjA1MiAwMDAwMCBuIAowMDAwMDIzNzkwIDAwMDAwIG4gCjAwMDAwMzgwOTMgMDAwMDAgbiAKMDAwMDAzOTQ0OCAwMDAwMCBuIAowMDAwMDM5NzE0IDAwMDAwIG4gCnRyYWlsZXIKPDwvSW5mbyA0IDAgUi9JRCBbPGVlZWQ2YmEzM2YwZDY5ZjkzZWEyYzZjNWFhM2U0ZWJjPjw4ZGIwNDk0YjcxMmY5ZTE5NTJmZGMwMjI2Mjg3NzdhZj5dL1Jvb3QgODMgMCBSL1NpemUgODQ+PgolaVRleHQtNS41LjUKc3RhcnR4cmVmCjM5Nzc3CiUlRU9GCg==", - "zip": "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ZW5kb2JqCjI5IDAgb2JqCjw8L0NvbG9yU3BhY2UvRGV2aWNlR3JheS9TdWJ0eXBlL0ltYWdlL0hlaWdodCAxOS9GaWx0ZXIvRmxhdGVEZWNvZGUvVHlwZS9YT2JqZWN0L1dpZHRoIDE5L0xlbmd0aCAxMzIvQml0c1BlckNvbXBvbmVudCA4Pj5zdHJlYW0KeJxl0AENwCAMBMCXUAmTgAQkTMIkTEIdIGESkDAJSJgEJHQtDEKzTyDhUlqCyD83+9wijCVEYE+HSPQUtA97KiJ1c5S06HS9oo3HSvTYtU6Uc1DKWrSjk64asKtkfGSHulXdaFCbZImYhKtJwkLNCjmycQGeqMwX8/ivtP7XPy90XasiCmVuZHN0cmVhbQplbmRvYmoKMzAgMCBvYmoKPDwvQ29sb3JTcGFjZS9EZXZpY2VSR0IvU3VidHlwZS9JbWFnZS9IZWlnaHQgMTkvRmlsdGVyL0ZsYXRlRGVjb2RlL1R5cGUvWE9iamVjdC9XaWR0aCAxOS9TTWFzayAyOSAwIFIvTGVuZ3RoIDE4L0JpdHNQZXJDb21wb25lbnQgOD4+c3RyZWFtCnicY2AYBaNgFIwCkgEABDsAAQplbmRzdHJlYW0KZW5kb2JqCjMxIDAgb2JqCjw8L0NvbG9yU3BhY2UvRGV2aWNlR3JheS9TdWJ0eXBlL0ltYWdlL0hlaWdodCAxOS9GaWx0ZXIvRmxhdGVEZWNvZGUvVHlwZS9YT2JqZWN0L1dpZHRoIDE5L0xlbmd0aCAzMS9CaXRzUGVyQ29tcG9uZW50IDg+PnN0cmVhbQp4nPv/HxPsb0AF+///b2BABQ2jQgghLOGFCQANA2i1CmVuZHN0cmVhbQplbmRvYmoKMzIgMCBvYmoKPDwvQ29sb3JTcGFjZS9EZXZpY2VSR0IvU3VidHlwZS9JbWFnZS9IZWlnaHQgMTkvRmlsdGVyL0ZsYXRlRGVjb2RlL1R5cGUvWE9iamVjdC9XaWR0aCAxOS9TTWFzayAzMSAwIFIvTGVuZ3RoIDE4L0JpdHNQZXJDb21wb25lbnQgOD4+c3RyZWFtCnicY2AYBaNgFIwCkgEABDsAAQplbmRzdHJlYW0KZW5kb2JqCjMzIDAgb2JqCjw8L0NvbG9yU3BhY2UvRGV2aWNlR3JheS9TdWJ0eXBlL0ltYWdlL0hlaWdodCAxOS9GaWx0ZXIvRmxhdGVEZWNvZGUvVHlwZS9YT2JqZWN0L1dpZHRoIDE5L0xlbmd0aCAzMS9CaXRzUGVyQ29tcG9uZW50IDg+PnN0cmVhbQp4nPv/HxPsb0AF+///b2BABQ2jQgghLOGFCQANA2i1CmVuZHN0cmVhbQplbmRvYmoKMzQgMCBvYmoKPDwvQ29sb3JTcGFjZS9EZXZpY2VSR0IvU3VidHlwZS9JbWFnZS9IZWlnaHQgMTkvRmlsdGVyL0ZsYXRlRGVjb2RlL1R5cGUvWE9iamVjdC9XaWR0aCAxOS9TTWFzayAzMyAwIFIvTGVuZ3RoIDE4L0JpdHNQZXJDb21wb25lbnQgOD4+c3RyZWFtCnicY2AYBaNgFIwCkgEABDsAAQplbmRzdHJlYW0KZW5kb2JqCjM1IDAgb2JqCjw8L0NvbG9yU3BhY2UvRGV2aWNlR3JheS9TdWJ0eXBlL0ltYWdlL0hlaWdodCAxOS9GaWx0ZXIvRmxhdGVEZWNvZGUvVHlwZS9YT2JqZWN0L1dpZHRoIDE5L0xlbmd0aCAxMzIvQml0c1BlckNvbXBvbmVudCA4Pj5zdHJlYW0KeJxl0AENwCAMBMCXUAmTgAQkTMIkTEIdIGESkDAJSJgEJHQtDEKzTyDhUlqCyD83+9wijCVEYE+HSPQUtA97KiJ1c5S06HS9oo3HSvTYtU6Uc1DKWrSjk64asKtkfGSHulXdaFCbZImYhKtJwkLNCjmycQGeqMwX8/ivtP7XPy90XasiCmVuZHN0cmVhbQplbmRvYmoKMzYgMCBvYmoKPDwvQ29sb3JTcGFjZS9EZXZpY2VSR0IvU3VidHlwZS9JbWFnZS9IZWlnaHQgMTkvRmlsdGVyL0ZsYXRlRGVjb2RlL1R5cGUvWE9iamVjdC9XaWR0aCAxOS9TTWFzayAzNSAwIFIvTGVuZ3RoIDE4L0JpdHNQZXJDb21wb25lbnQgOD4+c3RyZWFtCnicY2AYBaNgFIwCkgEABDsAAQplbmRzdHJlYW0KZW5kb2JqCjM3IDAgb2JqCjw8L1N1YnR5cGUvRm9ybS9GaWx0ZXIvRmxhdGVEZWNvZGUvVHlwZS9YT2JqZWN0L01hdHJpeFsxIDAgMCAxIDAgMF0vRm9ybVR5cGUgMS9SZXNvdXJjZXM8PC9Gb250PDwvSGVsdiAx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bHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAxMSAwIFI+Pi9GZiAwPj4KZW5kb2JqCjQ5IDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoZmlsZVVybCkvVHlwZS9Bbm5vdC9WKGh0dHBzJTNBJTJGJTJGa3VuZGVudGVzdC5mb3JtLXNvbHV0aW9ucy5kZSUyRm1ldGFmb3JtJTJGRm9ybS1Tb2x1dGlvbnMlMkZzaWQlMkZhc3Npc3RhbnQlMkY2MWIyMDhlODY2ZGExMjM2NDRjOTdlNTYlM0ZhbmxpZWdlbklkJTNEMTIzNCUyNm9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5JRCUzRDkwMzAyMjklMjZrb21tdW5hbHZlcndhbHR1bmdJZCUzRDEwMDAwMDAwMCUyNmNvbnNlbnRDb21wbGV0ZSUzRHRydWUlMjZjYWNoZUlEJTNENGZiNmI2ZTAtMGYxYy00OTcwLWI5ZWQtZGJmMjQyZDMzM2Y5JTI2Y2l0aXplblBvcnRhbExvZ2luU3VjY2VzcyUzRHRydWUpL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAxMiAwIFI+Pi9GZiAwPj4KZW5kb2JqCjUwIDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoQVNfVm9ybmFtZSkvVHlwZS9Bbm5vdC9WKFN1c2FubmUpL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAxNSAwIFI+Pi9GZiAwPj4KZW5kb2JqCjUxIDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoQVNfTmFtZSkvVHlwZS9Bbm5vdC9WKEZpc2NoZXIpL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAxNiAwIFI+Pi9GZiAwPj4KZW5kb2JqCjUyIDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoQVNfUnVmbmFtZSkvVHlwZS9Bbm5vdC9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gMTcgMCBSPj4vRmYgMD4+CmVuZG9iago1MyAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKEFTX09yZGVuc25hbWVfS3VlbnN0bGVybmFtZSkvVHlwZS9Bbm5vdC9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gMTggMCBSPj4vRmYgMD4+CmVuZG9iago1NCAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKHN0YWF0KS9UeXBlL0Fubm90L1YoREUpL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAxOSAwIFI+Pi9GZiAwPj4KZW5kb2JqCjU1IDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoQVNfUExaKS9UeXBlL0Fubm90L1YoMTIzNDUpL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAyMCAwIFI+Pi9GZiAwPj4KZW5kb2JqCjU2IDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoQVNfT3J0KS9UeXBlL0Fubm90L1YoS2llbCkvRiA2L0RBKC9IZWx2IDAgVGYgMCBnICkvRlQvVHgvRFI8PC9Gb250PDwvSGVsdiAxMCAwIFI+Pj4+L1JlY3RbMCAwIDAgMF0vQVA8PC9OIDIxIDAgUj4+L0ZmIDA+PgplbmRvYmoKNTcgMCBvYmoKPDwvQlM8PC9TL1MvVyAxPj4vU3VidHlwZS9XaWRnZXQvVChCdW5kZXNsYW5kKS9UeXBlL0Fubm90L0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAyMiAwIFI+Pi9GZiAwPj4KZW5kb2JqCjU4IDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoQVNfU3RyYXNzZSkvVHlwZS9Bbm5vdC9WKEhhdXB0c3RyYd9lKS9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gMjMgMCBSPj4vRmYgMD4+CmVuZG9iago1OSAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKEFTX0hhdXNudW1tZXIpL1R5cGUvQW5ub3QvRiA2L0RBKC9IZWx2IDAgVGYgMCBnICkvRlQvVHgvRFI8PC9Gb250PDwvSGVsdiAxMCAwIFI+Pj4+L1JlY3RbMCAwIDAgMF0vQVA8PC9OIDI0IDAgUj4+L0ZmIDA+PgplbmRvYmoKNjAgMCBvYmoKPDwvQlM8PC9TL1MvVyAxPj4vU3VidHlwZS9XaWRnZXQvVChBU19UZWxlZm9uKS9UeXBlL0Fubm90L0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAyNSAwIFI+Pi9GZiAwPj4KZW5kb2JqCjYxIDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoQVNfRS1NYWlsKS9UeXBlL0Fubm90L1Yobm9yZXBseUBvemctc2guZGU=KS9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gMjYgMCBSPj4vRmYgMD4+CmVuZG9iago2MiAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKEFTX0ZheCkvVHlwZS9Bbm5vdC9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gMjcgMCBSPj4vRmYgMD4+CmVuZG9iago2MyAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKG9mc1hYMV9mcm9tX3NtYWlsMykvVHlwZS9Bbm5vdC9WKHN1c2FubmUuZmlzY2hlckBkYXRhcG9ydC5kZSkvRiA2L0RBKC9IZWx2IDAgVGYgMCBnICkvRlQvVHgvRFI8PC9Gb250PDwvSGVsdiAxMCAwIFI+Pj4+L1JlY3RbMCAwIDAgMF0vQVA8PC9OIDI4IDAgUj4+L0ZmIDA+PgplbmRvYmoKNjQgMCBvYmoKPDwvQlM8PC9TL1MvVyAxPj4vU3VidHlwZS9XaWRnZXQvVChIdW5kX05hbWUpL1R5cGUvQW5ub3QvVihIYXNzbykvRiA2L0RBKC9IZWx2IDAgVGYgMCBnICkvRlQvVHgvRFI8PC9Gb250PDwvSGVsdiAxMCAwIFI+Pj4+L1JlY3RbMCAwIDAgMF0vQVA8PC9OIDM3IDAgUj4+L0ZmIDA+PgplbmRvYmoKNjUgMCBvYmoKPDwvQlM8PC9TL1MvVyAxPj4vU3VidHlwZS9XaWRnZXQvVChIdW5kX1Jhc3NlKS9UeXBlL0Fubm90L1YoU2No5GZlcmh1bmQpL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAzOCAwIFI+Pi9GZiAwPj4KZW5kb2JqCjY2IDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoSHVuZF9HZXNjaGxlY2h0KS9UeXBlL0Fubm90L1Yod2VpYmxpY2gpL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAzOSAwIFI+Pi9GZiAwPj4KZW5kb2JqCjY3IDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoS2FzdHJhdGlvbikvVHlwZS9Bbm5vdC9WKG5laW4pL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiA0MCAwIFI+Pi9GZiAwPj4KZW5kb2JqCjY4IDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoSHVuZF9HZWJ1cnRkYXR1bSkvVHlwZS9Bbm5vdC9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gNDEgMCBSPj4vRmYgMD4+CmVuZG9iago2OSAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKEh1bmRfQWx0ZXIpL1R5cGUvQW5ub3QvVig1KS9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gNDIgMCBSPj4vRmYgMD4+CmVuZG9iago3MCAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKEh1bmRfQ2hpcE5yKS9UeXBlL0Fubm90L1YoMTIzNDU2Nzg5MTIzNDU2KS9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gNDMgMCBSPj4vRmYgMD4+CmVuZG9iago3MSAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKEh1bmRfRmVsbGZhcmJlKS9U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ZWxkc1s0NyAwIFIgNDggMCBSIDQ5IDAgUiA1MCAwIFIgNTEgMCBSIDUyIDAgUiA1MyAwIFIgNTQgMCBSIDU1IDAgUiA1NiAwIFIgNTcgMCBSIDU4IDAgUiA1OSAwIFIgNjAgMCBSIDYxIDAgUiA2MiAwIFIgNjMgMCBSIDY0IDAgUiA2NSAwIFIgNjYgMCBSIDY3IDAgUiA2OCAwIFIgNjkgMCBSIDcwIDAgUiA3MSAwIFIgNzIgMCBSIDczIDAgUl0vREEoL0hlbHYgMCBUZiAwIGcgKS9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4+PgplbmRvYmoKODMgMCBvYmoKPDwvVHlwZS9DYXRhbG9nL0Fjcm9Gb3JtIDgyIDAgUi9QYWdlcyA3NSAwIFI+PgplbmRvYmoKeHJlZgowIDg0CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAxNSAwMDAwMCBuIAowMDAwMDAyODA5IDAwMDAwIG4gCjAwMDAwMDQyMDYgMDAwMDAgbiAKMDAwMDAwNTYwNCAwMDAwMCBuIAowMDAwMDA1OTA5IDAwMDAwIG4gCjAwMDAwMDU5ODUgMDAwMDAgbiAKMDAwMDAwNjEyNSAwMDAwMCBuIAowMDAwMDA3NDA2IDAwMDAwIG4gCjAwMDAwMDYzNDEgMDAwMDAgbiAKMDAwMDAwNjU5NSAwMDAwMCBuIAowMDAwMDA2Njg0IDAwMDAwIG4gCjAwMDAwMDY5MzkgMDAwMDAgbiAKMDAwMDAzODI3NyAwMDAwMCBuIAowMDAwMDM4ODA0IDAwMDAwIG4gCjAwMDAwMDc1MzYgMDAwMDAgbiAKMDAwMDAwNzc5NCAwMDAwMCBuIAowMDAwMDA4MDUyIDAwMDAwIG4gCjAwMDAwMDgyNDcgMDAwMDAgbiAKMDAwMDAwODQ0MiAwMDAwMCBuIAowMDAwMDA4Njk1IDAwMDAwIG4gCjAwMDAwMDg5NTEgMDAwMDAgbiAKMDAwMDAwOTIwNiAwMDAwMCBuIAowMDAwMDA5NDAxIDAwMDAwIG4gCjAwMDAwMDk2NjQgMDAwMDAgbiAKMDAwMDAwOTg1OSAwMDAwMCBuIAowMDAwMDEwMDU0IDAwMDAwIG4gCjAwMDAwMTAzMzMgMDAwMDAgbiAKMDAwMDAxMDUyOCAwMDAwMCBuIAowMDAwMDEwODA3IDAwMDAwIG4gCjAwMDAwMTEwOTQgMDAwMDAgbiAKMDAwMDAxMTI3OCAwMDAwMCBuIAowMDAwMDExNDYzIDAwMDAwIG4gCjAwMDAwMTE2NDcgMDAwMDAgbiAKMDAwMDAxMTgzMiAwMDAwMCBuIAowMDAwMDEyMDE2IDAwMDAwIG4gCjAwMDAwMTIzMDMgMDAwMDAgbiAKMDAwMDAxMjQ4NyAwMDAwMCBuIAowMDAwMDEyNzQzIDAwMDAwIG4gCjAwMDAwMTMwMDYgMDAwMDAgbiAKMDAwMDAxMzI2NSAwMDAwMCBuIAowMDAwMDEzNTIwIDAwMDAwIG4gCjAwMDAwMTM3MTUgMDAwMDAgbiAKMDAwMDAxMzk2NyAwMDAwMCBuIAowMDAwMDE0MjI5IDAwMDAwIG4gCjAwMDAwMTQ0ODQgMDAwMDAgbiAKMDAwMDAxNDczNyAwMDAwMCBuIAowMDAwMDE0OTkwIDAwMDAwIG4gCjAwMDAwMTUxNjYgMDAwMDAgbiAKMDAwMDAxNTM1OCAwMDAwMCBuIAowMDAwMDE1ODQ0IDAwMDAwIG4gCjAwMDAwMTYwMjQgMDAwMDAgbiAKMDAwMDAxNjIwMSAwMDAwMCBuIAowMDAwMDE2MzcwIDAwMDAwIG4gCjAwMDAwMTY1NTYgMDAwMDAgbiAKMDAwMDAxNjcyNiAwMDAwMCBuIAowMDAwMDE2OTAwIDAwMDAwIG4gCjAwMDAwMTcwNzMgMDAwMDAgbiAKMDAwMDAxNzI0MiAwMDAwMCBuIAowMDAwMDE3NDI2IDAwMDAwIG4gCjAwMDAwMTc1OTggMDAwMDAgbiAKMDAwMDAxNzc2NyAwMDAwMCBuIAowMDAwMDE3OTY2IDAwMDAwIG4gCjAwMDAwMTgxMzEgMDAwMDAgbiAKMDAwMDAxODMzOSAwMDAwMCBuIAowMDAwMDE4NTE2IDAwMDAwIG4gCjAwMDAwMTg3MDAgMDAwMDAgbiAKMDAwMDAxODg4NiAwMDAwMCBuIAowMDAwMDE5MDYzIDAwMDAwIG4gCjAwMDAwMTkyMzggMDAwMDAgbiAKMDAwMDAxOTQxMiAwMDAwMCBuIAowMDAwMDE5NjAxIDAwMDAwIG4gCjAwMDAwMTk3ODIgMDAwMDAgbiAKMDAwMDAxOTk1OSAwMDAwMCBuIAowMDAwMDIwMTM2IDAwMDAwIG4gCjAwMDAwMjE0MTUgMDAwMDAgbiAKMDAwMDAyMTQ3NSAwMDAwMCBuIAowMDAwMDIzNjMzIDAwMDAwIG4gCjAwMDAwMjE5NTggMDAwMDAgbiAKMDAwMDAyMjA1MiAwMDAwMCBuIAowMDAwMDIzNzkwIDAwMDAwIG4gCjAwMDAwMzgwOTMgMDAwMDAgbiAKMDAwMDAzOTQ0OCAwMDAwMCBuIAowMDAwMDM5NzE0IDAwMDAwIG4gCnRyYWlsZXIKPDwvSW5mbyA0IDAgUi9JRCBbPGVlZWQ2YmEzM2YwZDY5ZjkzZWEyYzZjNWFhM2U0ZWJjPjw4ZGIwNDk0YjcxMmY5ZTE5NTJmZGMwMjI2Mjg3NzdhZj5dL1Jvb3QgODMgMCBSL1NpemUgODQ+PgolaVRleHQtNS41LjUKc3RhcnR4cmVmCjM5Nzc3CiUlRU9GCg==", - "kommunalverwaltungId": "100000000", - "postkorbhandle": "51522620-03d2-4507-b1f0-08d86920efed", - "anliegenId": "1234", - "zustaendigeStelle": "test" -} \ No newline at end of file diff --git a/semantik-adapter/src/test/resources/intelliform/EinfachesFormularZweiAnhaengeXmlDaten1.xml b/semantik-adapter/src/test/resources/intelliform/EinfachesFormularZweiAnhaengeXmlDaten1.xml deleted file mode 100644 index 0b0515d0..00000000 --- a/semantik-adapter/src/test/resources/intelliform/EinfachesFormularZweiAnhaengeXmlDaten1.xml +++ /dev/null @@ -1,79 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<myForm xmlns:pdf="http://xmlns.cit.de/assistants/pdf" xmlns:t="http://xmlns.cit.de/intelliform/transaction" t:uuid="eac2480e-7166-4b16-bddd-880591e7d93b" t:id="20210415307020414701" t:timestamp="2021-04-15T08:31:42.398Z" t:sender="intelliform.by.kop-cloud.de" t:form="SimpleFormSendetAnHomeServer" t:form-id="SimpleFormSendetAnHomeServer" t:customer="Kiel" t:customer-id="Kiel" t:client="sh-dev" t:client-id="sh-dev"> - <KontaktsystemTypA>233034600</KontaktsystemTypA> - <KontaktsystemTypB>233034601</KontaktsystemTypB> - <AnliegenID>8966671</AnliegenID> - <antragsteller> - <sh_strasse>An der Schneiderei</sh_strasse> - <sh_hausnummer>1</sh_hausnummer> - <sh_plz>24103</sh_plz> - <ort_auswahl>9006402$01002000</ort_auswahl> - <ort>Kiel</ort> - <GebietID>9006402</GebietID> - <GebietBEZEICHNUNG>Kiel</GebietBEZEICHNUNG> - <GebietGNR94_GNR>01002000</GebietGNR94_GNR> - <staat>000</staat> - <iso3166numerisch>276</iso3166numerisch> - <kont_telefonnummer /> - <kont_mobilnummer /> - <kont_telefaxnummer /> - <kont_email>noreply@ozg-sh.de</kont_email> - <kont_demail /> - </antragsteller> - <Upload1> - <file content-type="image/jpeg" description="" id="assistants.E0FBA361C191F8B723949467AE302BEA24E4745E" length="155251">Helge1.jpg</file> - </Upload1> - <Upload2> - <file content-type="application/vnd.oasis.opendocument.text" description="" id="assistants.52D79E5B2118D1740045AB87151535DCAD24E9A7" length="7993">Helgetext2.odt</file> - </Upload2> - <GebietID>9006402</GebietID> - <zustaendigestelle> - <OrganisationseinheitenAuswahl>10363455</OrganisationseinheitenAuswahl> - <OrganisationseinheitenID>10363455</OrganisationseinheitenID> - <OrganisationseinheitenBEZEICHNUNG>Landeshauptstadt Kiel - Bürger- und Ordnungsamt, Sachbereich Gefahrenabwehr, Waffenangelegenheiten, Jagdbehörde, Bestattungsangelegenheiten</OrganisationseinheitenBEZEICHNUNG> - <strasse>Stresemannplatz</strasse> - <hausnummer>5</hausnummer> - <postleitzahl>24103</postleitzahl> - <ortID>9006402</ortID> - <ort>Kiel</ort> - <telefonnummer /> - <telefaxnummer>+49 431 901-62181</telefaxnummer> - <emailadresse>Gefahrenabwehr@Kiel.de</emailadresse> - <demailadresse /> - <kontaktsystem_kennung /> - <kontaktsystem_kennungzusatz /> - <AnliegenBEZEICHNUNG>Waffenschein / Kleiner Waffenschein</AnliegenBEZEICHNUNG> - <leikaKEYLIST>99089008000000;99089008001000</leikaKEYLIST> - </zustaendigestelle> - <empfangendestelle> - <OrganisationseinheitenAuswahl>9068873</OrganisationseinheitenAuswahl> - <OrganisationseinheitenID>9068873</OrganisationseinheitenID> - <OrganisationseinheitenBEZEICHNUNG>Einheitlicher Ansprechpartner Schleswig-Holstein</OrganisationseinheitenBEZEICHNUNG> - <strasse>Reventlouallee</strasse> - <hausnummer>6</hausnummer> - <postleitzahl>24105</postleitzahl> - <ortID>9006402</ortID> - <ort>Kiel</ort> - <telefonnummer>+49 431 988-8650</telefonnummer> - <telefaxnummer>+49 431 988-6161111</telefaxnummer> - <emailadresse>info@ea-sh.de</emailadresse> - <demailadresse>ea-poststelle@ea-sh.de-mail.de</demailadresse> - <kontaktsystem_kennung>afmsh:9068873_AusnahmeLKWFahrverbot</kontaktsystem_kennung> - <kontaktsystem_kennungzusatz>alle</kontaktsystem_kennungzusatz> - </empfangendestelle> - <erklaerungen> - <check_gebuehren>true</check_gebuehren> - <check_richtigkeit>true</check_richtigkeit> - <check_datenschutz>true</check_datenschutz> - <check_missbrauch>true</check_missbrauch> - <b_gebuehren_beschriftung>* Mir ist bekannt, dass durch das Einreichen des elektronischen Antrages von der zuständigen Stelle Gebühren erhoben werden können.</b_gebuehren_beschriftung> - <b_gebuehren_intro>Gebühr bei Ausstellung des kleinen Waffenscheins: 60,00 Euro. Bearbeitungsgebühr bei Versagung: 45,00 Euro. -Sie sind gemäß § 39 WaffG verpflichtet, der zuständigen Behörde die zur Durchführung des Gesetzes erforderlichen Auskünfte zu erteilen. Zur Prüfung Ihrer waffenrechtlichen Zuverlässigkeit und Eignung holt die Behörde eine unbeschränkte Auskunft aus dem Bundeszentralregister, eine Auskunft aus dem zentralen staatsanwaltschaftlichen Verfahrensregister, eine Stellungnahme der örtlichen Polizeidienststelle und Ihrer Wohnsitzgemeinde ein.</b_gebuehren_intro> - <b_richtigkeit>* Ich bestätige die Richtigkeit meiner Angaben.</b_richtigkeit> - <b_datenschutz>* Ich erkläre mich damit einverstanden, dass der Einheitlicher Ansprechpartner Schleswig-Holstein zur Erfüllung seiner Aufgaben meine Daten unter Einhaltung der Bestimmungen der Datenschutz-Grundverordnung (DS-GVO) und des Landesdatenschutzgesetzes Schleswig-Holstein (LDSG-SH) speichert, verarbeitet und diese im Rahmen der gesetzlichen Bestimmungen an die für die Entscheidung zuständige Stelle weiterleitet. Ebenso bin ich mit der rechtskonformen Datenverarbeitung und Speicherung durch die zuständige Stelle einverstanden. Mir ist bekannt, dass ich die Einwilligung in die Verarbeitung und Übermittlung jederzeit gegenüber dem Einheitlicher Ansprechpartner Schleswig-Holstein, Reventlouallee 6, 24105 Kiel widerrufen kann. Ein Widerruf ist aber nur wirksam für die Zukunft. Verarbeitungen, die vor dem Widerruf erfolgt sind, sind davon nicht betroffen. Über die Verarbeitung meiner personenbezogenen Daten und die mir nach den datenschutzrechtlichen Regelungen zustehenden Ansprüche und Rechte habe ich unter Datenschutzerklärung Kenntnis erlangt.</b_datenschutz> - <b_missbrauch>* Mir ist bekannt, dass zur Verfolgung widerrechtlicher Nutzung die Daten meines zur Dateneingabe genutzten Endgerätes aufgezeichnet und verwendet werden können.</b_missbrauch> - <policyurl>http://www.ea-sh.info/datenschutz/datenschutzerklaerungEA_de.doc</policyurl> - </erklaerungen> - <logourl>http://www.ea-sh.info/logos/kopf_9068873.doc</logourl> -</myForm> - diff --git a/semantik-adapter/src/test/resources/intelliform/EinfachesFormularZweiAnhaengeXmlDatenVerschachtelt.xml b/semantik-adapter/src/test/resources/intelliform/EinfachesFormularZweiAnhaengeXmlDatenVerschachtelt.xml deleted file mode 100644 index f39136ee..00000000 --- a/semantik-adapter/src/test/resources/intelliform/EinfachesFormularZweiAnhaengeXmlDatenVerschachtelt.xml +++ /dev/null @@ -1,85 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<myForm xmlns:pdf="http://xmlns.cit.de/assistants/pdf" xmlns:t="http://xmlns.cit.de/intelliform/transaction" t:uuid="eac2480e-7166-4b16-bddd-880591e7d93b" t:id="20210415307020414701" t:timestamp="2021-04-15T08:31:42.398Z" t:sender="intelliform.by.kop-cloud.de" t:form="SimpleFormSendetAnHomeServer" t:form-id="SimpleFormSendetAnHomeServer" t:customer="Kiel" t:customer-id="Kiel" t:client="sh-dev" t:client-id="sh-dev"> - <KontaktsystemTypA>233034600</KontaktsystemTypA> - <KontaktsystemTypB>233034601</KontaktsystemTypB> - <AnliegenID>8966671</AnliegenID> - <antragsteller> - <sh_strasse>An der Schneiderei</sh_strasse> - <sh_hausnummer>1</sh_hausnummer> - <sh_plz>24103</sh_plz> - <ort_auswahl>9006402$01002000</ort_auswahl> - <ort>Kiel</ort> - <GebietID>9006402</GebietID> - <GebietBEZEICHNUNG>Kiel</GebietBEZEICHNUNG> - <GebietGNR94_GNR>01002000</GebietGNR94_GNR> - <staat>000</staat> - <iso3166numerisch>276</iso3166numerisch> - <kont_telefonnummer /> - <kont_mobilnummer /> - <kont_telefaxnummer /> - <kont_email /> - <kont_demail /> - </antragsteller> - <datei_ausweis> - <datei_ausweis-item> - <file content-type="image/jpeg" description="" id="assistants.21B483DAA2DC7900C1D1135E566D0F672CB42832" length="1184319">20210326_133516[1].jpg</file> - </datei_ausweis-item> - <datei_ausweis-item> - <file content-type="image/jpeg" description="" id="assistants.2F1FF737CF4F23191C1952091CB342254EE22A37" length="1384037">20210326_133526[1].jpg</file> - </datei_ausweis-item> - </datei_ausweis> - <datei_meldebestaetigung> - <datei_meldebestaetigung-item> - <file content-type="image/jpeg" description="" id="assistants.B20451156C677116B91A4EF2D1E859837B6CE510" length="3066416">20210324_103054[1].jpg</file> - </datei_meldebestaetigung-item> - </datei_meldebestaetigung> - <GebietID>9006402</GebietID> - <zustaendigestelle> - <OrganisationseinheitenAuswahl>10363455</OrganisationseinheitenAuswahl> - <OrganisationseinheitenID>10363455</OrganisationseinheitenID> - <OrganisationseinheitenBEZEICHNUNG>Landeshauptstadt Kiel - Bürger- und Ordnungsamt, Sachbereich Gefahrenabwehr, Waffenangelegenheiten, Jagdbehörde, Bestattungsangelegenheiten</OrganisationseinheitenBEZEICHNUNG> - <strasse>Stresemannplatz</strasse> - <hausnummer>5</hausnummer> - <postleitzahl>24103</postleitzahl> - <ortID>9006402</ortID> - <ort>Kiel</ort> - <telefonnummer /> - <telefaxnummer>+49 431 901-62181</telefaxnummer> - <emailadresse>Gefahrenabwehr@Kiel.de</emailadresse> - <demailadresse /> - <kontaktsystem_kennung /> - <kontaktsystem_kennungzusatz /> - <AnliegenBEZEICHNUNG>Waffenschein / Kleiner Waffenschein</AnliegenBEZEICHNUNG> - <leikaKEYLIST>99089008000000;99089008001000</leikaKEYLIST> - </zustaendigestelle> - <empfangendestelle> - <OrganisationseinheitenAuswahl>9068873</OrganisationseinheitenAuswahl> - <OrganisationseinheitenID>9068873</OrganisationseinheitenID> - <OrganisationseinheitenBEZEICHNUNG>Einheitlicher Ansprechpartner Schleswig-Holstein</OrganisationseinheitenBEZEICHNUNG> - <strasse>Reventlouallee</strasse> - <hausnummer>6</hausnummer> - <postleitzahl>24105</postleitzahl> - <ortID>9006402</ortID> - <ort>Kiel</ort> - <telefonnummer>+49 431 988-8650</telefonnummer> - <telefaxnummer>+49 431 988-6161111</telefaxnummer> - <emailadresse>info@ea-sh.de</emailadresse> - <demailadresse>ea-poststelle@ea-sh.de-mail.de</demailadresse> - <kontaktsystem_kennung>afmsh:9068873_AusnahmeLKWFahrverbot</kontaktsystem_kennung> - <kontaktsystem_kennungzusatz>alle</kontaktsystem_kennungzusatz> - </empfangendestelle> - <erklaerungen> - <check_gebuehren>true</check_gebuehren> - <check_richtigkeit>true</check_richtigkeit> - <check_datenschutz>true</check_datenschutz> - <check_missbrauch>true</check_missbrauch> - <b_gebuehren_beschriftung>* Mir ist bekannt, dass durch das Einreichen des elektronischen Antrages von der zuständigen Stelle Gebühren erhoben werden können.</b_gebuehren_beschriftung> - <b_gebuehren_intro>Gebühr bei Ausstellung des kleinen Waffenscheins: 60,00 Euro. Bearbeitungsgebühr bei Versagung: 45,00 Euro. -Sie sind gemäß § 39 WaffG verpflichtet, der zuständigen Behörde die zur Durchführung des Gesetzes erforderlichen Auskünfte zu erteilen. Zur Prüfung Ihrer waffenrechtlichen Zuverlässigkeit und Eignung holt die Behörde eine unbeschränkte Auskunft aus dem Bundeszentralregister, eine Auskunft aus dem zentralen staatsanwaltschaftlichen Verfahrensregister, eine Stellungnahme der örtlichen Polizeidienststelle und Ihrer Wohnsitzgemeinde ein.</b_gebuehren_intro> - <b_richtigkeit>* Ich bestätige die Richtigkeit meiner Angaben.</b_richtigkeit> - <b_datenschutz>* Ich erkläre mich damit einverstanden, dass der Einheitlicher Ansprechpartner Schleswig-Holstein zur Erfüllung seiner Aufgaben meine Daten unter Einhaltung der Bestimmungen der Datenschutz-Grundverordnung (DS-GVO) und des Landesdatenschutzgesetzes Schleswig-Holstein (LDSG-SH) speichert, verarbeitet und diese im Rahmen der gesetzlichen Bestimmungen an die für die Entscheidung zuständige Stelle weiterleitet. Ebenso bin ich mit der rechtskonformen Datenverarbeitung und Speicherung durch die zuständige Stelle einverstanden. Mir ist bekannt, dass ich die Einwilligung in die Verarbeitung und Übermittlung jederzeit gegenüber dem Einheitlicher Ansprechpartner Schleswig-Holstein, Reventlouallee 6, 24105 Kiel widerrufen kann. Ein Widerruf ist aber nur wirksam für die Zukunft. Verarbeitungen, die vor dem Widerruf erfolgt sind, sind davon nicht betroffen. Über die Verarbeitung meiner personenbezogenen Daten und die mir nach den datenschutzrechtlichen Regelungen zustehenden Ansprüche und Rechte habe ich unter Datenschutzerklärung Kenntnis erlangt.</b_datenschutz> - <b_missbrauch>* Mir ist bekannt, dass zur Verfolgung widerrechtlicher Nutzung die Daten meines zur Dateneingabe genutzten Endgerätes aufgezeichnet und verwendet werden können.</b_missbrauch> - <policyurl>http://www.ea-sh.info/datenschutz/datenschutzerklaerungEA_de.doc</policyurl> - </erklaerungen> - <logourl>http://www.ea-sh.info/logos/kopf_9068873.doc</logourl> -</myForm> \ No newline at end of file diff --git a/semantik-adapter/src/test/resources/intelliform/FormularSoapRequest_WithContent_XML-Daten-1.xml b/semantik-adapter/src/test/resources/intelliform/FormularSoapRequest_WithContent_XML-Daten-1.xml deleted file mode 100644 index 7abb99da..00000000 --- a/semantik-adapter/src/test/resources/intelliform/FormularSoapRequest_WithContent_XML-Daten-1.xml +++ /dev/null @@ -1,194 +0,0 @@ -<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> - <soap:Body> - <ns2:deposit xmlns:ns2="http://xmlns.cit.de/intelliform/2009/webservices/backend"> - <data> - <attachments> - <attributes> - <key>X-IntelliForm-Signed</key> - <value>false</value> - </attributes> - <content>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG15Rm9ybSB4bWxuczpwZGY9 -Imh0dHA6Ly94bWxucy5jaXQuZGUvYXNzaXN0YW50cy9wZGYiCgl4bWxuczp0PSJodHRwOi8veG1s -bnMuY2l0LmRlL2ludGVsbGlmb3JtL3RyYW5zYWN0aW9uIgoJdDppZD0iMjAyMDExMTgzNjU2NzA4 -NjYxMDEiIHQ6dGltZXN0YW1wPSIyMDIwLTExLTE4VDA5OjA5OjI3LjYyN1oiCgl0OnNlbmRlcj0i -YWZtLnNjaGxlc3dpZy1ob2xzdGVpbi5kZSIKCXQ6Zm9ybT0iS2xlaW5lciBXYWZmZW5zY2hlaW4g -Z2VtLiDCpyAxMCBBYnMuIDQgU2F0eiA0IFdhZmZlbmdlc2V0eiAoV2FmZkcpIgoJdDpmb3JtLWlk -PSJ3YWZmZW4va2xlaW5lcldhZmZlbnNjaGVpbiIKCXQ6Y3VzdG9tZXI9IkVpbmhlaXRsaWNoZXIg -QW5zcHJlY2hwYXJ0bmVyIiB0OmN1c3RvbWVyLWlkPSJlYS1zaCIKCXQ6Y2xpZW50PSJTY2hsZXN3 -aWctSG9sc3RlaW4iIHQ6Y2xpZW50LWlkPSJsYW5kIj4KCTxrb250YWt0c3lzdGVtdHlwaWQ+MjMz -MDM0NjAwPC9rb250YWt0c3lzdGVtdHlwaWQ+Cgk8a29udGFrdHN5c3RlbXR5cGlkbG4+MjMzMDM0 -NjAxPC9rb250YWt0c3lzdGVtdHlwaWRsbj4KCTxBbmxpZWdlbklEPjg5NjY2NzE8L0FubGllZ2Vu -SUQ+Cgk8bWFpbGJveGd1aWQ+Zjk3NzM2OGItNjk5MS00NmI5LWFmMTgtOGEyYTAzZDlhZDFiPC9t -YWlsYm94Z3VpZD4KCTxhbnRyYWdzdGVsbGVyPgoJCTxwZXJzX2FucmVkZT5IZXJyJDAzPC9wZXJz -X2FucmVkZT4KCQk8cGVyc19uYWNobmFtZT5UZXN0ZXJtYW5uPC9wZXJzX25hY2huYW1lPgoJCTxw -ZXJzX3Zvcm5hbWU+TWF4PC9wZXJzX3Zvcm5hbWU+CgkJPHBlcnNfZ2VidXJ0c25hbWU+TWF4IFRl -c3Rlcm1hbm48L3BlcnNfZ2VidXJ0c25hbWU+CgkJPHBlcnNfZ2VidXJ0c2RhdHVtPjE5OTUtMDMt -MjE8L3BlcnNfZ2VidXJ0c2RhdHVtPgoJCTxwZXJzX2dlYnVydHNvcnQ+RmxlbnNidXJnPC9wZXJz -X2dlYnVydHNvcnQ+CgkJPHBlcnNfZ2VidXJ0c2xhbmQ+ZGV1dHNjaCREZXV0c2NobGFuZCQwMDA8 -L3BlcnNfZ2VidXJ0c2xhbmQ+CgkJPHBlcnNfc3RhYXRzYW5nZWhvZXJpZ2tlaXQ+ZGV1dHNjaCRE -ZXV0c2NobGFuZCQwMDA8L3BlcnNfc3RhYXRzYW5nZWhvZXJpZ2tlaXQ+CgkJPGJfYW5yZWRlPkhl -cnI8L2JfYW5yZWRlPgoJCTxiX2FucmVkZV9zY2hsdWVzc2VsbnI+MDM8L2JfYW5yZWRlX3NjaGx1 -ZXNzZWxucj4KCQk8Yl9nZWJ1cnRzbGFuZD5EZXV0c2NobGFuZDwvYl9nZWJ1cnRzbGFuZD4KCQk8 -Yl9nZWJ1cnRzbGFuZF9zaWduYXR1cj4wMDA8L2JfZ2VidXJ0c2xhbmRfc2lnbmF0dXI+CgkJPGJf -c3RhYXRzYW5nZWhvZXJpZ2tlaXQ+ZGV1dHNjaDwvYl9zdGFhdHNhbmdlaG9lcmlna2VpdD4KCQk8 -Yl9zdGFhdHNhbmdlaG9lcmlna2VpdF9zaWduYXR1cj4wMDA8L2Jfc3RhYXRzYW5nZWhvZXJpZ2tl -aXRfc2lnbmF0dXI+CgkJPHNoX3N0cmFzc2U+S8O2bmlnc3dlZzwvc2hfc3RyYXNzZT4KCQk8c2hf -aGF1c251bW1lcj43NDwvc2hfaGF1c251bW1lcj4KCQk8c2hfcGx6PjI0ODM3PC9zaF9wbHo+CgkJ -PG9ydF9hdXN3YWhsPjkwMDczMTQkMDEwNTkwNzU8L29ydF9hdXN3YWhsPgoJCTxvcnQ+U2NobGVz -d2lnPC9vcnQ+CgkJPEdlYmlldElEPjkwMDczMTQ8L0dlYmlldElEPgoJCTxHZWJpZXRCRVpFSUNI -TlVORz5TY2hsZXN3aWc8L0dlYmlldEJFWkVJQ0hOVU5HPgoJCTxHZWJpZXRHTlI5NF9HTlI+MDEw -NTkwNzU8L0dlYmlldEdOUjk0X0dOUj4KCQk8c3RhYXQ+MDAwPC9zdGFhdD4KCQk8aXNvMzE2Nm51 -bWVyaXNjaD4yNzY8L2lzbzMxNjZudW1lcmlzY2g+CgkJPGtvbnRfdGVsZWZvbm51bW1lcj4rIDQ5 -IDQ2MjEgOTY1NDwva29udF90ZWxlZm9ubnVtbWVyPgoJCTxrb250X21vYmlsbnVtbWVyPis0OSAx -MjM8L2tvbnRfbW9iaWxudW1tZXI+CgkJPGtvbnRfdGVsZWZheG51bW1lcj4rIDQ5IDQ2MjEgOTY1 -NDwva29udF90ZWxlZmF4bnVtbWVyPgoJCTxrb250X2VtYWlsPm1heC50ZXN0ZXJtYW5uQGdteC5k -ZTwva29udF9lbWFpbD4KCQk8a29udF9kZW1haWw+bWF4LnRlc3Rlcm1hbm5AZ214LmRlLW1haWwu -ZGU8L2tvbnRfZGVtYWlsPgoJCTxwZXJzb2VubGljaGVFaWdudW5nPgoJCQk8bWFlbmdlbHZvcmhh -bmRlbj5mYWxzZTwvbWFlbmdlbHZvcmhhbmRlbj4KCQkJPGVybWl0dGx1bmdzdmVyZmFocmVuPmZh -bHNlPC9lcm1pdHRsdW5nc3ZlcmZhaHJlbj4KCQkJPE1pdGdsaWVkc2NoYWZ0SW5WZXJib3Rlcm5l -clZlcmVpbmlndW5nPmZhbHNlPC9NaXRnbGllZHNjaGFmdEluVmVyYm90ZXJuZXJWZXJlaW5pZ3Vu -Zz4KCQk8L3BlcnNvZW5saWNoZUVpZ251bmc+Cgk8L2FudHJhZ3N0ZWxsZXI+Cgk8R2ViaWV0SUQ+ -OTAwNzMxNDwvR2ViaWV0SUQ+Cgk8enVzdGFlbmRpZ2VzdGVsbGU+CgkJPE9yZ2FuaXNhdGlvbnNl -aW5oZWl0ZW5BdXN3YWhsPjk1MzU2Njk8L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5BdXN3YWhsPgoJ -CTxPcmdhbmlzYXRpb25zZWluaGVpdGVuSUQ+OTUzNTY2OTwvT3JnYW5pc2F0aW9uc2VpbmhlaXRl -bklEPgoJCTxPcmdhbmlzYXRpb25zZWluaGVpdGVuQkVaRUlDSE5VTkc+S3JlaXMKCQkJU2NobGVz -d2lnLUZsZW5zYnVyZy9LcmVpc3ZlcndhbHR1bmcgLSBBbGxnZW1laW5lCgkJCU9yZG51bmdzYW5n -ZWxlZ2VuaGVpdGVuPC9PcmdhbmlzYXRpb25zZWluaGVpdGVuQkVaRUlDSE5VTkc+CgkJPHN0cmFz -c2U+RmxlbnNidXJnZXIgU3RyYcOfZTwvc3RyYXNzZT4KCQk8aGF1c251bW1lcj43PC9oYXVzbnVt -bWVyPgoJCTxwb3N0bGVpdHphaGw+MjQ4Mzc8L3Bvc3RsZWl0emFobD4KCQk8b3J0SUQ+OTAwNzMx -NDwvb3J0SUQ+CgkJPG9ydD5TY2hsZXN3aWc8L29ydD4KCQk8dGVsZWZvbm51bW1lcj4wNDYyMSA4 -Ny0wPC90ZWxlZm9ubnVtbWVyPgoJCTx0ZWxlZmF4bnVtbWVyPjA0NjIxIDg3LTM2NjwvdGVsZWZh -eG51bW1lcj4KCQk8ZW1haWxhZHJlc3NlPkdlZmFocmVuYWJ3ZWhyQEtpZWwuZGU8L2VtYWlsYWRy -ZXNzZT4KCQk8ZGVtYWlsYWRyZXNzZSAvPgoJCTxrb250YWt0c3lzdGVtX2tlbm51bmc+YWZtc2g6 -OTUzNTY2OV9rbGVpbmVyV2FmZmVuc2NoZWluPC9rb250YWt0c3lzdGVtX2tlbm51bmc+CgkJPGtv -bnRha3RzeXN0ZW1fa2VubnVuZ3p1c2F0eiAvPgoJCTxBbmxpZWdlbkJFWkVJQ0hOVU5HPldhZmZl -bnNjaGVpbiAvIEtsZWluZXIgV2FmZmVuc2NoZWluPC9BbmxpZWdlbkJFWkVJQ0hOVU5HPgoJCTxs -ZWlrYUtFWUxJU1Q+OTkwODkwMDgwMDAwMDA7OTkwODkwMDgwMDEwMDA8L2xlaWthS0VZTElTVD4K -CQk8YXVzd2FobF96dXN0ZWxsdW5nPmFiaG9sZW48L2F1c3dhaGxfenVzdGVsbHVuZz4KCQk8Yl96 -dXN0ZWxsdW5nPkljaCBob2xlIGRlbiBLbGVpbmVuIFdhZmZlbnNjaGVpbiBzZWxic3QgYWIuPC9i -X3p1c3RlbGx1bmc+Cgk8L3p1c3RhZW5kaWdlc3RlbGxlPgoJPGVtcGZhbmdlbmRlc3RlbGxlPgoJ -CTxPcmdhbmlzYXRpb25zZWluaGVpdGVuQXVzd2FobD45MDY4ODczPC9PcmdhbmlzYXRpb25zZWlu -aGVpdGVuQXVzd2FobD4KCQk8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbklEPjkwNjg4NzM8L09yZ2Fu -aXNhdGlvbnNlaW5oZWl0ZW5JRD4KCQk8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbkJFWkVJQ0hOVU5H -PkVpbmhlaXRsaWNoZXIgQW5zcHJlY2hwYXJ0bmVyCgkJCVNjaGxlc3dpZy1Ib2xzdGVpbjwvT3Jn -YW5pc2F0aW9uc2VpbmhlaXRlbkJFWkVJQ0hOVU5HPgoJCTxzdHJhc3NlPlJldmVudGxvdWFsbGVl -PC9zdHJhc3NlPgoJCTxoYXVzbnVtbWVyPjY8L2hhdXNudW1tZXI+CgkJPHBvc3RsZWl0emFobD4y -NDEwNTwvcG9zdGxlaXR6YWhsPgoJCTxvcnRJRD45MDA2NDAyPC9vcnRJRD4KCQk8b3J0PktpZWw8 -L29ydD4KCQk8dGVsZWZvbm51bW1lcj4rNDkgNDMxIDk4OC04NjUwPC90ZWxlZm9ubnVtbWVyPgoJ -CTx0ZWxlZmF4bnVtbWVyPis0OSA0MzEgOTg4LTYxNjExMTE8L3RlbGVmYXhudW1tZXI+CgkJPGVt -YWlsYWRyZXNzZT5pbmZvQGVhLXNoLmRlPC9lbWFpbGFkcmVzc2U+CgkJPGRlbWFpbGFkcmVzc2U+ -ZWEtcG9zdHN0ZWxsZUBlYS1zaC5kZS1tYWlsLmRlPC9kZW1haWxhZHJlc3NlPgoJCTxrb250YWt0 -c3lzdGVtX2tlbm51bmc+YWZtc2g6OTA2ODg3M19BdXNuYWhtZUxLV0ZhaHJ2ZXJib3Q8L2tvbnRh -a3RzeXN0ZW1fa2VubnVuZz4KCQk8a29udGFrdHN5c3RlbV9rZW5udW5nenVzYXR6PmFsbGU8L2tv -bnRha3RzeXN0ZW1fa2VubnVuZ3p1c2F0ej4KCTwvZW1wZmFuZ2VuZGVzdGVsbGU+Cgk8ZXJrbGFl -cnVuZ2VuPgoJCTxjaGVja19nZWJ1ZWhyZW4+dHJ1ZTwvY2hlY2tfZ2VidWVocmVuPgoJCTxjaGVj -a19yaWNodGlna2VpdD50cnVlPC9jaGVja19yaWNodGlna2VpdD4KCQk8Y2hlY2tfZGF0ZW5zY2h1 -dHo+dHJ1ZTwvY2hlY2tfZGF0ZW5zY2h1dHo+CgkJPGNoZWNrX21pc3NicmF1Y2g+dHJ1ZTwvY2hl -Y2tfbWlzc2JyYXVjaD4KCQk8Yl9nZWJ1ZWhyZW5fYmVzY2hyaWZ0dW5nPiogTWlyIGlzdCBiZWth -bm50LCBkYXNzIGR1cmNoIGRhcyBFaW5yZWljaGVuCgkJCWRlcyBlbGVrdHJvbmlzY2hlbiBBbnRy -YWdlcyB2b24gZGVyIHp1c3TDpG5kaWdlbiBTdGVsbGUgR2Viw7xocmVuCgkJCWVyaG9iZW4gd2Vy -ZGVuIGvDtm5uZW4uPC9iX2dlYnVlaHJlbl9iZXNjaHJpZnR1bmc+CgkJPGJfZ2VidWVocmVuX2lu -dHJvPkdlYsO8aHIgYmVpIEF1c3N0ZWxsdW5nIGRlcyBrbGVpbmVuIFdhZmZlbnNjaGVpbnM6CgkJ -CTYwLDAwIEV1cm8uIEJlYXJiZWl0dW5nc2dlYsO8aHIgYmVpIFZlcnNhZ3VuZzogNDUsMDAgRXVy -by4KCQkJU2llIHNpbmQgZ2Vtw6TDnyDCpyAzOSBXYWZmRyB2ZXJwZmxpY2h0ZXQsIGRlciB6dXN0 -w6RuZGlnZW4gQmVow7ZyZGUgZGllIHp1cgoJCQlEdXJjaGbDvGhydW5nIGRlcyBHZXNldHplcyBl -cmZvcmRlcmxpY2hlbiBBdXNrw7xuZnRlIHp1IGVydGVpbGVuLiBadXIKCQkJUHLDvGZ1bmcgSWhy -ZXIgd2FmZmVucmVjaHRsaWNoZW4gWnV2ZXJsw6Rzc2lna2VpdCB1bmQgRWlnbnVuZyBob2x0IGRp -ZQoJCQlCZWjDtnJkZSBlaW5lIHVuYmVzY2hyw6Rua3RlIEF1c2t1bmZ0IGF1cyBkZW0gQnVuZGVz -emVudHJhbHJlZ2lzdGVyLAoJCQllaW5lIEF1c2t1bmZ0IGF1cyBkZW0gemVudHJhbGVuIHN0YWF0 -c2Fud2FsdHNjaGFmdGxpY2hlbgoJCQlWZXJmYWhyZW5zcmVnaXN0ZXIsIGVpbmUgU3RlbGx1bmdu -YWhtZSBkZXIgw7ZydGxpY2hlbgoJCQlQb2xpemVpZGllbnN0c3RlbGxlIHVuZCBJaHJlciBXb2hu -c2l0emdlbWVpbmRlIGVpbi48L2JfZ2VidWVocmVuX2ludHJvPgoJCTxiX3JpY2h0aWdrZWl0Piog -SWNoIGJlc3TDpHRpZ2UgZGllIFJpY2h0aWdrZWl0IG1laW5lciBBbmdhYmVuLjwvYl9yaWNodGln -a2VpdD4KCQk8Yl9kYXRlbnNjaHV0ej4qIEljaCBlcmtsw6RyZSBtaWNoIGRhbWl0IGVpbnZlcnN0 -YW5kZW4sIGRhc3MgZGVyCgkJCUVpbmhlaXRsaWNoZXIgQW5zcHJlY2hwYXJ0bmVyIFNjaGxlc3dp -Zy1Ib2xzdGVpbiB6dXIgRXJmw7xsbHVuZyBzZWluZXIKCQkJQXVmZ2FiZW4gbWVpbmUgRGF0ZW4g -dW50ZXIgRWluaGFsdHVuZyBkZXIgQmVzdGltbXVuZ2VuIGRlcgoJCQlEYXRlbnNjaHV0ei1HcnVu -ZHZlcm9yZG51bmcgKERTLUdWTykgdW5kIGRlcwoJCQlMYW5kZXNkYXRlbnNjaHV0emdlc2V0emVz -IFNjaGxlc3dpZy1Ib2xzdGVpbiAoTERTRy1TSCkgc3BlaWNoZXJ0LAoJCQl2ZXJhcmJlaXRldCB1 -bmQgZGllc2UgaW0gUmFobWVuIGRlciBnZXNldHpsaWNoZW4gQmVzdGltbXVuZ2VuIGFuIGRpZQoJ -CQlmw7xyIGRpZSBFbnRzY2hlaWR1bmcgenVzdMOkbmRpZ2UgU3RlbGxlIHdlaXRlcmxlaXRldC4g -RWJlbnNvIGJpbiBpY2gKCQkJbWl0IGRlciByZWNodHNrb25mb3JtZW4gRGF0ZW52ZXJhcmJlaXR1 -bmcgdW5kIFNwZWljaGVydW5nIGR1cmNoIGRpZQoJCQl6dXN0w6RuZGlnZSBTdGVsbGUgZWludmVy -c3RhbmRlbi4gTWlyIGlzdCBiZWthbm50LCBkYXNzIGljaCBkaWUKCQkJRWlud2lsbGlndW5nIGlu -IGRpZSBWZXJhcmJlaXR1bmcgdW5kIMOcYmVybWl0dGx1bmcgamVkZXJ6ZWl0IGdlZ2Vuw7xiZXIK -CQkJZGVtIEVpbmhlaXRsaWNoZXIgQW5zcHJlY2hwYXJ0bmVyIFNjaGxlc3dpZy1Ib2xzdGVpbiwg -UmV2ZW50bG91YWxsZWUKCQkJNiwgMjQxMDUgS2llbCB3aWRlcnJ1ZmVuIGthbm4uIEVpbiBXaWRl -cnJ1ZiBpc3QgYWJlciBudXIgd2lya3NhbSBmw7xyCgkJCWRpZSBadWt1bmZ0LiBWZXJhcmJlaXR1 -bmdlbiwgZGllIHZvciBkZW0gV2lkZXJydWYgZXJmb2xndCBzaW5kLCBzaW5kCgkJCWRhdm9uIG5p -Y2h0IGJldHJvZmZlbi4gw5xiZXIgZGllIFZlcmFyYmVpdHVuZyBtZWluZXIgcGVyc29uZW5iZXpv -Z2VuZW4KCQkJRGF0ZW4gdW5kIGRpZSBtaXIgbmFjaCBkZW4gZGF0ZW5zY2h1dHpyZWNodGxpY2hl -biBSZWdlbHVuZ2VuCgkJCXp1c3RlaGVuZGVuIEFuc3Byw7xjaGUgdW5kIFJlY2h0ZSBoYWJlIGlj -aCB1bnRlciBEYXRlbnNjaHV0emVya2zDpHJ1bmcKCQkJS2VubnRuaXMgZXJsYW5ndC48L2JfZGF0 -ZW5zY2h1dHo+CgkJPGJfbWlzc2JyYXVjaD4qIE1pciBpc3QgYmVrYW5udCwgZGFzcyB6dXIgVmVy -Zm9sZ3VuZyB3aWRlcnJlY2h0bGljaGVyCgkJCU51dHp1bmcgZGllIERhdGVuIG1laW5lcyB6dXIg -RGF0ZW5laW5nYWJlIGdlbnV0enRlbiBFbmRnZXLDpHRlcwoJCQlhdWZnZXplaWNobmV0IHVuZCB2 -ZXJ3ZW5kZXQgd2VyZGVuIGvDtm5uZW4uPC9iX21pc3NicmF1Y2g+CgkJPHBvbGljeXVybD5odHRw -Oi8vd2FmbXhwYTAwMi5kcGFvci5kZS9zaC9kYXRlbnNjaHV0ei9kYXRlbnNjaHV0emVya2xhZXJ1 -bmdFQV9kZS5kb2M8L3BvbGljeXVybD4KCTwvZXJrbGFlcnVuZ2VuPgoJPGxvZ291cmw+aHR0cDov -L3dhZm14cGEwMDIuZHBhb3IuZGUvc2gvbG9nb3Mva29wZl85MDY4ODczLmRvYzwvbG9nb3VybD4K -CTxmbT4KCQk8YW5zcHJlY2hwYXJ0bmVyPgoJCQk8ZmlybWVubmFtZSAvPgoJCQk8YW5yZWRlPkhl -cnI8L2FucmVkZT4KCQkJPHZvcm5hbWU+TWF4PC92b3JuYW1lPgoJCQk8ZmFtaWxpZW5uYW1lPlRl -c3Rlcm1hbm48L2ZhbWlsaWVubmFtZT4KCQkJPGFuc2NocmlmdD4KCQkJCTxzdHJhc3NlPkvDtm5p -Z3N3ZWc8L3N0cmFzc2U+CgkJCQk8aGF1c251bW1lcj43NDwvaGF1c251bW1lcj4KCQkJCTxwb3N0 -ZmFjaCAvPgoJCQkJPHBvc3RsZWl0emFobD4yNDgzNzwvcG9zdGxlaXR6YWhsPgoJCQkJPG9ydD5T -Y2hsZXN3aWc8L29ydD4KCQkJCTxvcnRzdGVpbCAvPgoJCQkJPHp1c2F0eiAvPgoJCQkJPHN0YWF0 -PkRldXRzY2hsYW5kPC9zdGFhdD4KCQkJPC9hbnNjaHJpZnQ+CgkJCTxrb250YWt0PgoJCQkJPHRl -bGVmb25udW1tZXI+KyA0OSA0NjIxIDk2NTQ8L3RlbGVmb25udW1tZXI+CgkJCQk8bW9iaWxudW1t -ZXI+KzQ5IDEyMzwvbW9iaWxudW1tZXI+CgkJCQk8dGVsZWZheG51bW1lcj4rIDQ5IDQ2MjEgOTY1 -NDwvdGVsZWZheG51bW1lcj4KCQkJCTxlbWFpbGFkcmVzc2U+bWF4LnRlc3Rlcm1hbm5AZ214LmRl -PC9lbWFpbGFkcmVzc2U+CgkJCQk8ZGVtYWlsYWRyZXNzZT5tYXgudGVzdGVybWFubkBnbXguZGUt -bWFpbC5kZTwvZGVtYWlsYWRyZXNzZT4KCQkJPC9rb250YWt0PgoJCTwvYW5zcHJlY2hwYXJ0bmVy -PgoJCTx2ZXJ3YWx0dW5nc2xlaXN0dW5nZW4+CgkJCTx2ZXJ3YWx0dW5nc2xlaXN0dW5nPgoJCQkJ -PGF1c2dld2FlaGx0ZV96dXN0YWVuZGlnZXN0ZWxsZT4KCQkJCQk8T3JnYW5pc2F0aW9uc2Vpbmhl -aXRlbklEPjk1MzU2Njk8L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5JRD4KCQkJCQk8T3JnYW5pc2F0 -aW9uc2VpbmhlaXRlbkJFWkVJQ0hOVU5HPktyZWlzCgkJCQkJCVNjaGxlc3dpZy1GbGVuc2J1cmcv -S3JlaXN2ZXJ3YWx0dW5nIC0gQWxsZ2VtZWluZQoJCQkJCQlPcmRudW5nc2FuZ2VsZWdlbmhlaXRl -bjwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbkJFWkVJQ0hOVU5HPgoJCQkJPC9hdXNnZXdhZWhsdGVf -enVzdGFlbmRpZ2VzdGVsbGU+CgkJCQk8R2ViaWV0SUQ+OTAwNzMxNDwvR2ViaWV0SUQ+CgkJCQk8 -R2ViaWV0QkVaRUlDSE5VTkc+U2NobGVzd2lnPC9HZWJpZXRCRVpFSUNITlVORz4KCQkJCTxBbmxp -ZWdlbklEPjg5NjY2NzE8L0FubGllZ2VuSUQ+CgkJCQk8QW5saWVnZW5CRVpFSUNITlVORz5XYWZm -ZW5zY2hlaW4gLyBLbGVpbmVyIFdhZmZlbnNjaGVpbjwvQW5saWVnZW5CRVpFSUNITlVORz4KCQkJ -CTxsZWlrYUtFWUxJU1Q+OTkwODkwMDgwMDAwMDA7OTkwODkwMDgwMDEwMDA8L2xlaWthS0VZTElT -VD4KCQkJCTxsZWlrYUJFWkVJQ0hOVU5HIC8+CgkJCTwvdmVyd2FsdHVuZ3NsZWlzdHVuZz4KCQk8 -L3ZlcndhbHR1bmdzbGVpc3R1bmdlbj4KCTwvZm0+CjwvbXlGb3JtPg==</content> - <contentType>text/xml</contentType> - <id>myForm-xml</id> - <name>XML-Daten.xml</name> - </attachments> - <attachments> - <attributes> - <key>X-IntelliForm-Signed</key> - <value>false</value> - </attributes> - <content>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</content> - <contentType>image/jpeg</contentType> - <id>assistants.E0FBA361C191F8B723949467AE302BEA24E4745E</id> - <name>Helge1.jpg</name> - </attachments> - <attachments> - <attributes> - <key>X-IntelliForm-Signed</key> - <value>false</value> - </attributes> - <content>UEsDBBQAAAgAACxEj1JexjIMJwAAACcAAAAIAAAAbWltZXR5cGVhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnRleHRQSwMEFAAACAAALESPUgYCUOZqAQAAagEAABgAAABUaHVtYm5haWxzL3RodW1ibmFpbC5wbmeJUE5HDQoaCgAAAA1JSERSAAAAtQAAAQAIAwAAAML9x+kAAAA8UExURYyQkJCTlZ6fo6qknrm2tri6vMW2qsrGv8rQ1d/Uytvm79vq9ezn5O/0+fDq5fT3+vj39////wAAAP///81aQL0AAADpSURBVHja7dK5DYAwEADB4zU2j6H/ZskpAOmk2Qom2HgyFtTU1NTU1NTU1NTU1J+us99Hz6ZexyGmPZu6LluZm6+pqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqan/6AXwWwUaPv4WoAAAAABJRU5ErkJgglBLAwQUAAgICAAsRI9SAAAAAAAAAAAAAAAACwAAAGNvbnRlbnQueG1spVddb9s2FH3vrxA0YG8M7bgDEi12H1oU2JoURZ0Be2UoSiYmiRpJWfa/3yVp0ZRjOVz8Ilu851zeb1IPn3Z1lWyZVFw0y3R+M0sT1lCR86Zcpn89f0V36afVhwdRFJyyLBe0q1mjERWNht8E2I3KnHSZdrLJBFFcZQ2pmco0zUTLmoGVhejM7uVWlN5X0XQLDtma7XQs2WBHXPISv7MFh+xckj6WbLAQ1JBeiFjyTlWoEBD1uiWan1ixq3jzzzLdaN1mGPd9f9MvboQs8fz+/h5bqTeYelzbycqicopZxcxmCs9v5njA1kyTWPsMNjSp6eoXJqNDQzR5lVW1LaMrYltOhIZuiIyuDQsep3eRx6d3kYfcmujNRE7u8BMI7ePp8VgLso7dy2BHoaKSt9FuOnTIF0J4Uw3BNag193Y2+4jde4DuL8J7yTWTAZxehFNSUR9xUZ8LGuDmGBCIbU2Z+sI3gVAThFvsxB6s8knV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</content> - <contentType>application/vnd.oasis.opendocument.text</contentType> - <id>assistants.52D79E5B2118D1740045AB87151535DCAD24E9A7</id> - <name>Helgetext2.odt</name> - </attachments> - <caller /> - <client>sh-dev</client> - <clientId>sh-dev</clientId> - <customer>Kiel</customer> - <customerId>Kiel</customerId> - <form>SimpleFormSendetAnHomeServer</form> - <formId>SimpleFormSendetAnHomeServer</formId> - <id>20210415307020414701</id> - <primaryDataAttachmentId>myForm-xml</primaryDataAttachmentId> - <sender>intelliform.by.kop-cloud.de</sender> - <timestamp>2021-04-15T08:33:39.443Z</timestamp> - <username /> - </data> - </ns2:deposit> - </soap:Body> -</soap:Envelope> \ No newline at end of file diff --git a/semantik-adapter/src/test/resources/intelliform/SimpleFormDataMapperTestFile.xml b/semantik-adapter/src/test/resources/intelliform/SimpleFormDataMapperTestFile.xml deleted file mode 100644 index 9a02da3f..00000000 --- a/semantik-adapter/src/test/resources/intelliform/SimpleFormDataMapperTestFile.xml +++ /dev/null @@ -1,60 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<myForm> - <simplenode>simplenodevalue</simplenode> - - <emptynode /> - - <nestedmapnode> - <nestedmapnode1>nestedmapnodevalue1</nestedmapnode1> - <nestedmapnode2>nestedmapnodevalue2</nestedmapnode2> - </nestedmapnode> - - <nestedlistnodewithstrings> - <nestednode>nestedlistnodevalue1</nestednode> - <nestednode>nestedlistnodevalue2</nestednode> - <nestednode>nestedlistnodevalue3</nestednode> - </nestedlistnodewithstrings> - - <nestedlistnodewithmap> - <nestednode> - <level2>nestedlistnodevalue1</level2> - </nestednode> - <nestednode> - <level2>nestedlistnodevalue1</level2> - <level2>nestedlistnodevalue2</level2> - <level2>nestedlistnodevalue3</level2> - </nestednode> - </nestedlistnodewithmap> - - <upload_anlagen> - <fs> - <fs-item> - <bez_flurstueck>12</bez_flurstueck> - </fs-item> - <fs-item> - <bez_flurstueck>14</bez_flurstueck> - </fs-item> - <fs-item> - <bez_flurstueck>4711</bez_flurstueck> - </fs-item> - </fs> - </upload_anlagen> - - <list_file_parent> - <list_file_parent-item> - <file content-type="image/jpeg" description="file description for first list file" id="assistants.21B483DAA2DC7900C1D1135E566D0F672CB42832" length="1184319">20210326_133516[1].jpg</file> - </list_file_parent-item> - <list_file_parent-item> - <file content-type="image/jpeg" description="file description for second list file" id="assistants.2F1FF737CF4F23191C1952091CB342254EE22A37" length="1384037">20210326_133526[1].jpg</file> - </list_file_parent-item> - </list_file_parent> - <single_file_parent> - <single_file_parent-item> - <file content-type="image/jpeg" description="file description for single file" id="assistants.B20451156C677116B91A4EF2D1E859837B6CE510" length="3066416">20210324_103054[1].jpg</file> - </single_file_parent-item> - </single_file_parent> - - <rest_response_name> - [{"strName":"strNameValue","objectName":[{"objectStrName":"objectStrNameValue","objectNumberName": 1 }]}] - </rest_response_name> -</myForm> \ No newline at end of file diff --git a/semantik-adapter/src/test/resources/intelliform/XML-Daten-1-SoapRequest.xml b/semantik-adapter/src/test/resources/intelliform/XML-Daten-1-SoapRequest.xml deleted file mode 100644 index ea9ad422..00000000 --- a/semantik-adapter/src/test/resources/intelliform/XML-Daten-1-SoapRequest.xml +++ /dev/null @@ -1,30 +0,0 @@ -<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> - <soap:Body> - <ns2:deposit xmlns:ns2="http://xmlns.cit.de/intelliform/2009/webservices/backend"> - <data> - <attachments> - <attributes> - <key>X-IntelliForm-Signed</key> - <value>false</value> - </attributes> - <content>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG15Rm9ybSB4bWxuczpwZGY9Imh0dHA6Ly94bWxucy5jaXQuZGUvYXNzaXN0YW50cy9wZGYiCgl4bWxuczp0PSJodHRwOi8veG1sbnMuY2l0LmRlL2ludGVsbGlmb3JtL3RyYW5zYWN0aW9uIgoJdDppZD0iMjAyMDExMTgzNjU2NzA4NjYxMDEiIHQ6dGltZXN0YW1wPSIyMDIwLTExLTE4VDA5OjA5OjI3LjYyN1oiCgl0OnNlbmRlcj0iYWZtLnNjaGxlc3dpZy1ob2xzdGVpbi5kZSIKCXQ6Zm9ybT0iS2xlaW5lciBXYWZmZW5zY2hlaW4gZ2VtLiDCpyAxMCBBYnMuIDQgU2F0eiA0IFdhZmZlbmdlc2V0eiAoV2FmZkcpIgoJdDpmb3JtLWlkPSJ3YWZmZW4va2xlaW5lcldhZmZlbnNjaGVpbiIKCXQ6Y3VzdG9tZXI9IkVpbmhlaXRsaWNoZXIgQW5zcHJlY2hwYXJ0bmVyIiB0OmN1c3RvbWVyLWlkPSJlYS1zaCIKCXQ6Y2xpZW50PSJTY2hsZXN3aWctSG9sc3RlaW4iIHQ6Y2xpZW50LWlkPSJsYW5kIj4KCTxrb250YWt0c3lzdGVtdHlwaWQ+MjMzMDM0NjAwPC9rb250YWt0c3lzdGVtdHlwaWQ+Cgk8a29udGFrdHN5c3RlbXR5cGlkbG4+MjMzMDM0NjAxPC9rb250YWt0c3lzdGVtdHlwaWRsbj4KCTxBbmxpZWdlbklEPjg5NjY2NzE8L0FubGllZ2VuSUQ+Cgk8bWFpbGJveGd1aWQ+Zjk3NzM2OGItNjk5MS00NmI5LWFmMTgtOGEyYTAzZDlhZDFiPC9tYWlsYm94Z3VpZD4KCTxuYW1laWQ+Y2JhY2IwMWEtMjgxMC0xMWVjLWJiNmYtYzMxOTM5Zjg4NzRlPC9uYW1laWQ+Cgk8YW50cmFnc3RlbGxlcj4KCQk8cGVyc19hbnJlZGU+SGVyciQwMzwvcGVyc19hbnJlZGU+CgkJPHBlcnNfbmFjaG5hbWU+VGVzdGVybWFubjwvcGVyc19uYWNobmFtZT4KCQk8cGVyc192b3JuYW1lPk1heDwvcGVyc192b3JuYW1lPgoJCTxwZXJzX2dlYnVydHNuYW1lPk1heCBUZXN0ZXJtYW5uPC9wZXJzX2dlYnVydHNuYW1lPgoJCTxwZXJzX2dlYnVydHNkYXR1bT4xOTk1LTAzLTIxPC9wZXJzX2dlYnVydHNkYXR1bT4KCQk8cGVyc19nZWJ1cnRzb3J0PkZsZW5zYnVyZzwvcGVyc19nZWJ1cnRzb3J0PgoJCTxwZXJzX2dlYnVydHNsYW5kPmRldXRzY2gkRGV1dHNjaGxhbmQkMDAwPC9wZXJzX2dlYnVydHNsYW5kPgoJCTxwZXJzX3N0YWF0c2FuZ2Vob2VyaWdrZWl0PmRldXRzY2gkRGV1dHNjaGxhbmQkMDAwPC9wZXJzX3N0YWF0c2FuZ2Vob2VyaWdrZWl0PgoJCTxiX2FucmVkZT5IZXJyPC9iX2FucmVkZT4KCQk8Yl9hbnJlZGVfc2NobHVlc3NlbG5yPjAzPC9iX2FucmVkZV9zY2hsdWVzc2VsbnI+CgkJPGJfZ2VidXJ0c2xhbmQ+RGV1dHNjaGxhbmQ8L2JfZ2VidXJ0c2xhbmQ+CgkJPGJfZ2VidXJ0c2xhbmRfc2lnbmF0dXI+MDAwPC9iX2dlYnVydHNsYW5kX3NpZ25hdHVyPgoJCTxiX3N0YWF0c2FuZ2Vob2VyaWdrZWl0PmRldXRzY2g8L2Jfc3RhYXRzYW5nZWhvZXJpZ2tlaXQ+CgkJPGJfc3RhYXRzYW5nZWhvZXJpZ2tlaXRfc2lnbmF0dXI+MDAwPC9iX3N0YWF0c2FuZ2Vob2VyaWdrZWl0X3NpZ25hdHVyPgoJCTxzaF9zdHJhc3NlPkvDtm5pZ3N3ZWc8L3NoX3N0cmFzc2U+CgkJPHNoX2hhdXNudW1tZXI+NzQ8L3NoX2hhdXNudW1tZXI+CgkJPHNoX3Bsej4yNDgzNzwvc2hfcGx6PgoJCTxvcnRfYXVzd2FobD45MDA3MzE0JDAxMDU5MDc1PC9vcnRfYXVzd2FobD4KCQk8b3J0PlNjaGxlc3dpZzwvb3J0PgoJCTxHZWJpZXRJRD45MDA3MzE0PC9HZWJpZXRJRD4KCQk8R2ViaWV0QkVaRUlDSE5VTkc+U2NobGVzd2lnPC9HZWJpZXRCRVpFSUNITlVORz4KCQk8R2ViaWV0R05SOTRfR05SPjAxMDU5MDc1PC9HZWJpZXRHTlI5NF9HTlI+CgkJPHN0YWF0PjAwMDwvc3RhYXQ+CgkJPGlzbzMxNjZudW1lcmlzY2g+Mjc2PC9pc28zMTY2bnVtZXJpc2NoPgoJCTxrb250X3RlbGVmb25udW1tZXI+KyA0OSA0NjIxIDk2NTQ8L2tvbnRfdGVsZWZvbm51bW1lcj4KCQk8a29udF9tb2JpbG51bW1lcj4rNDkgMTIzPC9rb250X21vYmlsbnVtbWVyPgoJCTxrb250X3RlbGVmYXhudW1tZXI+KyA0OSA0NjIxIDk2NTQ8L2tvbnRfdGVsZWZheG51bW1lcj4KCQk8a29udF9lbWFpbD5tYXgudGVzdGVybWFubkBnbXguZGU8L2tvbnRfZW1haWw+CgkJPGtvbnRfZGVtYWlsPm1heC50ZXN0ZXJtYW5uQGdteC5kZS1tYWlsLmRlPC9rb250X2RlbWFpbD4KCQk8cGVyc29lbmxpY2hlRWlnbnVuZz4KCQkJPG1hZW5nZWx2b3JoYW5kZW4+ZmFsc2U8L21hZW5nZWx2b3JoYW5kZW4+CgkJCTxlcm1pdHRsdW5nc3ZlcmZhaHJlbj5mYWxzZTwvZXJtaXR0bHVuZ3N2ZXJmYWhyZW4+CgkJCTxNaXRnbGllZHNjaGFmdEluVmVyYm90ZXJuZXJWZXJlaW5pZ3VuZz5mYWxzZTwvTWl0Z2xpZWRzY2hhZnRJblZlcmJvdGVybmVyVmVyZWluaWd1bmc+CgkJPC9wZXJzb2VubGljaGVFaWdudW5nPgoJPC9hbnRyYWdzdGVsbGVyPgoJPEdlYmlldElEPjkwMDczMTQ8L0dlYmlldElEPgoJPHp1c3RhZW5kaWdlc3RlbGxlPgoJCTxPcmdhbmlzYXRpb25zZWluaGVpdGVuQXVzd2FobD45NTM1NjY5PC9PcmdhbmlzYXRpb25zZWluaGVpdGVuQXVzd2FobD4KCQk8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbklEPjk1MzU2Njk8L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5JRD4KCQk8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbkJFWkVJQ0hOVU5HPktyZWlzCgkJCVNjaGxlc3dpZy1GbGVuc2J1cmcvS3JlaXN2ZXJ3YWx0dW5nIC0gQWxsZ2VtZWluZQoJCQlPcmRudW5nc2FuZ2VsZWdlbmhlaXRlbjwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbkJFWkVJQ0hOVU5HPgoJCTxzdHJhc3NlPkZsZW5zYnVyZ2VyIFN0cmHDn2U8L3N0cmFzc2U+CgkJPGhhdXNudW1tZXI+NzwvaGF1c251bW1lcj4KCQk8cG9zdGxlaXR6YWhsPjI0ODM3PC9wb3N0bGVpdHphaGw+CgkJPG9ydElEPjkwMDczMTQ8L29ydElEPgoJCTxvcnQ+U2NobGVzd2lnPC9vcnQ+CgkJPHRlbGVmb25udW1tZXI+MDQ2MjEgODctMDwvdGVsZWZvbm51bW1lcj4KCQk8dGVsZWZheG51bW1lcj4wNDYyMSA4Ny0zNjY8L3RlbGVmYXhudW1tZXI+CgkJPGVtYWlsYWRyZXNzZT5HZWZhaHJlbmFid2VockBLaWVsLmRlPC9lbWFpbGFkcmVzc2U+CgkJPGRlbWFpbGFkcmVzc2UgLz4KCQk8a29udGFrdHN5c3RlbV9rZW5udW5nPmFmbXNoOjk1MzU2Njlfa2xlaW5lcldhZmZlbnNjaGVpbjwva29udGFrdHN5c3RlbV9rZW5udW5nPgoJCTxrb250YWt0c3lzdGVtX2tlbm51bmd6dXNhdHogLz4KCQk8QW5saWVnZW5CRVpFSUNITlVORz5XYWZmZW5zY2hlaW4gLyBLbGVpbmVyIFdhZmZlbnNjaGVpbjwvQW5saWVnZW5CRVpFSUNITlVORz4KCQk8bGVpa2FLRVlMSVNUPjk5MDg5MDA4MDAwMDAwOzk5MDg5MDA4MDAxMDAwPC9sZWlrYUtFWUxJU1Q+CgkJPGF1c3dhaGxfenVzdGVsbHVuZz5hYmhvbGVuPC9hdXN3YWhsX3p1c3RlbGx1bmc+CgkJPGJfenVzdGVsbHVuZz5JY2ggaG9sZSBkZW4gS2xlaW5lbiBXYWZmZW5zY2hlaW4gc2VsYnN0IGFiLjwvYl96dXN0ZWxsdW5nPgoJPC96dXN0YWVuZGlnZXN0ZWxsZT4KCTxlbXBmYW5nZW5kZXN0ZWxsZT4KCQk8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbkF1c3dhaGw+OTA2ODg3MzwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbkF1c3dhaGw+CgkJPE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5JRD45MDY4ODczPC9PcmdhbmlzYXRpb25zZWluaGVpdGVuSUQ+CgkJPE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz5FaW5oZWl0bGljaGVyIEFuc3ByZWNocGFydG5lcgoJCQlTY2hsZXN3aWctSG9sc3RlaW48L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz4KCQk8c3RyYXNzZT5SZXZlbnRsb3VhbGxlZTwvc3RyYXNzZT4KCQk8aGF1c251bW1lcj42PC9oYXVzbnVtbWVyPgoJCTxwb3N0bGVpdHphaGw+MjQxMDU8L3Bvc3RsZWl0emFobD4KCQk8b3J0SUQ+OTAwNjQwMjwvb3J0SUQ+CgkJPG9ydD5LaWVsPC9vcnQ+CgkJPHRlbGVmb25udW1tZXI+KzQ5IDQzMSA5ODgtODY1MDwvdGVsZWZvbm51bW1lcj4KCQk8dGVsZWZheG51bW1lcj4rNDkgNDMxIDk4OC02MTYxMTExPC90ZWxlZmF4bnVtbWVyPgoJCTxlbWFpbGFkcmVzc2U+aW5mb0BlYS1zaC5kZTwvZW1haWxhZHJlc3NlPgoJCTxkZW1haWxhZHJlc3NlPmVhLXBvc3RzdGVsbGVAZWEtc2guZGUtbWFpbC5kZTwvZGVtYWlsYWRyZXNzZT4KCQk8a29udGFrdHN5c3RlbV9rZW5udW5nPmFmbXNoOjkwNjg4NzNfQXVzbmFobWVMS1dGYWhydmVyYm90PC9rb250YWt0c3lzdGVtX2tlbm51bmc+CgkJPGtvbnRha3RzeXN0ZW1fa2VubnVuZ3p1c2F0ej5hbGxlPC9rb250YWt0c3lzdGVtX2tlbm51bmd6dXNhdHo+Cgk8L2VtcGZhbmdlbmRlc3RlbGxlPgoJPGVya2xhZXJ1bmdlbj4KCQk8Y2hlY2tfZ2VidWVocmVuPnRydWU8L2NoZWNrX2dlYnVlaHJlbj4KCQk8Y2hlY2tfcmljaHRpZ2tlaXQ+dHJ1ZTwvY2hlY2tfcmljaHRpZ2tlaXQ+CgkJPGNoZWNrX2RhdGVuc2NodXR6PnRydWU8L2NoZWNrX2RhdGVuc2NodXR6PgoJCTxjaGVja19taXNzYnJhdWNoPnRydWU8L2NoZWNrX21pc3NicmF1Y2g+CgkJPGJfZ2VidWVocmVuX2Jlc2NocmlmdHVuZz4qIE1pciBpc3QgYmVrYW5udCwgZGFzcyBkdXJjaCBkYXMgRWlucmVpY2hlbgoJCQlkZXMgZWxla3Ryb25pc2NoZW4gQW50cmFnZXMgdm9uIGRlciB6dXN0w6RuZGlnZW4gU3RlbGxlIEdlYsO8aHJlbgoJCQllcmhvYmVuIHdlcmRlbiBrw7ZubmVuLjwvYl9nZWJ1ZWhyZW5fYmVzY2hyaWZ0dW5nPgoJCTxiX2dlYnVlaHJlbl9pbnRybz5HZWLDvGhyIGJlaSBBdXNzdGVsbHVuZyBkZXMga2xlaW5lbiBXYWZmZW5zY2hlaW5zOgoJCQk2MCwwMCBFdXJvLiBCZWFyYmVpdHVuZ3NnZWLDvGhyIGJlaSBWZXJzYWd1bmc6IDQ1LDAwIEV1cm8uCgkJCVNpZSBzaW5kIGdlbcOkw58gwqcgMzkgV2FmZkcgdmVycGZsaWNodGV0LCBkZXIgenVzdMOkbmRpZ2VuIEJlaMO2cmRlIGRpZSB6dXIKCQkJRHVyY2hmw7xocnVuZyBkZXMgR2VzZXR6ZXMgZXJmb3JkZXJsaWNoZW4gQXVza8O8bmZ0ZSB6dSBlcnRlaWxlbi4gWnVyCgkJCVByw7xmdW5nIElocmVyIHdhZmZlbnJlY2h0bGljaGVuIFp1dmVybMOkc3NpZ2tlaXQgdW5kIEVpZ251bmcgaG9sdCBkaWUKCQkJQmVow7ZyZGUgZWluZSB1bmJlc2NocsOkbmt0ZSBBdXNrdW5mdCBhdXMgZGVtIEJ1bmRlc3plbnRyYWxyZWdpc3RlciwKCQkJZWluZSBBdXNrdW5mdCBhdXMgZGVtIHplbnRyYWxlbiBzdGFhdHNhbndhbHRzY2hhZnRsaWNoZW4KCQkJVmVyZmFocmVuc3JlZ2lzdGVyLCBlaW5lIFN0ZWxsdW5nbmFobWUgZGVyIMO2cnRsaWNoZW4KCQkJUG9saXplaWRpZW5zdHN0ZWxsZSB1bmQgSWhyZXIgV29obnNpdHpnZW1laW5kZSBlaW4uPC9iX2dlYnVlaHJlbl9pbnRybz4KCQk8Yl9yaWNodGlna2VpdD4qIEljaCBiZXN0w6R0aWdlIGRpZSBSaWNodGlna2VpdCBtZWluZXIgQW5nYWJlbi48L2JfcmljaHRpZ2tlaXQ+CgkJPGJfZGF0ZW5zY2h1dHo+KiBJY2ggZXJrbMOkcmUgbWljaCBkYW1pdCBlaW52ZXJzdGFuZGVuLCBkYXNzIGRlcgoJCQlFaW5oZWl0bGljaGVyIEFuc3ByZWNocGFydG5lciBTY2hsZXN3aWctSG9sc3RlaW4genVyIEVyZsO8bGx1bmcgc2VpbmVyCgkJCUF1ZmdhYmVuIG1laW5lIERhdGVuIHVudGVyIEVpbmhhbHR1bmcgZGVyIEJlc3RpbW11bmdlbiBkZXIKCQkJRGF0ZW5zY2h1dHotR3J1bmR2ZXJvcmRudW5nIChEUy1HVk8pIHVuZCBkZXMKCQkJTGFuZGVzZGF0ZW5zY2h1dHpnZXNldHplcyBTY2hsZXN3aWctSG9sc3RlaW4gKExEU0ctU0gpIHNwZWljaGVydCwKCQkJdmVyYXJiZWl0ZXQgdW5kIGRpZXNlIGltIFJhaG1lbiBkZXIgZ2VzZXR6bGljaGVuIEJlc3RpbW11bmdlbiBhbiBkaWUKCQkJZsO8ciBkaWUgRW50c2NoZWlkdW5nIHp1c3TDpG5kaWdlIFN0ZWxsZSB3ZWl0ZXJsZWl0ZXQuIEViZW5zbyBiaW4gaWNoCgkJCW1pdCBkZXIgcmVjaHRza29uZm9ybWVuIERhdGVudmVyYXJiZWl0dW5nIHVuZCBTcGVpY2hlcnVuZyBkdXJjaCBkaWUKCQkJenVzdMOkbmRpZ2UgU3RlbGxlIGVpbnZlcnN0YW5kZW4uIE1pciBpc3QgYmVrYW5udCwgZGFzcyBpY2ggZGllCgkJCUVpbndpbGxpZ3VuZyBpbiBkaWUgVmVyYXJiZWl0dW5nIHVuZCDDnGJlcm1pdHRsdW5nIGplZGVyemVpdCBnZWdlbsO8YmVyCgkJCWRlbSBFaW5oZWl0bGljaGVyIEFuc3ByZWNocGFydG5lciBTY2hsZXN3aWctSG9sc3RlaW4sIFJldmVudGxvdWFsbGVlCgkJCTYsIDI0MTA1IEtpZWwgd2lkZXJydWZlbiBrYW5uLiBFaW4gV2lkZXJydWYgaXN0IGFiZXIgbnVyIHdpcmtzYW0gZsO8cgoJCQlkaWUgWnVrdW5mdC4gVmVyYXJiZWl0dW5nZW4sIGRpZSB2b3IgZGVtIFdpZGVycnVmIGVyZm9sZ3Qgc2luZCwgc2luZAoJCQlkYXZvbiBuaWNodCBiZXRyb2ZmZW4uIMOcYmVyIGRpZSBWZXJhcmJlaXR1bmcgbWVpbmVyIHBlcnNvbmVuYmV6b2dlbmVuCgkJCURhdGVuIHVuZCBkaWUgbWlyIG5hY2ggZGVuIGRhdGVuc2NodXR6cmVjaHRsaWNoZW4gUmVnZWx1bmdlbgoJCQl6dXN0ZWhlbmRlbiBBbnNwcsO8Y2hlIHVuZCBSZWNodGUgaGFiZSBpY2ggdW50ZXIgRGF0ZW5zY2h1dHplcmtsw6RydW5nCgkJCUtlbm50bmlzIGVybGFuZ3QuPC9iX2RhdGVuc2NodXR6PgoJCTxiX21pc3NicmF1Y2g+KiBNaXIgaXN0IGJla2FubnQsIGRhc3MgenVyIFZlcmZvbGd1bmcgd2lkZXJyZWNodGxpY2hlcgoJCQlOdXR6dW5nIGRpZSBEYXRlbiBtZWluZXMgenVyIERhdGVuZWluZ2FiZSBnZW51dHp0ZW4gRW5kZ2Vyw6R0ZXMKCQkJYXVmZ2V6ZWljaG5ldCB1bmQgdmVyd2VuZGV0IHdlcmRlbiBrw7ZubmVuLjwvYl9taXNzYnJhdWNoPgoJCTxwb2xpY3l1cmw+aHR0cDovL3dhZm14cGEwMDIuZHBhb3IuZGUvc2gvZGF0ZW5zY2h1dHovZGF0ZW5zY2h1dHplcmtsYWVydW5nRUFfZGUuZG9jPC9wb2xpY3l1cmw+Cgk8L2Vya2xhZXJ1bmdlbj4KCTxsb2dvdXJsPmh0dHA6Ly93YWZteHBhMDAyLmRwYW9yLmRlL3NoL2xvZ29zL2tvcGZfOTA2ODg3My5kb2M8L2xvZ291cmw+Cgk8Zm0+CgkJPGFuc3ByZWNocGFydG5lcj4KCQkJPGZpcm1lbm5hbWUgLz4KCQkJPGFucmVkZT5IZXJyPC9hbnJlZGU+CgkJCTx2b3JuYW1lPk1heDwvdm9ybmFtZT4KCQkJPGZhbWlsaWVubmFtZT5UZXN0ZXJtYW5uPC9mYW1pbGllbm5hbWU+CgkJCTxhbnNjaHJpZnQ+CgkJCQk8c3RyYXNzZT5Lw7ZuaWdzd2VnPC9zdHJhc3NlPgoJCQkJPGhhdXNudW1tZXI+NzQ8L2hhdXNudW1tZXI+CgkJCQk8cG9zdGZhY2ggLz4KCQkJCTxwb3N0bGVpdHphaGw+MjQ4Mzc8L3Bvc3RsZWl0emFobD4KCQkJCTxvcnQ+U2NobGVzd2lnPC9vcnQ+CgkJCQk8b3J0c3RlaWwgLz4KCQkJCTx6dXNhdHogLz4KCQkJCTxzdGFhdD5EZXV0c2NobGFuZDwvc3RhYXQ+CgkJCTwvYW5zY2hyaWZ0PgoJCQk8a29udGFrdD4KCQkJCTx0ZWxlZm9ubnVtbWVyPisgNDkgNDYyMSA5NjU0PC90ZWxlZm9ubnVtbWVyPgoJCQkJPG1vYmlsbnVtbWVyPis0OSAxMjM8L21vYmlsbnVtbWVyPgoJCQkJPHRlbGVmYXhudW1tZXI+KyA0OSA0NjIxIDk2NTQ8L3RlbGVmYXhudW1tZXI+CgkJCQk8ZW1haWxhZHJlc3NlPm1heC50ZXN0ZXJtYW5uQGdteC5kZTwvZW1haWxhZHJlc3NlPgoJCQkJPGRlbWFpbGFkcmVzc2U+bWF4LnRlc3Rlcm1hbm5AZ214LmRlLW1haWwuZGU8L2RlbWFpbGFkcmVzc2U+CgkJCTwva29udGFrdD4KCQk8L2Fuc3ByZWNocGFydG5lcj4KCQk8dmVyd2FsdHVuZ3NsZWlzdHVuZ2VuPgoJCQk8dmVyd2FsdHVuZ3NsZWlzdHVuZz4KCQkJCTxhdXNnZXdhZWhsdGVfenVzdGFlbmRpZ2VzdGVsbGU+CgkJCQkJPE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5JRD45NTM1NjY5PC9PcmdhbmlzYXRpb25zZWluaGVpdGVuSUQ+CgkJCQkJPE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz5LcmVpcwoJCQkJCQlTY2hsZXN3aWctRmxlbnNidXJnL0tyZWlzdmVyd2FsdHVuZyAtIEFsbGdlbWVpbmUKCQkJCQkJT3JkbnVuZ3NhbmdlbGVnZW5oZWl0ZW48L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz4KCQkJCTwvYXVzZ2V3YWVobHRlX3p1c3RhZW5kaWdlc3RlbGxlPgoJCQkJPEdlYmlldElEPjkwMDczMTQ8L0dlYmlldElEPgoJCQkJPEdlYmlldEJFWkVJQ0hOVU5HPlNjaGxlc3dpZzwvR2ViaWV0QkVaRUlDSE5VTkc+CgkJCQk8QW5saWVnZW5JRD44OTY2NjcxPC9BbmxpZWdlbklEPgoJCQkJPEFubGllZ2VuQkVaRUlDSE5VTkc+V2FmZmVuc2NoZWluIC8gS2xlaW5lciBXYWZmZW5zY2hlaW48L0FubGllZ2VuQkVaRUlDSE5VTkc+CgkJCQk8bGVpa2FLRVlMSVNUPjk5MDg5MDA4MDAwMDAwOzk5MDg5MDA4MDAxMDAwPC9sZWlrYUtFWUxJU1Q+CgkJCQk8bGVpa2FCRVpFSUNITlVORyAvPgoJCQk8L3ZlcndhbHR1bmdzbGVpc3R1bmc+CgkJPC92ZXJ3YWx0dW5nc2xlaXN0dW5nZW4+Cgk8L2ZtPgo8L215Rm9ybT4=</content> - <contentType>text/xml</contentType> - <id>myForm-xml</id> - <name>XML-Daten.xml</name> - </attachments> - <caller /> - <client>sh-dev</client> - <clientId>sh-dev</clientId> - <customer>Kiel</customer> - <customerId>Kiel</customerId> - <form>SimpleFormSendetAnTestServer</form> - <formId>SimpleFormSendetAnTestServer</formId> - <id>20221212092912345678</id> - <primaryDataAttachmentId>myForm-xml</primaryDataAttachmentId> - <sender>intelliform.ozg-sh.de</sender> - <timestamp>2022-12-12T09:30:29.443Z</timestamp> - <username /> - </data> - </ns2:deposit> - </soap:Body> -</soap:Envelope> diff --git a/semantik-adapter/src/test/resources/intelliform/XML-Daten_Gewerbe.xml b/semantik-adapter/src/test/resources/intelliform/XML-Daten_Gewerbe.xml deleted file mode 100644 index 84555d9a..00000000 --- a/semantik-adapter/src/test/resources/intelliform/XML-Daten_Gewerbe.xml +++ /dev/null @@ -1,241 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<myForm xmlns:pdf="http://xmlns.cit.de/assistants/pdf" - xmlns:t="http://xmlns.cit.de/intelliform/transaction" - t:id="20201202575230443004" t:timestamp="2020-12-02T14:58:43.790Z" - t:sender="afm.schleswig-holstein.de" t:form="Gewerbeanmeldung" - t:form-id="eGewerbe/eGewerbeAnmeldung" - t:customer="Einheitlicher Ansprechpartner" t:customer-id="ea-sh" - t:client="Schleswig-Holstein" t:client-id="land"> - <GueltigAb>2020-11-02</GueltigAb> - <GrundAnmeldungSchluessel>01</GrundAnmeldungSchluessel> - <AnliegenID>8938634</AnliegenID> - <NiederlassungArt>1</NiederlassungArt> - <IstReisegewerbe>false</IstReisegewerbe> - <BetriebArtIndustrie>false</BetriebArtIndustrie> - <BetriebArtHandwerk>false</BetriebArtHandwerk> - <BetriebArtHandel>false</BetriebArtHandel> - <BetriebArtSonstiges>true</BetriebArtSonstiges> - <rechtsform>nicht eingetragenes Einzelunternehmen</rechtsform> - <rfm>180</rfm> - <registerart /> - <min2gesellschafter>false</min2gesellschafter> - <gesetzlichervertreter>Inhaber</gesetzlichervertreter> - <Betrieb> - <ID>910838</ID> - <geschaeftsbezeichnung>OZG-Consulting</geschaeftsbezeichnung> - <EintragungPLZ /> - <EintragungOrt /> - <GerichtSchluessel /> - </Betrieb> - <sh_strasse>Reventloualle</sh_strasse> - <sh_zusatz /> - <sh_hausnummer>6</sh_hausnummer> - <sh_plz>24105</sh_plz> - <ort_auswahl>9006402$01002000</ort_auswahl> - <sh_ortsteil /> - <ort>Kiel</ort> - <GebietID>9006402</GebietID> - <GebietBEZEICHNUNG>Kiel</GebietBEZEICHNUNG> - <GebietGNR94_GNR>01002000</GebietGNR94_GNR> - <staat>000</staat> - <iso3166numerisch>276</iso3166numerisch> - <kont_telefonnummer>0431 123</kont_telefonnummer> - <kont_telefaxnummer>+ 49 4621 9654</kont_telefaxnummer> - <kont_email>max.testermann@gmx.de</kont_email> - <kont_demail>max.testermann@gmx.de-mail.de</kont_demail> - <kont_homepage>http://www.max-tester.de</kont_homepage> - <b_kont_vorwahl_telefon>0431</b_kont_vorwahl_telefon> - <b_kont_telefon>123</b_kont_telefon> - <b_kont_vorwahl_telefax>+ 49 4621</b_kont_vorwahl_telefax> - <b_kont_telefax>9654</b_kont_telefax> - <TaetigkeitenGesamt> - <TaetigkeitenGesamt-item> - <auswahl_oberbegriff>S</auswahl_oberbegriff> - <auswahl_kategorie>96</auswahl_kategorie> - <check_taetigkeitsschwerpunkt>true</check_taetigkeitsschwerpunkt> - <a_taetigkeit>OZG-Entwicklung</a_taetigkeit> - <b_oberbegriff>S Erbringung von sonstigen Dienstleistungen</b_oberbegriff> - <b_kategorie>96 Erbringung von sonstigen überwiegend persönlichen - Dienstleistungen</b_kategorie> - <b_unterklasse>96.09.0 Erbringung von sonstigen Dienstleistungen a. - n. g.</b_unterklasse> - <b_unterklasse_schluessel>96.09.0</b_unterklasse_schluessel> - <b_inkl>- Tätigkeiten von Astrologinnen, Astrologen Spiritistinnenund - Spiritisten - Erbringung persönlicher Dienstleistungen wie - Begleitdienste, Heirats- und Partnervermittlung - Betreuung von - Haustieren wie Unterbringung, Pflege, Beaufsichtigung und Dressur - - Tätigkeiten von Ahnenforschungsinstituten - Tätigkeiten von - Tätowierungs- und Piercingstudios - Tätigkeiten von Schuhputzerinnen - und Schuhputzern, Trägerinnen und Trägern, Parkplatzzuweiserinnen - und -zuweisern usw. - Betrieb von münzbetriebenen Geräten für - persönliche Dienstleistungen wie Fotoautomaten, Waagen, - Blutdruckmessern, Schließfächern usw.</b_inkl> - </TaetigkeitenGesamt-item> - </TaetigkeitenGesamt> - <IstNebenerwerb>false</IstNebenerwerb> - <AnzahlVollzeitBeschaeftigte>1</AnzahlVollzeitBeschaeftigte> - <AnzahlTeilzeitBeschaeftigte>0</AnzahlTeilzeitBeschaeftigte> - <BeteiligtePerson> - <BeteiligtePerson-item> - <personFunktion>1</personFunktion> - <personFunktionText>Einzelgewerbetreibender</personFunktionText> - <doktorgradSchluessel /> - <doktorgrad /> - <familienname>Testermann</familienname> - <vorname>Max</vorname> - <geschlechtText>männlich</geschlechtText> - <geschlecht>1</geschlecht> - <geburtsname>Max Testermann</geburtsname> - <geburtsdatum>1995-03-21</geburtsdatum> - <geburtsort>Flensburg</geburtsort> - <geburtsland>Deutschland</geburtsland> - <geburtslandSchluesel>000</geburtslandSchluesel> - <staatsangehoerigkeit>deutsch</staatsangehoerigkeit> - <staatsangehoerigkeitSchluessel>000</staatsangehoerigkeitSchluessel> - <adr_strasse>Königsweg</adr_strasse> - <adr_zusatz>Appartment 321</adr_zusatz> - <adr_hausnummer>74</adr_hausnummer> - <adr_plz>24837</adr_plz> - <adr_ort>Schleswig</adr_ort> - <adr_ortsteil>Schleswig</adr_ortsteil> - <adr_land>Deutschland$DE$DEU$276$.de</adr_land> - <b_adr_numerisch>276</b_adr_numerisch> - <b_adr_land>Deutschland</b_adr_land> - <b_adr_alpha2>DE</b_adr_alpha2> - <b_adr_alpha3>DEU</b_adr_alpha3> - <b_adr_domain>.de</b_adr_domain> - <kont_telefonnummer>+ 49 4621 9654</kont_telefonnummer> - <kont_telefaxnummer>+ 49 4621 9654</kont_telefaxnummer> - <kont_email>max.testermann@gmx.de</kont_email> - <kont_demail>max.testermann@gmx.de-mail.de</kont_demail> - <kont_homepage>http://www.max-tester.de</kont_homepage> - <b_kont_vorwahl_telefon>+ 49 4621</b_kont_vorwahl_telefon> - <b_kont_telefon>9654</b_kont_telefon> - <b_kont_vorwahl_telefax>+ 49 4621</b_kont_vorwahl_telefax> - <b_kont_telefax>9654</b_kont_telefax> - <Status_Erlaubnis>0</Status_Erlaubnis> - <b_Erlaubnis>Liegt nicht vor</b_Erlaubnis> - </BeteiligtePerson-item> - </BeteiligtePerson> - <KontaktsystemTypA>233034600</KontaktsystemTypA> - <KontaktsystemTypB>233034601</KontaktsystemTypB> - <zustaendigestelle> - <OrganisationseinheitenAuswahl>9081994</OrganisationseinheitenAuswahl> - <OrganisationseinheitenID>9081994</OrganisationseinheitenID> - <OrganisationseinheitenBEZEICHNUNG>Landeshauptstadt Kiel - Bürger- und - Ordnungsamt, Gewerbemeldestelle</OrganisationseinheitenBEZEICHNUNG> - <strasse>Fabrikstraße</strasse> - <hausnummer>8-10 </hausnummer> - <postleitzahl>24103</postleitzahl> - <ortID>9006402</ortID> - <ort>Kiel</ort> - <telefonnummer>+49 431 901-2807</telefonnummer> - <telefaxnummer>+49 431 901-62070</telefaxnummer> - <emailadresse>Gewerbemeldestelle@kiel.de</emailadresse> - <demailadresse /> - <kontaktsystem_kennung /> - <kontaktsystem_kennungzusatz /> - <AnliegenBEZEICHNUNG>Gewerbeanmeldung, Elektronische Gewerbeanzeige</AnliegenBEZEICHNUNG> - <leikaKEYLIST>99050012104000</leikaKEYLIST> - </zustaendigestelle> - <empfangendestelle> - <OrganisationseinheitenAuswahl>9068873</OrganisationseinheitenAuswahl> - <OrganisationseinheitenID>9068873</OrganisationseinheitenID> - <OrganisationseinheitenBEZEICHNUNG>Einheitlicher Ansprechpartner - Schleswig-Holstein</OrganisationseinheitenBEZEICHNUNG> - <strasse>Reventlouallee</strasse> - <hausnummer>6</hausnummer> - <postleitzahl>24105</postleitzahl> - <ortID>9006402</ortID> - <ort>Kiel</ort> - <telefonnummer>+49 431 988-8650</telefonnummer> - <telefaxnummer>+49 431 988-6161111</telefaxnummer> - <emailadresse>info@ea-sh.de</emailadresse> - <demailadresse>ea-poststelle@ea-sh.de-mail.de</demailadresse> - <kontaktsystem_kennung>afmsh:9068873_AusnahmeLKWFahrverbot</kontaktsystem_kennung> - <kontaktsystem_kennungzusatz>alle</kontaktsystem_kennungzusatz> - </empfangendestelle> - <erklaerungen> - <check_gebuehren>true</check_gebuehren> - <check_richtigkeit>true</check_richtigkeit> - <check_datenschutz>true</check_datenschutz> - <check_missbrauch>true</check_missbrauch> - <check_hinweis>true</check_hinweis> - <b_gebuehren_beschriftung>* Die Gewerbeanmeldung ist kostenpflichtig. - Die Höhe der Gebühren bemisst sich nach der Landesverordnung über - Verwaltungsgebühren (Allgemeiner Gebührentarif) Tarifstelle 11.1.1 - - VwGebV. Genaue Auskünfte hierzu erteilt das zuständige Gewerbeamt.</b_gebuehren_beschriftung> - <b_gebuehren_intro /> - <b_richtigkeit>* Ich bestätige die Richtigkeit meiner Angaben.</b_richtigkeit> - <b_datenschutz>* Ich erkläre mich damit einverstanden, dass der - Einheitlicher Ansprechpartner Schleswig-Holstein zur Erfüllung seiner - Aufgaben meine Daten unter Einhaltung der Bestimmungen der - Datenschutz-Grundverordnung (DS-GVO) und des - Landesdatenschutzgesetzes Schleswig-Holstein (LDSG-SH) speichert, - verarbeitet und diese im Rahmen der gesetzlichen Bestimmungen an die - für die Entscheidung zuständige Stelle weiterleitet. Ebenso bin ich - mit der rechtskonformen Datenverarbeitung und Speicherung durch die - zuständige Stelle einverstanden. Mir ist bekannt, dass ich die - Einwilligung in die Verarbeitung und Übermittlung jederzeit gegenüber - dem Einheitlicher Ansprechpartner Schleswig-Holstein, Reventlouallee - 6, 24105 Kiel widerrufen kann. Ein Widerruf ist aber nur wirksam für - die Zukunft. Verarbeitungen, die vor dem Widerruf erfolgt sind, sind - davon nicht betroffen. Über die Verarbeitung meiner personenbezogenen - Daten und die mir nach den datenschutzrechtlichen Regelungen - zustehenden Ansprüche und Rechte habe ich unter Datenschutzerklärung - Kenntnis erlangt.</b_datenschutz> - <b_missbrauch>* Mir ist bekannt, dass zur Verfolgung widerrechtlicher - Nutzung die Daten meines zur Dateneingabe genutzten Endgerätes - aufgezeichnet und verwendet werden können.</b_missbrauch> - <b_hinweis_beschriftung>* Diese Anzeige berechtigt nicht zum Beginn - des Gewerbebetriebes, wenn noch eine Erlaubnis oder eine Eintragung - in die Handwerksrolle notwendig ist. Zuwiderhandlungen können mit - Geldbuße oder Geldstrafe oder Freiheitsstrafe geahndet werden. Diese - Anzeige ist keine Genehmigung zur Errichtung einer Betriebsstätte - entsprechend dem Planungs- und Baurecht.</b_hinweis_beschriftung> - <b_hinweis_intro>Hinweis</b_hinweis_intro> - <policyurl>http://wafmxpa002.dpaor.de/sh/datenschutz/datenschutzerklaerungEA_de.doc</policyurl> - </erklaerungen> - <b_timestamp>20201202160323</b_timestamp> - <logourl>http://wafmxpa002.dpaor.de/sh/logos/kopf_9068873.doc</logourl> - <fm> - <ansprechpartner> - <firmenname /> - <anrede>Herr</anrede> - <vorname>Max</vorname> - <familienname>Testermann</familienname> - <anschrift> - <strasse>Reventloualle</strasse> - <hausnummer>6</hausnummer> - <postfach /> - <postleitzahl>24105</postleitzahl> - <ort>Kiel</ort> - <ortsteil /> - <zusatz /> - <staat>Deutschland</staat> - </anschrift> - <kontakt> - <telefonnummer>0431 123</telefonnummer> - <mobilnummer /> - <telefaxnummer>+ 49 4621 9654</telefaxnummer> - <emailadresse>max.testermann@gmx.de</emailadresse> - <demailadresse>max.testermann@gmx.de-mail.de</demailadresse> - </kontakt> - </ansprechpartner> - <verwaltungsleistungen> - <verwaltungsleistung> - <ausgewaehlte_zustaendigestelle> - <OrganisationseinheitenID>9081994</OrganisationseinheitenID> - <OrganisationseinheitenBEZEICHNUNG>Landeshauptstadt Kiel - Bürger- - und Ordnungsamt, Gewerbemeldestelle</OrganisationseinheitenBEZEICHNUNG> - </ausgewaehlte_zustaendigestelle> - <GebietID>9006402</GebietID> - <GebietBEZEICHNUNG>Kiel</GebietBEZEICHNUNG> - <AnliegenID>8938634</AnliegenID> - <AnliegenBEZEICHNUNG>Gewerbeanmeldung, Elektronische Gewerbeanzeige</AnliegenBEZEICHNUNG> - <leikaKEYLIST>99050012104000</leikaKEYLIST> - <leikaBEZEICHNUNG /> - </verwaltungsleistung> - </verwaltungsleistungen> - </fm> -</myForm> \ No newline at end of file diff --git a/semantik-adapter/src/test/resources/intelliform/XML-Daten_Gewerbe_organisationseinheitenID.xml b/semantik-adapter/src/test/resources/intelliform/XML-Daten_Gewerbe_organisationseinheitenID.xml deleted file mode 100644 index b3de9488..00000000 --- a/semantik-adapter/src/test/resources/intelliform/XML-Daten_Gewerbe_organisationseinheitenID.xml +++ /dev/null @@ -1,223 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<myForm xmlns:pdf="http://xmlns.cit.de/assistants/pdf" - xmlns:t="http://xmlns.cit.de/intelliform/transaction" - t:id="20201202575230443004" t:timestamp="2020-12-02T14:58:43.790Z" - t:sender="afm.schleswig-holstein.de" t:form="Gewerbeanmeldung" - t:form-id="eGewerbe/eGewerbeAnmeldung" - t:customer="Einheitlicher Ansprechpartner" t:customer-id="ea-sh" - t:client="Schleswig-Holstein" t:client-id="land"> - <GueltigAb>2020-11-02</GueltigAb> - <GrundAnmeldungSchluessel>01</GrundAnmeldungSchluessel> - <AnliegenID>8938634</AnliegenID> - <NiederlassungArt>1</NiederlassungArt> - <IstReisegewerbe>false</IstReisegewerbe> - <BetriebArtIndustrie>false</BetriebArtIndustrie> - <BetriebArtHandwerk>false</BetriebArtHandwerk> - <BetriebArtHandel>false</BetriebArtHandel> - <BetriebArtSonstiges>true</BetriebArtSonstiges> - <rechtsform>nicht eingetragenes Einzelunternehmen</rechtsform> - <rfm>180</rfm> - <registerart /> - <min2gesellschafter>false</min2gesellschafter> - <gesetzlichervertreter>Inhaber</gesetzlichervertreter> - <Betrieb> - <ID>910838</ID> - <geschaeftsbezeichnung>OZG-Consulting</geschaeftsbezeichnung> - <EintragungPLZ /> - <EintragungOrt /> - <GerichtSchluessel /> - </Betrieb> - <sh_strasse>Reventloualle</sh_strasse> - <sh_zusatz /> - <sh_hausnummer>6</sh_hausnummer> - <sh_plz>24105</sh_plz> - <ort_auswahl>9006402$01002000</ort_auswahl> - <sh_ortsteil /> - <ort>Kiel</ort> - <GebietID>9006402</GebietID> - <GebietBEZEICHNUNG>Kiel</GebietBEZEICHNUNG> - <GebietGNR94_GNR>01002000</GebietGNR94_GNR> - <staat>000</staat> - <iso3166numerisch>276</iso3166numerisch> - <kont_telefonnummer>0431 123</kont_telefonnummer> - <kont_telefaxnummer>+ 49 4621 9654</kont_telefaxnummer> - <kont_email>max.testermann@gmx.de</kont_email> - <kont_demail>max.testermann@gmx.de-mail.de</kont_demail> - <kont_homepage>http://www.max-tester.de</kont_homepage> - <b_kont_vorwahl_telefon>0431</b_kont_vorwahl_telefon> - <b_kont_telefon>123</b_kont_telefon> - <b_kont_vorwahl_telefax>+ 49 4621</b_kont_vorwahl_telefax> - <b_kont_telefax>9654</b_kont_telefax> - <TaetigkeitenGesamt> - <TaetigkeitenGesamt-item> - <auswahl_oberbegriff>S</auswahl_oberbegriff> - <auswahl_kategorie>96</auswahl_kategorie> - <check_taetigkeitsschwerpunkt>true</check_taetigkeitsschwerpunkt> - <a_taetigkeit>OZG-Entwicklung</a_taetigkeit> - <b_oberbegriff>S Erbringung von sonstigen Dienstleistungen</b_oberbegriff> - <b_kategorie>96 Erbringung von sonstigen überwiegend persönlichen - Dienstleistungen</b_kategorie> - <b_unterklasse>96.09.0 Erbringung von sonstigen Dienstleistungen a. - n. g.</b_unterklasse> - <b_unterklasse_schluessel>96.09.0</b_unterklasse_schluessel> - <b_inkl>- Tätigkeiten von Astrologinnen, Astrologen Spiritistinnenund - Spiritisten - Erbringung persönlicher Dienstleistungen wie - Begleitdienste, Heirats- und Partnervermittlung - Betreuung von - Haustieren wie Unterbringung, Pflege, Beaufsichtigung und Dressur - - Tätigkeiten von Ahnenforschungsinstituten - Tätigkeiten von - Tätowierungs- und Piercingstudios - Tätigkeiten von Schuhputzerinnen - und Schuhputzern, Trägerinnen und Trägern, Parkplatzzuweiserinnen - und -zuweisern usw. - Betrieb von münzbetriebenen Geräten für - persönliche Dienstleistungen wie Fotoautomaten, Waagen, - Blutdruckmessern, Schließfächern usw.</b_inkl> - </TaetigkeitenGesamt-item> - </TaetigkeitenGesamt> - <IstNebenerwerb>false</IstNebenerwerb> - <AnzahlVollzeitBeschaeftigte>1</AnzahlVollzeitBeschaeftigte> - <AnzahlTeilzeitBeschaeftigte>0</AnzahlTeilzeitBeschaeftigte> - <BeteiligtePerson> - <BeteiligtePerson-item> - <personFunktion>1</personFunktion> - <personFunktionText>Einzelgewerbetreibender</personFunktionText> - <doktorgradSchluessel /> - <doktorgrad /> - <familienname>Testermann</familienname> - <vorname>Max</vorname> - <geschlechtText>männlich</geschlechtText> - <geschlecht>1</geschlecht> - <geburtsname>Max Testermann</geburtsname> - <geburtsdatum>1995-03-21</geburtsdatum> - <geburtsort>Flensburg</geburtsort> - <geburtsland>Deutschland</geburtsland> - <geburtslandSchluesel>000</geburtslandSchluesel> - <staatsangehoerigkeit>deutsch</staatsangehoerigkeit> - <staatsangehoerigkeitSchluessel>000</staatsangehoerigkeitSchluessel> - <adr_strasse>Königsweg</adr_strasse> - <adr_zusatz>Appartment 321</adr_zusatz> - <adr_hausnummer>74</adr_hausnummer> - <adr_plz>24837</adr_plz> - <adr_ort>Schleswig</adr_ort> - <adr_ortsteil>Schleswig</adr_ortsteil> - <adr_land>Deutschland$DE$DEU$276$.de</adr_land> - <b_adr_numerisch>276</b_adr_numerisch> - <b_adr_land>Deutschland</b_adr_land> - <b_adr_alpha2>DE</b_adr_alpha2> - <b_adr_alpha3>DEU</b_adr_alpha3> - <b_adr_domain>.de</b_adr_domain> - <kont_telefonnummer>+ 49 4621 9654</kont_telefonnummer> - <kont_telefaxnummer>+ 49 4621 9654</kont_telefaxnummer> - <kont_email>max.testermann@gmx.de</kont_email> - <kont_demail>max.testermann@gmx.de-mail.de</kont_demail> - <kont_homepage>http://www.max-tester.de</kont_homepage> - <b_kont_vorwahl_telefon>+ 49 4621</b_kont_vorwahl_telefon> - <b_kont_telefon>9654</b_kont_telefon> - <b_kont_vorwahl_telefax>+ 49 4621</b_kont_vorwahl_telefax> - <b_kont_telefax>9654</b_kont_telefax> - <Status_Erlaubnis>0</Status_Erlaubnis> - <b_Erlaubnis>Liegt nicht vor</b_Erlaubnis> - </BeteiligtePerson-item> - </BeteiligtePerson> - <KontaktsystemTypA>233034600</KontaktsystemTypA> - <KontaktsystemTypB>233034601</KontaktsystemTypB> - <OrganisationseinheitenID>97465445</OrganisationseinheitenID> - <empfangendestelle> - <OrganisationseinheitenAuswahl>9068873</OrganisationseinheitenAuswahl> - <OrganisationseinheitenID>9068873</OrganisationseinheitenID> - <OrganisationseinheitenBEZEICHNUNG>Einheitlicher Ansprechpartner - Schleswig-Holstein</OrganisationseinheitenBEZEICHNUNG> - <strasse>Reventlouallee</strasse> - <hausnummer>6</hausnummer> - <postleitzahl>24105</postleitzahl> - <ortID>9006402</ortID> - <ort>Kiel</ort> - <telefonnummer>+49 431 988-8650</telefonnummer> - <telefaxnummer>+49 431 988-6161111</telefaxnummer> - <emailadresse>info@ea-sh.de</emailadresse> - <demailadresse>ea-poststelle@ea-sh.de-mail.de</demailadresse> - <kontaktsystem_kennung>afmsh:9068873_AusnahmeLKWFahrverbot</kontaktsystem_kennung> - <kontaktsystem_kennungzusatz>alle</kontaktsystem_kennungzusatz> - </empfangendestelle> - <erklaerungen> - <check_gebuehren>true</check_gebuehren> - <check_richtigkeit>true</check_richtigkeit> - <check_datenschutz>true</check_datenschutz> - <check_missbrauch>true</check_missbrauch> - <check_hinweis>true</check_hinweis> - <b_gebuehren_beschriftung>* Die Gewerbeanmeldung ist kostenpflichtig. - Die Höhe der Gebühren bemisst sich nach der Landesverordnung über - Verwaltungsgebühren (Allgemeiner Gebührentarif) Tarifstelle 11.1.1 - - VwGebV. Genaue Auskünfte hierzu erteilt das zuständige Gewerbeamt.</b_gebuehren_beschriftung> - <b_gebuehren_intro /> - <b_richtigkeit>* Ich bestätige die Richtigkeit meiner Angaben.</b_richtigkeit> - <b_datenschutz>* Ich erkläre mich damit einverstanden, dass der - Einheitlicher Ansprechpartner Schleswig-Holstein zur Erfüllung seiner - Aufgaben meine Daten unter Einhaltung der Bestimmungen der - Datenschutz-Grundverordnung (DS-GVO) und des - Landesdatenschutzgesetzes Schleswig-Holstein (LDSG-SH) speichert, - verarbeitet und diese im Rahmen der gesetzlichen Bestimmungen an die - für die Entscheidung zuständige Stelle weiterleitet. Ebenso bin ich - mit der rechtskonformen Datenverarbeitung und Speicherung durch die - zuständige Stelle einverstanden. Mir ist bekannt, dass ich die - Einwilligung in die Verarbeitung und Übermittlung jederzeit gegenüber - dem Einheitlicher Ansprechpartner Schleswig-Holstein, Reventlouallee - 6, 24105 Kiel widerrufen kann. Ein Widerruf ist aber nur wirksam für - die Zukunft. Verarbeitungen, die vor dem Widerruf erfolgt sind, sind - davon nicht betroffen. Über die Verarbeitung meiner personenbezogenen - Daten und die mir nach den datenschutzrechtlichen Regelungen - zustehenden Ansprüche und Rechte habe ich unter Datenschutzerklärung - Kenntnis erlangt.</b_datenschutz> - <b_missbrauch>* Mir ist bekannt, dass zur Verfolgung widerrechtlicher - Nutzung die Daten meines zur Dateneingabe genutzten Endgerätes - aufgezeichnet und verwendet werden können.</b_missbrauch> - <b_hinweis_beschriftung>* Diese Anzeige berechtigt nicht zum Beginn - des Gewerbebetriebes, wenn noch eine Erlaubnis oder eine Eintragung - in die Handwerksrolle notwendig ist. Zuwiderhandlungen können mit - Geldbuße oder Geldstrafe oder Freiheitsstrafe geahndet werden. Diese - Anzeige ist keine Genehmigung zur Errichtung einer Betriebsstätte - entsprechend dem Planungs- und Baurecht.</b_hinweis_beschriftung> - <b_hinweis_intro>Hinweis</b_hinweis_intro> - <policyurl>http://wafmxpa002.dpaor.de/sh/datenschutz/datenschutzerklaerungEA_de.doc</policyurl> - </erklaerungen> - <b_timestamp>20201202160323</b_timestamp> - <logourl>http://wafmxpa002.dpaor.de/sh/logos/kopf_9068873.doc</logourl> - <fm> - <ansprechpartner> - <firmenname /> - <anrede>Herr</anrede> - <vorname>Max</vorname> - <familienname>Testermann</familienname> - <anschrift> - <strasse>Reventloualle</strasse> - <hausnummer>6</hausnummer> - <postfach /> - <postleitzahl>24105</postleitzahl> - <ort>Kiel</ort> - <ortsteil /> - <zusatz /> - <staat>Deutschland</staat> - </anschrift> - <kontakt> - <telefonnummer>0431 123</telefonnummer> - <mobilnummer /> - <telefaxnummer>+ 49 4621 9654</telefaxnummer> - <emailadresse>max.testermann@gmx.de</emailadresse> - <demailadresse>max.testermann@gmx.de-mail.de</demailadresse> - </kontakt> - </ansprechpartner> - <verwaltungsleistungen> - <verwaltungsleistung> - <ausgewaehlte_zustaendigestelle> - <OrganisationseinheitenID>9081994</OrganisationseinheitenID> - <OrganisationseinheitenBEZEICHNUNG>Landeshauptstadt Kiel - Bürger- - und Ordnungsamt, Gewerbemeldestelle</OrganisationseinheitenBEZEICHNUNG> - </ausgewaehlte_zustaendigestelle> - <GebietID>9006402</GebietID> - <GebietBEZEICHNUNG>Kiel</GebietBEZEICHNUNG> - <AnliegenID>8938634</AnliegenID> - <AnliegenBEZEICHNUNG>Gewerbeanmeldung, Elektronische Gewerbeanzeige</AnliegenBEZEICHNUNG> - <leikaKEYLIST>99050012104000</leikaKEYLIST> - <leikaBEZEICHNUNG /> - </verwaltungsleistung> - </verwaltungsleistungen> - </fm> -</myForm> \ No newline at end of file diff --git a/semantik-adapter/src/test/resources/intelliform/XML-Daten_Gewerbe_organisationseinheitenID_und_zustaendigstelle.xml b/semantik-adapter/src/test/resources/intelliform/XML-Daten_Gewerbe_organisationseinheitenID_und_zustaendigstelle.xml deleted file mode 100644 index eee23897..00000000 --- a/semantik-adapter/src/test/resources/intelliform/XML-Daten_Gewerbe_organisationseinheitenID_und_zustaendigstelle.xml +++ /dev/null @@ -1,242 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<myForm xmlns:pdf="http://xmlns.cit.de/assistants/pdf" - xmlns:t="http://xmlns.cit.de/intelliform/transaction" - t:id="20201202575230443004" t:timestamp="2020-12-02T14:58:43.790Z" - t:sender="afm.schleswig-holstein.de" t:form="Gewerbeanmeldung" - t:form-id="eGewerbe/eGewerbeAnmeldung" - t:customer="Einheitlicher Ansprechpartner" t:customer-id="ea-sh" - t:client="Schleswig-Holstein" t:client-id="land"> - <GueltigAb>2020-11-02</GueltigAb> - <GrundAnmeldungSchluessel>01</GrundAnmeldungSchluessel> - <AnliegenID>8938634</AnliegenID> - <NiederlassungArt>1</NiederlassungArt> - <IstReisegewerbe>false</IstReisegewerbe> - <BetriebArtIndustrie>false</BetriebArtIndustrie> - <BetriebArtHandwerk>false</BetriebArtHandwerk> - <BetriebArtHandel>false</BetriebArtHandel> - <BetriebArtSonstiges>true</BetriebArtSonstiges> - <rechtsform>nicht eingetragenes Einzelunternehmen</rechtsform> - <rfm>180</rfm> - <registerart /> - <min2gesellschafter>false</min2gesellschafter> - <gesetzlichervertreter>Inhaber</gesetzlichervertreter> - <Betrieb> - <ID>910838</ID> - <geschaeftsbezeichnung>OZG-Consulting</geschaeftsbezeichnung> - <EintragungPLZ /> - <EintragungOrt /> - <GerichtSchluessel /> - </Betrieb> - <sh_strasse>Reventloualle</sh_strasse> - <sh_zusatz /> - <sh_hausnummer>6</sh_hausnummer> - <sh_plz>24105</sh_plz> - <ort_auswahl>9006402$01002000</ort_auswahl> - <sh_ortsteil /> - <ort>Kiel</ort> - <GebietID>9006402</GebietID> - <GebietBEZEICHNUNG>Kiel</GebietBEZEICHNUNG> - <GebietGNR94_GNR>01002000</GebietGNR94_GNR> - <staat>000</staat> - <iso3166numerisch>276</iso3166numerisch> - <kont_telefonnummer>0431 123</kont_telefonnummer> - <kont_telefaxnummer>+ 49 4621 9654</kont_telefaxnummer> - <kont_email>max.testermann@gmx.de</kont_email> - <kont_demail>max.testermann@gmx.de-mail.de</kont_demail> - <kont_homepage>http://www.max-tester.de</kont_homepage> - <b_kont_vorwahl_telefon>0431</b_kont_vorwahl_telefon> - <b_kont_telefon>123</b_kont_telefon> - <b_kont_vorwahl_telefax>+ 49 4621</b_kont_vorwahl_telefax> - <b_kont_telefax>9654</b_kont_telefax> - <TaetigkeitenGesamt> - <TaetigkeitenGesamt-item> - <auswahl_oberbegriff>S</auswahl_oberbegriff> - <auswahl_kategorie>96</auswahl_kategorie> - <check_taetigkeitsschwerpunkt>true</check_taetigkeitsschwerpunkt> - <a_taetigkeit>OZG-Entwicklung</a_taetigkeit> - <b_oberbegriff>S Erbringung von sonstigen Dienstleistungen</b_oberbegriff> - <b_kategorie>96 Erbringung von sonstigen überwiegend persönlichen - Dienstleistungen</b_kategorie> - <b_unterklasse>96.09.0 Erbringung von sonstigen Dienstleistungen a. - n. g.</b_unterklasse> - <b_unterklasse_schluessel>96.09.0</b_unterklasse_schluessel> - <b_inkl>- Tätigkeiten von Astrologinnen, Astrologen Spiritistinnenund - Spiritisten - Erbringung persönlicher Dienstleistungen wie - Begleitdienste, Heirats- und Partnervermittlung - Betreuung von - Haustieren wie Unterbringung, Pflege, Beaufsichtigung und Dressur - - Tätigkeiten von Ahnenforschungsinstituten - Tätigkeiten von - Tätowierungs- und Piercingstudios - Tätigkeiten von Schuhputzerinnen - und Schuhputzern, Trägerinnen und Trägern, Parkplatzzuweiserinnen - und -zuweisern usw. - Betrieb von münzbetriebenen Geräten für - persönliche Dienstleistungen wie Fotoautomaten, Waagen, - Blutdruckmessern, Schließfächern usw.</b_inkl> - </TaetigkeitenGesamt-item> - </TaetigkeitenGesamt> - <IstNebenerwerb>false</IstNebenerwerb> - <AnzahlVollzeitBeschaeftigte>1</AnzahlVollzeitBeschaeftigte> - <AnzahlTeilzeitBeschaeftigte>0</AnzahlTeilzeitBeschaeftigte> - <BeteiligtePerson> - <BeteiligtePerson-item> - <personFunktion>1</personFunktion> - <personFunktionText>Einzelgewerbetreibender</personFunktionText> - <doktorgradSchluessel /> - <doktorgrad /> - <familienname>Testermann</familienname> - <vorname>Max</vorname> - <geschlechtText>männlich</geschlechtText> - <geschlecht>1</geschlecht> - <geburtsname>Max Testermann</geburtsname> - <geburtsdatum>1995-03-21</geburtsdatum> - <geburtsort>Flensburg</geburtsort> - <geburtsland>Deutschland</geburtsland> - <geburtslandSchluesel>000</geburtslandSchluesel> - <staatsangehoerigkeit>deutsch</staatsangehoerigkeit> - <staatsangehoerigkeitSchluessel>000</staatsangehoerigkeitSchluessel> - <adr_strasse>Königsweg</adr_strasse> - <adr_zusatz>Appartment 321</adr_zusatz> - <adr_hausnummer>74</adr_hausnummer> - <adr_plz>24837</adr_plz> - <adr_ort>Schleswig</adr_ort> - <adr_ortsteil>Schleswig</adr_ortsteil> - <adr_land>Deutschland$DE$DEU$276$.de</adr_land> - <b_adr_numerisch>276</b_adr_numerisch> - <b_adr_land>Deutschland</b_adr_land> - <b_adr_alpha2>DE</b_adr_alpha2> - <b_adr_alpha3>DEU</b_adr_alpha3> - <b_adr_domain>.de</b_adr_domain> - <kont_telefonnummer>+ 49 4621 9654</kont_telefonnummer> - <kont_telefaxnummer>+ 49 4621 9654</kont_telefaxnummer> - <kont_email>max.testermann@gmx.de</kont_email> - <kont_demail>max.testermann@gmx.de-mail.de</kont_demail> - <kont_homepage>http://www.max-tester.de</kont_homepage> - <b_kont_vorwahl_telefon>+ 49 4621</b_kont_vorwahl_telefon> - <b_kont_telefon>9654</b_kont_telefon> - <b_kont_vorwahl_telefax>+ 49 4621</b_kont_vorwahl_telefax> - <b_kont_telefax>9654</b_kont_telefax> - <Status_Erlaubnis>0</Status_Erlaubnis> - <b_Erlaubnis>Liegt nicht vor</b_Erlaubnis> - </BeteiligtePerson-item> - </BeteiligtePerson> - <KontaktsystemTypA>233034600</KontaktsystemTypA> - <KontaktsystemTypB>233034601</KontaktsystemTypB> - <zustaendigestelle> - <OrganisationseinheitenAuswahl>9081994</OrganisationseinheitenAuswahl> - <OrganisationseinheitenID>9081994</OrganisationseinheitenID> - <OrganisationseinheitenBEZEICHNUNG>Landeshauptstadt Kiel - Bürger- und - Ordnungsamt, Gewerbemeldestelle</OrganisationseinheitenBEZEICHNUNG> - <strasse>Fabrikstraße</strasse> - <hausnummer>8-10 </hausnummer> - <postleitzahl>24103</postleitzahl> - <ortID>9006402</ortID> - <ort>Kiel</ort> - <telefonnummer>+49 431 901-2807</telefonnummer> - <telefaxnummer>+49 431 901-62070</telefaxnummer> - <emailadresse>Gewerbemeldestelle@kiel.de</emailadresse> - <demailadresse /> - <kontaktsystem_kennung /> - <kontaktsystem_kennungzusatz /> - <AnliegenBEZEICHNUNG>Gewerbeanmeldung, Elektronische Gewerbeanzeige</AnliegenBEZEICHNUNG> - <leikaKEYLIST>99050012104000</leikaKEYLIST> - </zustaendigestelle> - <OrganisationseinheitenID>organisationseinheitenID</OrganisationseinheitenID> - <empfangendestelle> - <OrganisationseinheitenAuswahl>9068873</OrganisationseinheitenAuswahl> - <OrganisationseinheitenID>9068873</OrganisationseinheitenID> - <OrganisationseinheitenBEZEICHNUNG>Einheitlicher Ansprechpartner - Schleswig-Holstein</OrganisationseinheitenBEZEICHNUNG> - <strasse>Reventlouallee</strasse> - <hausnummer>6</hausnummer> - <postleitzahl>24105</postleitzahl> - <ortID>9006402</ortID> - <ort>Kiel</ort> - <telefonnummer>+49 431 988-8650</telefonnummer> - <telefaxnummer>+49 431 988-6161111</telefaxnummer> - <emailadresse>info@ea-sh.de</emailadresse> - <demailadresse>ea-poststelle@ea-sh.de-mail.de</demailadresse> - <kontaktsystem_kennung>afmsh:9068873_AusnahmeLKWFahrverbot</kontaktsystem_kennung> - <kontaktsystem_kennungzusatz>alle</kontaktsystem_kennungzusatz> - </empfangendestelle> - <erklaerungen> - <check_gebuehren>true</check_gebuehren> - <check_richtigkeit>true</check_richtigkeit> - <check_datenschutz>true</check_datenschutz> - <check_missbrauch>true</check_missbrauch> - <check_hinweis>true</check_hinweis> - <b_gebuehren_beschriftung>* Die Gewerbeanmeldung ist kostenpflichtig. - Die Höhe der Gebühren bemisst sich nach der Landesverordnung über - Verwaltungsgebühren (Allgemeiner Gebührentarif) Tarifstelle 11.1.1 - - VwGebV. Genaue Auskünfte hierzu erteilt das zuständige Gewerbeamt.</b_gebuehren_beschriftung> - <b_gebuehren_intro /> - <b_richtigkeit>* Ich bestätige die Richtigkeit meiner Angaben.</b_richtigkeit> - <b_datenschutz>* Ich erkläre mich damit einverstanden, dass der - Einheitlicher Ansprechpartner Schleswig-Holstein zur Erfüllung seiner - Aufgaben meine Daten unter Einhaltung der Bestimmungen der - Datenschutz-Grundverordnung (DS-GVO) und des - Landesdatenschutzgesetzes Schleswig-Holstein (LDSG-SH) speichert, - verarbeitet und diese im Rahmen der gesetzlichen Bestimmungen an die - für die Entscheidung zuständige Stelle weiterleitet. Ebenso bin ich - mit der rechtskonformen Datenverarbeitung und Speicherung durch die - zuständige Stelle einverstanden. Mir ist bekannt, dass ich die - Einwilligung in die Verarbeitung und Übermittlung jederzeit gegenüber - dem Einheitlicher Ansprechpartner Schleswig-Holstein, Reventlouallee - 6, 24105 Kiel widerrufen kann. Ein Widerruf ist aber nur wirksam für - die Zukunft. Verarbeitungen, die vor dem Widerruf erfolgt sind, sind - davon nicht betroffen. Über die Verarbeitung meiner personenbezogenen - Daten und die mir nach den datenschutzrechtlichen Regelungen - zustehenden Ansprüche und Rechte habe ich unter Datenschutzerklärung - Kenntnis erlangt.</b_datenschutz> - <b_missbrauch>* Mir ist bekannt, dass zur Verfolgung widerrechtlicher - Nutzung die Daten meines zur Dateneingabe genutzten Endgerätes - aufgezeichnet und verwendet werden können.</b_missbrauch> - <b_hinweis_beschriftung>* Diese Anzeige berechtigt nicht zum Beginn - des Gewerbebetriebes, wenn noch eine Erlaubnis oder eine Eintragung - in die Handwerksrolle notwendig ist. Zuwiderhandlungen können mit - Geldbuße oder Geldstrafe oder Freiheitsstrafe geahndet werden. Diese - Anzeige ist keine Genehmigung zur Errichtung einer Betriebsstätte - entsprechend dem Planungs- und Baurecht.</b_hinweis_beschriftung> - <b_hinweis_intro>Hinweis</b_hinweis_intro> - <policyurl>http://wafmxpa002.dpaor.de/sh/datenschutz/datenschutzerklaerungEA_de.doc</policyurl> - </erklaerungen> - <b_timestamp>20201202160323</b_timestamp> - <logourl>http://wafmxpa002.dpaor.de/sh/logos/kopf_9068873.doc</logourl> - <fm> - <ansprechpartner> - <firmenname /> - <anrede>Herr</anrede> - <vorname>Max</vorname> - <familienname>Testermann</familienname> - <anschrift> - <strasse>Reventloualle</strasse> - <hausnummer>6</hausnummer> - <postfach /> - <postleitzahl>24105</postleitzahl> - <ort>Kiel</ort> - <ortsteil /> - <zusatz /> - <staat>Deutschland</staat> - </anschrift> - <kontakt> - <telefonnummer>0431 123</telefonnummer> - <mobilnummer /> - <telefaxnummer>+ 49 4621 9654</telefaxnummer> - <emailadresse>max.testermann@gmx.de</emailadresse> - <demailadresse>max.testermann@gmx.de-mail.de</demailadresse> - </kontakt> - </ansprechpartner> - <verwaltungsleistungen> - <verwaltungsleistung> - <ausgewaehlte_zustaendigestelle> - <OrganisationseinheitenID>9081994</OrganisationseinheitenID> - <OrganisationseinheitenBEZEICHNUNG>Landeshauptstadt Kiel - Bürger- - und Ordnungsamt, Gewerbemeldestelle</OrganisationseinheitenBEZEICHNUNG> - </ausgewaehlte_zustaendigestelle> - <GebietID>9006402</GebietID> - <GebietBEZEICHNUNG>Kiel</GebietBEZEICHNUNG> - <AnliegenID>8938634</AnliegenID> - <AnliegenBEZEICHNUNG>Gewerbeanmeldung, Elektronische Gewerbeanzeige</AnliegenBEZEICHNUNG> - <leikaKEYLIST>99050012104000</leikaKEYLIST> - <leikaBEZEICHNUNG /> - </verwaltungsleistung> - </verwaltungsleistungen> - </fm> -</myForm> \ No newline at end of file diff --git a/semantik-adapter/src/test/resources/intelliform/XML-Daten_Strassengefaelle.xml b/semantik-adapter/src/test/resources/intelliform/XML-Daten_Strassengefaelle.xml deleted file mode 100644 index f9dc71fb..00000000 --- a/semantik-adapter/src/test/resources/intelliform/XML-Daten_Strassengefaelle.xml +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<myForm xmlns:pdf="http://xmlns.cit.de/assistants/pdf" xmlns:t="http://xmlns.cit.de/intelliform/transaction" t:id="20201202575230443004" t:timestamp="2020-12-02T14:58:43.790Z" t:sender="afm.schleswig-holstein.de" t:form="Überarbeitung Straßengefälle nach §12" t:form-id="eStrassengefaelle/eUeberarbeitung" t:customer="Einheitlicher Ansprechpartner" t:customer-id="ea-sh" t:client="Schleswig-Holstein" t:client-id="land"> - <sh_strasse>Fallstraße</sh_strasse> - <sh_zusatz/> - <sh_hausnummer>12 a</sh_hausnummer> - <ort>Überörtlingen</ort> - <TaetigkeitenGesamt> - <TaetigkeitenGesamt-item> - <b_inkl>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</b_inkl> - </TaetigkeitenGesamt-item> - </TaetigkeitenGesamt> -</myForm> diff --git a/semantik-adapter/src/test/resources/intelliform/XML-Keine_Daten.xml b/semantik-adapter/src/test/resources/intelliform/XML-Keine_Daten.xml deleted file mode 100644 index 92e52bd0..00000000 --- a/semantik-adapter/src/test/resources/intelliform/XML-Keine_Daten.xml +++ /dev/null @@ -1,3 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<myForm xmlns:pdf="http://xmlns.cit.de/assistants/pdf" xmlns:t="http://xmlns.cit.de/intelliform/transaction" t:id="20201202575230443004" t:timestamp="2020-12-02T14:58:43.790Z" t:sender="afm.schleswig-holstein.de" t:form="Sonderfall ohne Daten, dafür aber mit langem Titel und Sonderzeichen wie Äöüß nach §§123ff. & -45-" t:form-id="eOhne/eDaten" t:customer="Einheitlicher Ansprechpartner" t:customer-id="ea-sh" t:client="Schleswig-Holstein" t:client-id="land"> -</myForm> diff --git a/semantik-adapter/src/test/resources/intelliform/andererName-Daten.xml b/semantik-adapter/src/test/resources/intelliform/andererName-Daten.xml deleted file mode 100644 index 525f02ac..00000000 --- a/semantik-adapter/src/test/resources/intelliform/andererName-Daten.xml +++ /dev/null @@ -1,14 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<myForm xmlns:pdf="http://xmlns.cit.de/assistants/pdf" - xmlns:t="http://xmlns.cit.de/intelliform/transaction" - t:id="20201118365670866101" t:timestamp="2020-11-18T09:09:27.627Z" - t:sender="afm.schleswig-holstein.de" - t:form="Kleiner Waffenschein gem. § 10 Abs. 4 Satz 4 Waffengesetz (WaffG)" - t:form-id="waffen/kleinerWaffenschein" - t:customer="Einheitlicher Ansprechpartner" t:customer-id="ea-sh" - t:client="Schleswig-Holstein" t:client-id="land"> - - <zustaendigestelle> - <OrganisationseinheitenID>0815</OrganisationseinheitenID> - </zustaendigestelle> -</myForm> \ No newline at end of file diff --git a/semantik-adapter/src/test/resources/junit-platform.properties b/semantik-adapter/src/test/resources/junit-platform.properties deleted file mode 100644 index 1cebb76d..00000000 --- a/semantik-adapter/src/test/resources/junit-platform.properties +++ /dev/null @@ -1 +0,0 @@ -junit.jupiter.extensions.autodetection.enabled = true \ No newline at end of file diff --git a/semantik-adapter/src/test/resources/mantelantrag/4620-EH6C_7d703670-15b6-42b2-8cd1-88a7e4c494b9_Antrag_Max_Mustermann_SGBXII.xml b/semantik-adapter/src/test/resources/mantelantrag/4620-EH6C_7d703670-15b6-42b2-8cd1-88a7e4c494b9_Antrag_Max_Mustermann_SGBXII.xml deleted file mode 100644 index 3872cdb8..00000000 --- a/semantik-adapter/src/test/resources/mantelantrag/4620-EH6C_7d703670-15b6-42b2-8cd1-88a7e4c494b9_Antrag_Max_Mustermann_SGBXII.xml +++ /dev/null @@ -1,253 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<myForm xmlns:t="http://xmlns.cit.de/intelliform/transaction" - xmlns:u="http://xmlns.cit.de/intelliform/user" t:uuid="87812a84-a463-4922-b8dd-f1d0d7c5f0d7" - t:id="20240620346740905800" - t:timestamp="2024-06-20T07:37:54.042Z" - t:sender="stage.afm.schleswig-holstein.de" - t:form="Antrag auf Leistungen der Eingliederungshilfe und/oder Sozialhilfe" - t:form-id="maa_mantelantrag/maa_mantelantrag" t:customer="Schleswig-Holstein" - t:customer-id="sh" t:client="Schleswig-Holstein" t:client-id="land" t:lang="de" - u:FamilyNames="Team" u:PrincipalType="Citizen" u:Username="noreply@ozg-sh.de" - u:CitizenProfileType="Standard" u:username="605b5b10-0c3c-4b2d-247c-08da6f152b74" u:GivenNames="OZG-Cloud" - u:AssuranceLevel="Low" u:Title="Herr" u:displayName="OZG-Cloud Team" u:mailAddress="noreply@ozg-sh.de" - u:EmailAddress="noreply@ozg-sh.de" u:firstName="OZG-Cloud" u:lastName="Team" t:required-login-level="LOW" - t:effective-login-level="LOW"> - <gebiets_id>9007404</gebiets_id> - <egh_sgb9>false</egh_sgb9> - <hzl>false</hzl> - <grusi>false</grusi> - <hzg>false</hzg> - <hzp>true</hzp> - <ambulant_stationaer>ambulant</ambulant_stationaer> - <hzuebss>false</hzuebss> - <hial>false</hial> - <ambulant>true</ambulant> - <stationaer>false</stationaer> - <sessionid>e898afa9-6f12-49f9-85fc-b52b86492640</sessionid> - <anliegen_id>[8936847]</anliegen_id> - <anliegen_namen>[Ambulante Hilfe zur Pflege]</anliegen_namen> - <TypenIDLN>233034601</TypenIDLN> - <logopath1/> - <logopath2/> - <logopath3/> - <gebiet_typid>300004</gebiet_typid> - <gebiet_parent_id1>9006398</gebiet_parent_id1> - <gebiet_parent_typid1>300003</gebiet_parent_typid1> - <gebiet_parent_id2>9006398</gebiet_parent_id2> - <gebiet_parent_typid2>300003</gebiet_parent_typid2> - <gebiet_parent_id3>9006398</gebiet_parent_id3> - <gebiet_parent_typid3>300003</gebiet_parent_typid3> - <gebiet_parent_name3>Segeberg</gebiet_parent_name3> - <oeid>[266235917]</oeid> - <link_datenschutz>https://www.segeberg.de/datenschutz</link_datenschutz> - <link_datenschutz2/> - <link_datenschutz3/> - <link_bankgeheimnis> - https://test.afm.schleswig-holstein.de/intelliform/templates/land/default/default/maa_mantelantrag/Erklaerung_Befreiung_vom_Bankgeheimnis.pdf - </link_bankgeheimnis> - <link_grundsicherung> - https://test.afm.schleswig-holstein.de/intelliform/templates/land/default/default/maa_mantelantrag/Anlage_Erklaerung_zur_Zahlung_von_Grundsicherungsleistungen_an_Leistungserbringer.pdf - </link_grundsicherung> - <link_schweigepflicht> - https://test.afm.schleswig-holstein.de/intelliform/templates/land/default/default/maa_mantelantrag/Schweigepflichtentbindung.pdf - </link_schweigepflicht> - <link_abtretung> - https://test.afm.schleswig-holstein.de/intelliform/templates/land/default/default/maa_mantelantrag/Anlage_Einverstaendniserklaerung_und_Abtretung.pdf - </link_abtretung> - <link_wahrheit> - https://test.afm.schleswig-holstein.de/intelliform/templates/land/default/default/maa_mantelantrag/Erklaerung_der_antragstellenden_Person.pdf - </link_wahrheit> - <kontaktsystem_oeid>123</kontaktsystem_oeid> - <OrganisationseinheitenBEZEICHNUNG>Kreis Segeberg - Soziale Sicherung</OrganisationseinheitenBEZEICHNUNG> - <zust_strasse>Hamburger Straße</zust_strasse> - <zust_hausnummer>30</zust_hausnummer> - <zust_postleitzahl>23795</zust_postleitzahl> - <ortid>9007404</ortid> - <zust_ort>Bad Segeberg</zust_ort> - <zust_telefonnummer>+49 4551 9519438</zust_telefonnummer> - <zust_faxnummer/> - <zust_emailadresse>sozialplanung@segeberg.de</zust_emailadresse> - <zustellung_nachrichtenbroker>afmsh:ozg-cloud-utopia-test</zustellung_nachrichtenbroker> - <zustellung_email_ln/> - <zustellung_webservice/> - <kontaktsystem_oeid2>321</kontaktsystem_oeid2> - <OrganisationseinheitenBEZEICHNUNG2/> - <zust_strasse2/> - <zust_hausnummer2/> - <zust_postleitzahl2/> - <ortid2/> - <zust_ort2/> - <zust_telefonnummer2/> - <zust_faxnummer2/> - <zust_emailadresse2/> - <zustellung_nachrichtenbroker2>afmsh:ozg-cloud-bad-segeberg-kreis</zustellung_nachrichtenbroker2> - <zustellung_email_ln2/> - <zustellung_webservice2/> - <kontaktsystem_oeid3>444</kontaktsystem_oeid3> - <OrganisationseinheitenBEZEICHNUNG3/> - <zust_strasse3/> - <zust_hausnummer3/> - <zust_postleitzahl3/> - <ortid3/> - <zust_ort3/> - <zust_telefonnummer3/> - <zust_faxnummer3/> - <zust_emailadresse3/> - <zustellung_nachrichtenbroker3>gae:ozg-cloud-itcase-test</zustellung_nachrichtenbroker3>> - <zustellung_email_ln3/> - <zustellung_webservice3/> - <grund>Hilfe</grund> - <ambulante_hilfen>Hilfe</ambulante_hilfen> - <nur_egh>false</nur_egh> - <nur_blindenhilfe>false</nur_blindenhilfe> - <nur_pers_angaben>false</nur_pers_angaben> - <nur_pers_mehrbedarfe>false</nur_pers_mehrbedarfe> - <antragsteller> - <anrede/> - <titel/> - <pers_nachname>Mustermann</pers_nachname> - <geburtsname/> - <pers_vorname>Max</pers_vorname> - <geburtsdatum>2000-01-15</geburtsdatum> - <geburtsort/> - <sh_strasse>Musterstrasse</sh_strasse> - <sh_hausnummer>123</sh_hausnummer> - <adresszusatz/> - <sh_plz>23795</sh_plz> - <ort>Bad Segeberg</ort> - <kont_email/> - <telefon/> - <mobiltelefon/> - <familienstand>ledig</familienstand> - <deutsch>deutsch</deutsch> - <a_ausweisdokument>false</a_ausweisdokument> - <erwerb/> - <erwerbsunfaehig/> - <betreuer>false</betreuer> - <partner>false</partner> - <kont_telefonnummer/> - </antragsteller> - <angaben_antragsteller> - <sozialhilfe_p>Nein</sozialhilfe_p> - <eingliederungshilfe>Nein</eingliederungshilfe> - <leistungen/> - <rentenantrag/> - <rentenbeitraege/> - <auslandserwerb/> - <lebensunterhalt>Arbeit</lebensunterhalt> - <zuzug>false</zuzug> - <pflege_noetig>false</pflege_noetig> - <haushaltshilfe_noetig/> - <pflegesachleistung_noetig/> - <pflegegeld_noetig/> - <pflegeleistungen_noetig/> - <ansprueche_dritte>false</ansprueche_dritte> - <stoerung_vorhanden>false</stoerung_vorhanden> - <sozialhilfe>Nein</sozialhilfe> - </angaben_antragsteller> - <weitere_personen>false</weitere_personen> - <familienangehoerige>false</familienangehoerige> - <fin_antragsteller> - <groesse_wohnung unit="m2"/> - <untervermietet_wohnung unit="m2"/> - <raeume/> - <baujahr/> - <wohnung_kosten unit="Euro"/> - <betriebskosten unit="Euro"/> - <heizkosten unit="Euro"/> - <heizart/> - <a_mietvertrag>false</a_mietvertrag> - <pauschalmiete unit="Euro"/> - <warmwasser/> - <wohngeld/> - </fin_antragsteller> - <ver> - <ver-item> - <name_id>a</name_id> - <versicherung_vorhanden>false</versicherung_vorhanden> - <name>Max Mustermann</name> - <fruehere_kv_vorhanden/> - <frueherer_erwerb_v/> - <bedarf_hzg/> - <kuenftige_kv/> - </ver-item> - </ver> - <mehr> - <mehr-item> - <name_id>a</name_id> - <schwanger/> - <alleinerziehend/> - <teure_ernaehrung/> - <mittagsverpflegung/> - <schulbuecher/> - <sonderbedarf/> - <name>Max Mustermann</name> - </mehr-item> - </mehr> - <einkommen_xii> - <einkommen_xii-item> - <name_id>a</name_id> - <nselbststaendig_vorhanden>false</nselbststaendig_vorhanden> - <gewerbe_vorhanden>false</gewerbe_vorhanden> - <landwirtschaft_vorhanden>false</landwirtschaft_vorhanden> - <vermietung_vorhanden>false</vermietung_vorhanden> - <kapital_vorhanden>false</kapital_vorhanden> - <krankenkasse_vorhanden>false</krankenkasse_vorhanden> - <pflegekasse_vorhanden>false</pflegekasse_vorhanden> - <bg_vorhanden>false</bg_vorhanden> - <alg_vorhanden>false</alg_vorhanden> - <leistungen_afa_vorhanden>false</leistungen_afa_vorhanden> - <grusi_vorhanden>false</grusi_vorhanden> - <kindergeld_vorhanden>false</kindergeld_vorhanden> - <elterngeld_vorhanden>false</elterngeld_vorhanden> - <rente_inland_vorhanden>false</rente_inland_vorhanden> - <rente_ausland_vorhanden>false</rente_ausland_vorhanden> - <rente_sonstige_vorhanden>false</rente_sonstige_vorhanden> - <unterhalt_vorhanden>false</unterhalt_vorhanden> - <bafoeg_vorhanden>false</bafoeg_vorhanden> - <baukindergeld_vorhanden>false</baukindergeld_vorhanden> - <blindengeld_vorhanden>false</blindengeld_vorhanden> - <vwl_vorhanden>false</vwl_vorhanden> - <sonstiges_vorhanden>false</sonstiges_vorhanden> - <einkommen_gepfaendet>false</einkommen_gepfaendet> - <einkommen_vorhanden>false</einkommen_vorhanden> - <name>Max Mustermann</name> - </einkommen_xii-item> - </einkommen_xii> - <vermoegen> - <vermoegen-item> - <name_id>a</name_id> - <bargeld_vorhanden>false</bargeld_vorhanden> - <konto_vorhanden>false</konto_vorhanden> - <sparguthaben_vorhanden>false</sparguthaben_vorhanden> - <altersvorsorge_vorhanden>false</altersvorsorge_vorhanden> - <bausparvertraege_vorhanden>false</bausparvertraege_vorhanden> - <aktien_vorhanden>false</aktien_vorhanden> - <paypal_vorhanden>false</paypal_vorhanden> - <lebensversicherung_vorhanden>false</lebensversicherung_vorhanden> - <kfz_vorhanden>false</kfz_vorhanden> - <sachwerte_vorhanden>false</sachwerte_vorhanden> - <haus_vorhanden>false</haus_vorhanden> - <hypotheken_vorhanden>false</hypotheken_vorhanden> - <erbschaft_vorhanden>false</erbschaft_vorhanden> - <sonstiges_vorhanden>false</sonstiges_vorhanden> - <veraeusserung_vermoegen>false</veraeusserung_vermoegen> - <vermoegen_vorhanden>false</vermoegen_vorhanden> - <name>Max Mustermann</name> - </vermoegen-item> - </vermoegen> - <datenerhebung>true</datenerhebung> - <vollstaendigkeit>true</vollstaendigkeit> - <a_befreiung_bankgeheimnis>false</a_befreiung_bankgeheimnis> - <a_entbindung_schweigepflicht>false</a_entbindung_schweigepflicht> - <name_bank/> - <iban/> - <kontoinhaber/> - <name_pdf>Antrag_Max_Mustermann_SGBXII</name_pdf> - <postfachnachicht>Sehr geehrte/r Antragsteller*in,<br/><br/>Ihr Antrag wurde erfolgreich übermittelt.<br/><br/>Bitte - denken Sie daran, zur Vervollständigung Ihres Antrages die unterschriebenen Dokumente und erforderlichen - Nachweise einzureichen.<br/><br/>Die Bearbeitung Ihres Antrages ist erst nach Vorlage aller - erforderlichen Dokumente und Nachweise möglich.<br/><br/><br/>Mit freundlichen Grüßen<br/><br/>Kreis - Segeberg - Soziale Sicherung<br/>Hamburger Straße 30<br/>23795 Bad Segeberg - </postfachnachicht> -</myForm> \ No newline at end of file diff --git a/semantik-adapter/src/test/resources/mantelantrag/4620-EH6C_b3c9168a-6ae9-4361-8b2f-6837bb341021_Geschaeftsgang.Geschaeftsgang.0201.xml b/semantik-adapter/src/test/resources/mantelantrag/4620-EH6C_b3c9168a-6ae9-4361-8b2f-6837bb341021_Geschaeftsgang.Geschaeftsgang.0201.xml deleted file mode 100644 index 6054acb5..00000000 --- a/semantik-adapter/src/test/resources/mantelantrag/4620-EH6C_b3c9168a-6ae9-4361-8b2f-6837bb341021_Geschaeftsgang.Geschaeftsgang.0201.xml +++ /dev/null @@ -1,125 +0,0 @@ -<?xml version="1.0"?> -<xdomea:Geschaeftsgang.Geschaeftsgang.0201 xmlns:xdomea="http://www.xdomea.de/V2.0.1"> - <xdomea:Kopf> - <xdomea:ProzessID>b3c9168a-6ae9-4361-8b2f-6837bb341021</xdomea:ProzessID> - <xdomea:Nachrichtentyp codeName="Geschaeftsgang.Geschaeftsgang.0201" codelistAgencyName="AG XDOMEA des KoopA ADV" codelistVersionIdentifier="2.0.0" languageCode="de" codelistName="Nachrichtentyp">0201</xdomea:Nachrichtentyp> - <xdomea:Erstellungszeitpunkt>2024-06-20T09:55:04.420+02:00</xdomea:Erstellungszeitpunkt> - <xdomea:Absender> - <xdomea:Behoerdenkennung> - <xdomea:Kennung codeName="WebMethod_Online-Dienste">WebMethod_Online-Dienste</xdomea:Kennung> - <xdomea:Praefix codeName="afmsh:">afmsh:</xdomea:Praefix> - </xdomea:Behoerdenkennung> - <xdomea:Institution> - <xdomea:Name>Schleswig-Holstein</xdomea:Name> - <xdomea:Kurzbezeichnung>Schleswig-Holstein</xdomea:Kurzbezeichnung> - </xdomea:Institution> - </xdomea:Absender> - <xdomea:Empfaenger> - <xdomea:Behoerdenkennung> - <xdomea:Kennung codeName="ozg-cloud-utopia-test">ozg-cloud-utopia-test</xdomea:Kennung> - <xdomea:Praefix codeName="afmsh:">afmsh:</xdomea:Praefix> - </xdomea:Behoerdenkennung> - </xdomea:Empfaenger> - <xdomea:SendendesSystem> - <xdomea:InstanzID>AFMSH.MSR</xdomea:InstanzID> - <xdomea:Produktname>MSR</xdomea:Produktname> - <xdomea:Version>10.5</xdomea:Version> - </xdomea:SendendesSystem> - <xdomea:EmpfangsbestaetigungAnInitiator>false</xdomea:EmpfangsbestaetigungAnInitiator> - <xdomea:EmpfangsbestaetigungAnVorgaenger>false</xdomea:EmpfangsbestaetigungAnVorgaenger> - </xdomea:Kopf> - <xdomea:Hauptobjekt> - <xdomea:Dokument> - <xdomea:Identifikation> - <xdomea:ID>4e31a750-4988-48f6-928e-066c98238173</xdomea:ID> - </xdomea:Identifikation> - <xdomea:AllgemeineMetadaten> - <xdomea:Betreff>Antrag auf Leistungen der Eingliederungshilfe und/oder Sozialhilfe</xdomea:Betreff> - <xdomea:Kennzeichen>20240620346740905800</xdomea:Kennzeichen> - </xdomea:AllgemeineMetadaten> - <xdomea:Posteingangsdatum>2024-06-20</xdomea:Posteingangsdatum> - <xdomea:Typ>maa_mantelantrag/maa_mantelantrag</xdomea:Typ> - <xdomea:Version> - <xdomea:Nummer>0.0</xdomea:Nummer> - <xdomea:Format> - <xdomea:Name codeName="xml - eXtensible Markup Language" codelistAgencyName="AG XDOMEA des KoopA ADV" codelistVersionIdentifier="2.0.0" languageCode="de" codelistName="Dateiformat">030</xdomea:Name> - <xdomea:Version>0.0</xdomea:Version> - <xdomea:Primaerdokument> - <xdomea:Dateiname>7d703670-15b6-42b2-8cd1-88a7e4c494b9_Antrag_Max_Mustermann_SGBXII.xml</xdomea:Dateiname> - </xdomea:Primaerdokument> - </xdomea:Format> - </xdomea:Version> - <xdomea:Version> - <xdomea:Nummer>0.0</xdomea:Nummer> - <xdomea:Format> - <xdomea:Name codeName="pdf - Portable Document Format" codelistAgencyName="AG XDOMEA des KoopA ADV" codelistVersionIdentifier="2.0.0" languageCode="de" codelistName="Dateiformat">018</xdomea:Name> - <xdomea:Version>0.0</xdomea:Version> - <xdomea:Primaerdokument> - <xdomea:Dateiname>90c53ff4-259b-4165-8ad3-9dda32235ca2_Antrag_Max_Mustermann_SGBXII.pdf</xdomea:Dateiname> - </xdomea:Primaerdokument> - </xdomea:Format> - </xdomea:Version> - </xdomea:Dokument> - </xdomea:Hauptobjekt> - <xdomea:ExternerGeschaeftsgang> - <xdomea:Identifikation> - <xdomea:ID>69f5c99d-8f53-448a-b800-cf165d40392e</xdomea:ID> - </xdomea:Identifikation> - <xdomea:Beteiligungsschritt> - <xdomea:Nummer>1</xdomea:Nummer> - <xdomea:Status codeName="zukuenftig" codelistAgencyName="AG XDOMEA des KoopA ADV" codelistVersionIdentifier="2.0.0" languageCode="de" codelistName="Beteiligungsstatus">001</xdomea:Status> - <xdomea:Verfuegung> - <xdomea:Ersteller> - <xdomea:Behoerdenkennung> - <xdomea:Kennung codeName="WebMethod_Online-Dienste">WebMethod_Online-Dienste</xdomea:Kennung> - <xdomea:Praefix codeName="afmsh:">afmsh:</xdomea:Praefix> - </xdomea:Behoerdenkennung> - </xdomea:Ersteller> - <xdomea:Adressat> - <xdomea:Behoerdenkennung> - <xdomea:Kennung codeName="ozg-cloud-utopia-test">ozg-cloud-utopia-test</xdomea:Kennung> - <xdomea:Praefix codeName="afmsh:">afmsh:</xdomea:Praefix> - </xdomea:Behoerdenkennung> - </xdomea:Adressat> - <xdomea:Erstellungsdatum>2024-06-20</xdomea:Erstellungsdatum> - <xdomea:Erstellungsuhrzeit>09:55:03</xdomea:Erstellungsuhrzeit> - </xdomea:Verfuegung> - </xdomea:Beteiligungsschritt> - </xdomea:ExternerGeschaeftsgang> - <xdomea:Anlage> - <xdomea:Dokument> - <xdomea:Identifikation> - <xdomea:ID>9c0d0202-f193-47e6-bd3e-f230b240c41b</xdomea:ID> - </xdomea:Identifikation> - <xdomea:Typ>Anlage</xdomea:Typ> - <xdomea:Version> - <xdomea:Nummer>1</xdomea:Nummer> - <xdomea:Format> - <xdomea:Name codeName="xml - eXtensible Markup Language" codelistAgencyName="AG XDOMEA des KoopA ADV" codelistVersionIdentifier="2.0.0" languageCode="de" codelistName="Dateiformat">030</xdomea:Name> - <xdomea:Version>0.0</xdomea:Version> - <xdomea:Primaerdokument> - <xdomea:Dateiname>799220b6-df8a-482c-a451-62916a558b1a_SAML-Assertion.xml</xdomea:Dateiname> - </xdomea:Primaerdokument> - </xdomea:Format> - </xdomea:Version> - </xdomea:Dokument> - </xdomea:Anlage> - <xdomea:Anlage> - <xdomea:Dokument> - <xdomea:Identifikation> - <xdomea:ID>fa8c3b9e-db49-4094-bb2e-09ea4557f1d1</xdomea:ID> - </xdomea:Identifikation> - <xdomea:Typ>Anlage</xdomea:Typ> - <xdomea:Version> - <xdomea:Nummer>1</xdomea:Nummer> - <xdomea:Format> - <xdomea:Name codeName="xml - eXtensible Markup Language" codelistAgencyName="AG XDOMEA des KoopA ADV" codelistVersionIdentifier="2.0.0" languageCode="de" codelistName="Dateiformat">030</xdomea:Name> - <xdomea:Version>0.0</xdomea:Version> - <xdomea:Primaerdokument> - <xdomea:Dateiname>aeb3e272-de0d-46b4-9340-6358035facea_EmailBodyBuergerTemplate.xml</xdomea:Dateiname> - </xdomea:Primaerdokument> - </xdomea:Format> - </xdomea:Version> - </xdomea:Dokument> - </xdomea:Anlage> -</xdomea:Geschaeftsgang.Geschaeftsgang.0201> \ No newline at end of file diff --git a/semantik-adapter/src/test/resources/xta/Beispieldatensatz_Fachnachricht.xml b/semantik-adapter/src/test/resources/xta/Beispieldatensatz_Fachnachricht.xml deleted file mode 100644 index 618c4813..00000000 --- a/semantik-adapter/src/test/resources/xta/Beispieldatensatz_Fachnachricht.xml +++ /dev/null @@ -1,32 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.dataport.de/dFAD/ApplicationDataMessageSchema"> - <ApplicationFormId>08db3c1c-db1f-4d27-8dec-73af167e87f2</ApplicationFormId> - <Timestamp>2023-04-18T11:40:24.9940624+02:00</Timestamp> - <ApplicationDataMessageVersion>1</ApplicationDataMessageVersion> - <Title>Testantrag XML-Fachnachricht-Erweiterung</Title> - <ProjectName>XML-Fachnachricht-Erweiterung</ProjectName> - <ProjectTitle>XML-Fachnachricht-Erweiterung</ProjectTitle> - <TransmittedApplicationId>7AtSMHpx3LfJp4</TransmittedApplicationId> - <InboxReference>sh/sh/4dd01647-b9d9-4775-1b50-08da3d83800a</InboxReference> - <MetaText1>9795669</MetaText1> - <Pages> - <Page> - <Title>Beispiel Seite 1</Title> - <Navigation>Beispiel Seite 1</Navigation> - <Controls> - <Control> - <RadioButtonGroup> - <Label>Beispiel-Steuerelement</Label> - <Alias>beispiel-element</Alias> - <SelectedItems> - <SelectedItem> - <Label>Beispielwert 2</Label> - <Value>bsp-2</Value> - </SelectedItem> - </SelectedItems> - </RadioButtonGroup> - </Control> - </Controls> - </Page> - </Pages> -</application> \ No newline at end of file diff --git a/semantik-adapter/src/test/resources/zip-file-0.txt b/semantik-adapter/src/test/resources/zip-file-0.txt deleted file mode 100644 index 7073e659..00000000 --- a/semantik-adapter/src/test/resources/zip-file-0.txt +++ /dev/null @@ -1,2 +0,0 @@ -Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. - diff --git a/semantik-adapter/src/test/resources/zip-file-1.txt b/semantik-adapter/src/test/resources/zip-file-1.txt deleted file mode 100644 index cc0e7610..00000000 --- a/semantik-adapter/src/test/resources/zip-file-1.txt +++ /dev/null @@ -1,796 +0,0 @@ -Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. - -At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. - -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. - -At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. - -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. - -At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. - -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. - -At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. - -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. - -At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. - -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. - -At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. - -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. - -At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. - -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. - -At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. - -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. - -At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. - -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. - -At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. - -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. - -At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. - -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. - -At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. - -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. - -At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. - -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. - -At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. - -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. - -At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. - -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. - -At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. - -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. - -At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. - -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. - -At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. - -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. - -At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. - -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. - -At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. - -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. - -At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. - -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. - -At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. - -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. - -At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. - -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. - -At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. - -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. - -At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. - -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo - -Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. - -At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. - -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. - -At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. - -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. - -At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. - -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. - -At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. - -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. - -At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. - -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. - -At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. - -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. - -At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. - -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. - -At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. - -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. - -At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. - -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. - -At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. - -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. - -At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. - -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. - -At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. - -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. - -At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. - -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. - -At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. - -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. - -At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. - -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. - -At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. - -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. - -At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. - -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. - -At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. - -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. - -At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. - -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. - -At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. - -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. - -At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. - -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. - -At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. - -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. - -At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. - -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. - -At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. - -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. - -At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. - -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo - -orem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. - -At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. - -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -orem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. - -At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. - -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -orem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. - -At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. - -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -orem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. - -At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. - -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -orem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. - -At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. - -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -orem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. - -At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. - -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -orem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. - -At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. - -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. - -At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. - -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. - -At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. - -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. - -At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. - -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. - -Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. - -augue duis dolore te feugait nulla facilisi. augue duis dolore te feugait nulla facilisi. augue duis dolore te feugait nulla facilisi. augue duis dolore te feugait nulla facilisi. augue duis dolore te feugait nulla facilisi. augue duis dolore te feugait nulla facilisi. augue duis dolore te feugait nulla facilisi. - -augue duis dolore te feugait nulla facilisi. augue duis dolore te feugait nulla facilisi. augue duis dolore te feugait nulla facilisi. augue duis dolore te feugait nulla facilisi. augue duis dolore te feugait nulla facilisi. augue duis dolore te feugait nulla facilisi. augue duis dolore te feugait nulla facilisi. - -augue duis dolore te feugait nulla facilisi. augue duis dolore te feugait nulla facilisi. augue duis dolore te feugait diff --git a/semantik-adapter/src/test/resources/zipbombs/filewithmanyfiles.dat.zip b/semantik-adapter/src/test/resources/zipbombs/filewithmanyfiles.dat.zip deleted file mode 100644 index 028b50d4663558eb718abfe2b568d6ac1671521c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17184 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 diff --git a/semantik-adapter/src/test/resources/zipbombs/filewithnulls.dat.zip b/semantik-adapter/src/test/resources/zipbombs/filewithnulls.dat.zip deleted file mode 100644 index 2648814ae1d461b3812d16e8274af15041925c26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10374 zcmWIWW@Zs#U|`^2u=1ZBc1G*eymRUd3=9kl7z7z)7}7FxQp+<-GV)4ua*Fj*5=%lu zI2oA#Yk8%BaA^fM10%}|W(Ec@@#Y{SBLf3N!-Rk9-*Iq(3>n3vAut*OqaiRF0;3@? z8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O zqaiRF0;3@?8UjN(1R8EPJ2Qbi;P^k@`Y@OU;*H|b5Eu=C(GVC7fzc2c4S_)%0v|X7 wycwC~m~kx)lz_W^Nh64fWuYJ|WT7D1BEbM}RyL3ZMg~TPa0UhjNevJW0K-Hy(EtDd diff --git a/sonar-project.properties b/sonar-project.properties index 8660b9e4..ae837131 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -1,13 +1,13 @@ # # Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein +# Ministerpr�sidenten des Landes Schleswig-Holstein # Staatskanzlei # Abteilung Digitalisierung und zentrales IT-Management der Landesregierung # # Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - +# diese von der Europ�ischen Kommission genehmigt wurden - # Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß +# Sie d�rfen dieses Werk ausschlie�lich gem�� # dieser Lizenz nutzen. # Eine Kopie der Lizenz finden Sie hier: # @@ -16,11 +16,16 @@ # Sofern nicht durch anwendbare Rechtsvorschriften # gefordert oder in schriftlicher Form vereinbart, wird # die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen +# ist", OHNE JEGLICHE GEW�HRLEISTUNG ODER BEDINGUNGEN - +# ausdr�cklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschr�nkungen # unter der Lizenz sind dem Lizenztext zu entnehmen. # sonar.java.coveragePlugin=jacoco -sonar.jacoco.reportPath=target/jacoco.exec \ No newline at end of file +sonar.jacoco.reportPath=target/jacoco.exec +sonar.projectKey=formsolutions-adapter +sonar.test.inclusions=**/*.java +sonar.exclusions=**/target/** +sonar.sourceEncoding=UTF-8 +sonar.projectName=FormSolutions-Adapter diff --git a/src/main/helm/Chart.yaml b/src/main/helm/Chart.yaml deleted file mode 100644 index 2b05d0cc..00000000 --- a/src/main/helm/Chart.yaml +++ /dev/null @@ -1,31 +0,0 @@ -# -# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -apiVersion: v1 -appVersion: "1.1" -description: A Helm chart for Intelliform Adapter -name: Intelliform-Adapter -version: 0.0.0-MANAGED-BY-JENKINS -icon: https://simpleicons.org/icons/helm.svg - diff --git a/src/main/helm/README.md b/src/main/helm/README.md deleted file mode 100644 index 2de2b441..00000000 --- a/src/main/helm/README.md +++ /dev/null @@ -1,100 +0,0 @@ -# Intelliform Adapter - -Adapter zum empfangen von Formulardaten von einem IntellForm basierten Formularserver, zum Beispiel iAFM (integriertes Antrags- und Formularmanagement). - -## Routingkonfiguration - -### Vorgang-Manager Instanzen - -Für alle Vorgang-Manager-Instanzen, die von dem Adapter erreichbar sein sollen, muss in das _Environment_ ein Eintrag mit dem GRPC-Service ergänzt werden: - -```yaml -grpc.client.vorgang-manager-*vorgang-manager-name*.address:*url und port* -grpc.client.vorgang-manager-*vorgang-manager-name*.negotiationType: PLAINTEXT -``` - -### Fallback Strategy - -Die Fallback Stratey steuert wie mit Eingängen umgegangen werden soll, für die keine passende Vorgang-Manager-Instanze gefunden werden konnte. - -Folgende Optionen stehen zur Verfügung: - -- **DENY** der Antrag wird mit einer Fehlermeldung abgelehnt. Dies funktioniert nur, solange die Abarbeitung synchron erfolgt. - -- **FUNDSTELLE** der Antrag wird an eine zentrale Fundstelle weitergeleitet. Dafür muss der Name der Vorgang-Manager-Instanze, die als Fundstelle fungiert, eingetragen werden. - -### Routing Strategy - -Die Routing Strategy steuert wie das Routing konfiguriert wird und wieviele Vorgang-Manager-Instanzen berücksichtigt werden können. - -Folgende Optionen stehen zur Verfügung: - -- **MULTI** es kann an beliebig viele Vorgang-Manager-Instanzen geroutet werden. Dafür muss in der Environment ein Mapping der Organisationseinheit-Id auf den Namen einer Vorgang-Manager-Instanz konfiguriert werden. - -```yaml -ozgcloud.adapter.organisationseinheiten.*id*: *vorgang-manager-name* -``` - -- **SINGLE** es wird immer nur an eine Vorgang-Manager-Instanze geroutet, der Name der Instanz ist im Feld 'Vorgang-Manager Name' anzugeben. - -### Beispielkonfiguration - -```yaml -env: - springProfiles: "oc, dev" - grpc: - - name: grpc_client_vorgang-manager-test_address - value: "vorgang-manager.test:9090" - - name: grpc_client_vorgang-manager-test_negotiationType - value: PLAINTEXT - - name: ozgcloud.adapter.organisationseinheiten.1357913579 - value: test -image: - tag: snapshot-latest -imageCredentials: - email: webmaster@ozg-sh.de - password: <geheim> - registry: docker.ozg-sh.de - username: ozgcloud -ingress: - host: kiel-afm.dev.by.ozg-cloud.de -replicaCount: 2 -resources: - limits: - cpu: 1 - memory: 1200Mi - requests: - cpu: 100m - memory: 250Mi -global: - cattle: - clusterId: c-8g78g - clusterName: ozg-dev - systemDefaultRegistry: "" - systemDefaultRegistry: "" -routing: - fallbackStrategy: FUNDSTELLE - fundstelleVorgangManagerName: kiel - routingStrategy: MULTI - targetVorgangManagerName: kiel -``` - -### Benutzung beliebiger environment Werte - -In jedem der Projekte kann man beliebige weitere environments setzen. Dazu muss man in der jeweiligen values.yaml unter env.customList ein name value Paar setzen: - -```yaml -env: - customList: - - name: Dinge - value: true - - name: ... - value: ... -``` - -```yaml -env: - customList: - key_1: value_1 - key_2: value_2 -``` \ No newline at end of file diff --git a/src/main/helm/templates/NOTES.txt b/src/main/helm/templates/NOTES.txt deleted file mode 100644 index 0fa4f710..00000000 --- a/src/main/helm/templates/NOTES.txt +++ /dev/null @@ -1,24 +0,0 @@ -==== - Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - Ministerpräsidenten des Landes Schleswig-Holstein - Staatskanzlei - Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - - Lizenziert unter der EUPL, Version 1.2 oder - sobald - diese von der Europäischen Kommission genehmigt wurden - - Folgeversionen der EUPL ("Lizenz"); - Sie dürfen dieses Werk ausschließlich gemäß - dieser Lizenz nutzen. - Eine Kopie der Lizenz finden Sie hier: - - https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - - Sofern nicht durch anwendbare Rechtsvorschriften - gefordert oder in schriftlicher Form vereinbart, wird - die unter der Lizenz verbreitete Software "so wie sie - ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - ausdrücklich oder stillschweigend - verbreitet. - Die sprachspezifischen Genehmigungen und Beschränkungen - unter der Lizenz sind dem Lizenztext zu entnehmen. -==== - diff --git a/src/main/helm/templates/_helpers.tpl b/src/main/helm/templates/_helpers.tpl deleted file mode 100644 index a66961e5..00000000 --- a/src/main/helm/templates/_helpers.tpl +++ /dev/null @@ -1,109 +0,0 @@ -{{/* vim: set filetype=mustache: */}} - -{{/* error check 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec) */}} -{{/* Namespace */}} -{{- define "app.namespace" -}} -{{- if gt (len (.Release.Namespace)) 63 -}} -{{- fail (printf ".Release.Namespace %s ist zu lang (max. 63 Zeichen)" .Release.Namespace) -}} -{{- end -}} -{{ printf "%s" .Release.Namespace }} -{{- end -}} - -{{/* Chart: Name + Version */}} -{{- define "app.chart" -}} -{{- if gt (len (printf "%s-%s" .Chart.Name .Chart.Version)) 63 -}} -{{- fail (printf ".Chart.Name-.Chart.Version %s-%s ist zu lang (max. 63 Zeichen)" .Chart.Name .Chart.Version) -}} -{{- end -}} -{{ printf "%s-%s" .Chart.Name .Chart.Version }} -{{- end -}} - -{{/* Managed-by -> On Helm, this value is always Helm */}} -{{- define "app.managedBy" -}} -{{- if gt (len (.Release.Service)) 63 -}} -{{- fail (printf ".Release.Service %s ist zu lang (max. 63 Zeichen)" .Release.Service) -}} -{{- end -}} -{{ printf "%s" .Release.Service }} -{{- end -}} - -{{/* Default Labels: Helm recommended best-practice labels https://helm.sh/docs/chart_best_practices/labels/ */}} -{{- define "app.defaultLabels" }} -app.kubernetes.io/instance: afm-adapter -app.kubernetes.io/managed-by: {{ include "app.managedBy" . }} -app.kubernetes.io/name: {{ .Release.Name }} -app.kubernetes.io/part-of: ozgcloud -app.kubernetes.io/version: {{ .Chart.Version }} -app.kubernetes.io/namespace: {{ include "app.namespace" . }} -helm.sh/chart: {{ include "app.chart" . }} -ozg-component: eingangsadapter -{{- end -}} - -{{- define "app.matchLabels" }} -app.kubernetes.io/name: {{ .Release.Name }} -app.kubernetes.io/namespace: {{ include "app.namespace" . }} -{{- end -}} - - -{{- define "app.envSpringProfiles" }} -{{- if (.Values.env).overrideSpringProfiles -}} -{{ printf "%s" (.Values.env).overrideSpringProfiles }} -{{- else -}} -{{ printf "oc, %s" (include "app.ozgcloudEnvironment" . ) }} -{{- end -}} -{{- end -}} - -{{- define "app.ozgcloudEnvironment" -}} -{{- required "Environment muss angegeben sein" (.Values.ozgcloud).environment -}} -{{- end -}} - -{{- define "app.ozgcloudBezeichner" -}} -{{ $length := len (.Values.ozgcloud).bezeichner }} -{{- if ge 46 $length -}} -{{ (.Values.ozgcloud).bezeichner }} -{{- else -}} -{{ required (printf "Bezeichner %s ist zu lang (max. 46 Zeichen)" (.Values.ozgcloud).bezeichner) nil }} -{{- end -}} -{{- end -}} - -{{- define "app.ingress.host" }} -{{- if (.Values.ingress).adapterBezeichner }} -{{- printf "%s-%s.%s" (include "app.ozgcloudBezeichner" .) .Values.ingress.adapterBezeichner .Values.baseUrl }} -{{- else if eq (.Values.image).name "formsolutions-adapter" }} -{{- printf "%s-fs.%s" (include "app.ozgcloudBezeichner" .) .Values.baseUrl }} -{{- else if eq (.Values.image).name "formcycle-adapter" }} -{{- printf "%s-formcycle.%s" (include "app.ozgcloudBezeichner" .) .Values.baseUrl }} -{{- else }} -{{- printf "%s-afm.%s" (include "app.ozgcloudBezeichner" .) .Values.baseUrl }} -{{- end }} -{{- end -}} - -{{- define "app.serviceAccountName" -}} -{{- if (.Values.serviceAccount).name }} -{{- printf "%s" .Values.serviceAccount.name }} -{{- else if eq (.Values.image).name "intelliform-adapter" }} -{{- printf "afm-adapter-service-account" }} -{{- else if eq (.Values.image).name "formsolutions-adapter" }} -{{- printf "fs-adapter-service-account" }} -{{- else if eq (.Values.image).name "formcycle-adapter" }} -{{- printf "formcycle-adapter-service-account" }} -{{- else if eq (.Values.image).name "enterprise-adapter" }} -{{- printf "enterprise-adapter-service-account" }} -{{- end }} -{{- end -}} - -{{- define "app.getCustomList" -}} -{{- with (.Values.env).customList -}} -{{- if kindIs "map" . -}} -{{ include "app.dictToList" . }} -{{- else if kindIs "slice" . -}} -{{ . | toYaml }} -{{- end -}} -{{- end -}} -{{- end -}} - -{{- define "app.dictToList" -}} -{{- $customList := list -}} -{{- range $key, $value := . -}} -{{- $customList = append $customList (dict "name" $key "value" $value) }} -{{- end -}} -{{- $customList | toYaml -}} -{{- end -}} \ No newline at end of file diff --git a/src/main/helm/templates/bindings_type_configmap.yaml b/src/main/helm/templates/bindings_type_configmap.yaml deleted file mode 100644 index 8e4fbace..00000000 --- a/src/main/helm/templates/bindings_type_configmap.yaml +++ /dev/null @@ -1,8 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ .Release.Name }}-bindings-type - namespace: {{ include "app.namespace" . }} -data: - type: | - ca-certificates \ No newline at end of file diff --git a/src/main/helm/templates/deployment.yaml b/src/main/helm/templates/deployment.yaml deleted file mode 100644 index b59bb1cc..00000000 --- a/src/main/helm/templates/deployment.yaml +++ /dev/null @@ -1,193 +0,0 @@ -# -# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ .Release.Name }} - namespace: {{ include "app.namespace" . }} - labels: - {{- include "app.defaultLabels" . | indent 4 }} -spec: - progressDeadlineSeconds: 600 - replicas: {{ .Values.replicaCount }} - revisionHistoryLimit: 10 - selector: - matchLabels: - {{- include "app.matchLabels" . | indent 6 }} - strategy: - rollingUpdate: - maxSurge: 1 - maxUnavailable: 0 - type: RollingUpdate - template: - metadata: - labels: - {{- include "app.defaultLabels" . | indent 8 }} - component: afm-adapter - spec: - {{- if (.Values.serviceAccount).create }} - serviceAccountName: {{ include "app.serviceAccountName" . }} - {{- end }} - topologySpreadConstraints: - - maxSkew: 1 - topologyKey: kubernetes.io/hostname - whenUnsatisfiable: DoNotSchedule - labelSelector: - matchLabels: - app.kubernetes.io/name: {{ .Release.Name }} - containers: - - env: - - name: SERVICE_BINDING_ROOT - value: "/bindings" - {{- range (.Values.env).grpc }} - - name: {{ .name }} - value: {{ .value }} - {{- end }} - - name: spring_profiles_active - value: {{ include "app.envSpringProfiles" . }} - - name: ozgcloud_adapter_fallbackStrategy - value: {{ (.Values.routing).fallbackStrategy | default "DENY"}} - {{- if (.Values.routing).fundstelleVorgangManagerName}} - - name: ozgcloud_adapter_fundstelleVorgangManagerName - value: {{ .Values.routing.fundstelleVorgangManagerName }} - {{- end }} - - name: ozgcloud_adapter_routingStrategy - value: {{ (.Values.routing).routingStrategy | default "SINGLE"}} - {{- if (.Values.routing).targetVorgangManagerName }} - - name: ozgcloud_adapter_targetVorgangManagerName - value: {{ (.Values.routing).targetVorgangManagerName}} - - name: grpc_client_vorgang-manager-{{ (.Values.routing).targetVorgangManagerName}}_address - value: 'dns:///vorgang-manager.{{ coalesce (.Values.routing).targetNamespace .Release.Namespace }}:9090' - - name: grpc_client_vorgang-manager-{{ (.Values.routing).targetVorgangManagerName}}_negotiationType - value: {{ (.Values.routing).negotiationType | default "TLS" }} - {{- end }} - {{- if eq (.Values.routing).routingStrategy "ZUFI" }} - - name: grpc_client_zufi-manager_address - value: {{ required "routing.zufiManager.address must be set when routingStrategy=ZUFI" ((.Values.routing).zufiManager).address | quote }} - - name: grpc_client_zufi-manager_negotiationType - value: {{ ((.Values.routing).zufiManager).negotiationType | default "PLAINTEXT" }} - {{- end }} - - {{- with include "app.getCustomList" . }} -{{ . | indent 8 }} - {{- end }} - image: "{{ .Values.image.repo }}/{{ .Values.image.name }}:{{ coalesce (.Values.image).tag "latest" }}" - imagePullPolicy: Always - name: intelliform-adapter - ports: - - containerPort: 8080 - name: 8080tcp1 - protocol: TCP - - containerPort: 8081 - name: metrics - protocol: TCP - readinessProbe: - failureThreshold: 3 - httpGet: - path: /actuator/health/readiness - port: 8081 - scheme: HTTP - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 3 - startupProbe: - failureThreshold: 10 - httpGet: - path: /actuator/health/readiness - port: 8081 - scheme: HTTP - initialDelaySeconds: 30 - periodSeconds: 5 - successThreshold: 1 - timeoutSeconds: 5 - {{- if .Values.enableLivenessProbe }} - livenessProbe: - failureThreshold: 3 - httpGet: - path: /actuator/health/liveness - port: 8081 - scheme: HTTP - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 3 - {{- end }} - resources: - {{- with .Values.resources }} -{{ toYaml . | indent 10 }} - {{- end }} - securityContext: - allowPrivilegeEscalation: false - privileged: false - readOnlyRootFilesystem: false - runAsNonRoot: true - {{- with (.Values.securityContext).runAsUser }} - runAsUser: {{ . }} - {{- end }} - {{- with (.Values.securityContext).runAsGroup }} - runAsGroup: {{ . }} - {{- end }} - {{- with (.Values.securityContext).capabilities }} - capabilities: -{{ toYaml . | indent 12 }} - {{- end }} - stdin: true - terminationMessagePath: /dev/termination-log - terminationMessagePolicy: File - tty: true - volumeMounts: - - name: temp-dir - mountPath: "/tmp" - - name: namespace-ca-cert - mountPath: "/bindings/namespace-certificate" - readOnly: true - volumes: - - name: temp-dir - emptyDir: {} - - name: namespace-ca-cert - projected: - sources: - - secret: - name: {{ include "app.namespace" . }}-ca-cert - optional: true - items: - - key: ca.crt - path: ca.crt - - configMap: - name: {{ .Release.Name }}-bindings-type - dnsConfig: {} - dnsPolicy: ClusterFirst - imagePullSecrets: - - name: {{ required "imagePullSecret must be set" .Values.imagePullSecret }} - restartPolicy: Always - {{- with .Values.hostAliases }} - hostAliases: -{{ toYaml . | indent 8 }} - {{- end }} - schedulerName: default-scheduler - {{- with .Values.podSecurityContext }} - securityContext: -{{ toYaml . | indent 8 }} - {{- end }} - terminationGracePeriodSeconds: 30 \ No newline at end of file diff --git a/src/main/helm/templates/ingress.yaml b/src/main/helm/templates/ingress.yaml deleted file mode 100644 index fa2ba46f..00000000 --- a/src/main/helm/templates/ingress.yaml +++ /dev/null @@ -1,67 +0,0 @@ -# -# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -{{- if (.Values.ingress).enabled }} -apiVersion: networking.k8s.io/v1 -kind: Ingress -metadata: - annotations: - {{- with (.Values.ingress).annotations }} -{{ toYaml . | indent 4 }} - {{- end }} - {{- if not (.Values.ingress).disableDefaultCertManager }} - {{- if (.Values.ingress).use_staging_cert }} - cert-manager.io/cluster-issuer: letsencrypt-staging - {{- else }} - cert-manager.io/cluster-issuer: letsencrypt-prod - {{- end }} - {{- end }} - name: {{ .Release.Name }} - namespace: {{ include "app.namespace" . }} -spec: - {{- if and (.Values.ingress).className }} - ingressClassName: {{ .Values.ingress.className }} - {{- end }} - rules: - - http: - paths: - - backend: - service: - port: - number: 8080 - name: {{ .Release.Name }} - path: '' - pathType: ImplementationSpecific - host: {{ include "app.ingress.host" . }} - tls: - - hosts: - - {{ include "app.ingress.host" . }} - {{- if not (.Values.ingress).skipTlsSecret -}} - {{- if (.Values.ingress).tlsSecretName }} - secretName: {{ (.Values.ingress).tlsSecretName }} - {{- else }} - secretName: {{ .Values.ozgcloud.bezeichner }}-{{ .Release.Name }}-tls - {{- end }} - {{- end }} -{{- end -}} \ No newline at end of file diff --git a/src/main/helm/templates/network_policy.yaml b/src/main/helm/templates/network_policy.yaml deleted file mode 100644 index b8183ad0..00000000 --- a/src/main/helm/templates/network_policy.yaml +++ /dev/null @@ -1,91 +0,0 @@ -# -# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -{{- if not (.Values.networkPolicy).disabled }} -apiVersion: networking.k8s.io/v1 -kind: NetworkPolicy -metadata: - name: network-policy-{{ .Release.Name}} - namespace: {{ .Release.Namespace }} -spec: - podSelector: - matchLabels: - ozg-component: eingangsadapter - policyTypes: - - Ingress - - Egress - ingress: - - ports: - - port: 8080 - - from: - - namespaceSelector: - matchLabels: - name: {{ (.Values.networkPolicy).monitoringNamespace | default "openshift-user-workload-monitoring" }} - ports: - - protocol: TCP - port: 8081 - egress: - - to: - - podSelector: - matchLabels: - component: vorgang-manager - ports: - - port: 9090 - protocol: TCP - - to: - - namespaceSelector: - matchLabels: - kubernetes.io/metadata.name: {{ required "networkPolicy.dnsServerNamespace must be set" (.Values.networkPolicy).dnsServerNamespace }} - ports: - - port: 53 - protocol: UDP - - port: 53 - protocol: TCP - - port: 5353 - protocol: UDP - - port: 5353 - protocol: TCP - -{{- if eq (.Values.routing).routingStrategy "ZUFI" }} - - to: - - namespaceSelector: - matchLabels: - kubernetes.io/metadata.name: {{ required "routing.zufiManager.namespace must be set if routingStrategy=ZUFI" ((.Values.routing).zufiManager).namespace }} - podSelector: - matchLabels: - component: zufi-server - ports: - - port: 9090 - protocol: TCP - - to: - - namespaceSelector: {} - podSelector: - matchLabels: - component: vorgang-manager - ports: - - port: 9090 - protocol: TCP -{{- end }} - -{{- end }} \ No newline at end of file diff --git a/src/main/helm/templates/service.yaml b/src/main/helm/templates/service.yaml deleted file mode 100644 index 93574b29..00000000 --- a/src/main/helm/templates/service.yaml +++ /dev/null @@ -1,45 +0,0 @@ -# -# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -apiVersion: v1 -kind: Service -metadata: - name: {{ .Release.Name }} - namespace: {{ include "app.namespace" . }} - labels: - {{- include "app.defaultLabels" . | indent 4 }} - component: afm-adapter-service -spec: - ports: - - name: http - port: 8080 - protocol: TCP - targetPort: 8080 - - name: metrics - port: 8081 - protocol: TCP - type: ClusterIP - selector: - {{- include "app.matchLabels" . | indent 4 }} - component: afm-adapter \ No newline at end of file diff --git a/src/main/helm/templates/service_account.yaml b/src/main/helm/templates/service_account.yaml deleted file mode 100644 index 0e13e6bc..00000000 --- a/src/main/helm/templates/service_account.yaml +++ /dev/null @@ -1,31 +0,0 @@ -# -# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -{{- if (.Values.serviceAccount).create }} -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ include "app.serviceAccountName" . }} - namespace: {{ include "app.namespace" . }} -{{- end }} \ No newline at end of file diff --git a/src/main/helm/templates/service_monitor.yaml b/src/main/helm/templates/service_monitor.yaml deleted file mode 100644 index 053a2581..00000000 --- a/src/main/helm/templates/service_monitor.yaml +++ /dev/null @@ -1,43 +0,0 @@ -# -# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ .Release.Name }} - namespace: {{ include "app.namespace" . }} - labels: - {{- include "app.defaultLabels" . | indent 4 }} - component: afm-adapter-service-monitor -spec: - endpoints: - - port: metrics - path: /actuator/prometheus - namespaceSelector: - matchNames: - - {{ include "app.namespace" . }} - selector: - matchLabels: - {{- include "app.matchLabels" . | indent 6 }} - component: afm-adapter-service \ No newline at end of file diff --git a/src/main/helm/templates/tests/test-ingress-connection.yaml b/src/main/helm/templates/tests/test-ingress-connection.yaml deleted file mode 100644 index 6d33a4e5..00000000 --- a/src/main/helm/templates/tests/test-ingress-connection.yaml +++ /dev/null @@ -1,39 +0,0 @@ -# -# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -apiVersion: v1 -kind: Pod -metadata: - name: "{{ .Release.Name }}-test-ingress" - labels: - {{- include "app.matchLabels" . | nindent 4 }} - annotations: - "helm.sh/hook": test -spec: - containers: - - name: wget - image: busybox - command: ['wget'] - args: ['https://{{ .Values.ingress.host }}/ws/intelliform_formDatas.wsdl'] - restartPolicy: Never diff --git a/src/main/helm/templates/tests/test-service-connection.yaml b/src/main/helm/templates/tests/test-service-connection.yaml deleted file mode 100644 index 62dda4f5..00000000 --- a/src/main/helm/templates/tests/test-service-connection.yaml +++ /dev/null @@ -1,39 +0,0 @@ -# -# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -apiVersion: v1 -kind: Pod -metadata: - name: "{{ .Release.Name }}-test-connection" - labels: - {{- include "app.matchLabels" . | nindent 4 }} - annotations: - "helm.sh/hook": test -spec: - containers: - - name: wget - image: busybox - command: ['wget'] - args: ['{{ .Release.Name }}:8080/ws/intelliform_formDatas.wsdl'] - restartPolicy: Never diff --git a/src/main/helm/values.yaml b/src/main/helm/values.yaml deleted file mode 100644 index 11800953..00000000 --- a/src/main/helm/values.yaml +++ /dev/null @@ -1,40 +0,0 @@ -# -# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -baseUrl: test.sh.ozg-cloud.de - -image: - repo: docker.ozg-sh.de - name: intelliform-adapter # [default: intelliform-adapter] - tag: latest # [default: latest] - - -ingress: - enabled: true - # overrideHost: kiel-afm.dev.by.ozg-cloud.de - -routing: - targetVorgangManagerName: vorgang-manager -# fallbackStrategy: DENY -# routingStrategy: SINGLE diff --git a/formsolutions-adapter/src/main/java/de/ozgcloud/eingang/formsolutions/FormSolutionsAttachmentsMapper.java b/src/main/java/de/ozgcloud/eingang/formsolutions/FormSolutionsAttachmentsMapper.java similarity index 100% rename from formsolutions-adapter/src/main/java/de/ozgcloud/eingang/formsolutions/FormSolutionsAttachmentsMapper.java rename to src/main/java/de/ozgcloud/eingang/formsolutions/FormSolutionsAttachmentsMapper.java diff --git a/formsolutions-adapter/src/main/java/de/ozgcloud/eingang/formsolutions/FormSolutionsEingang.java b/src/main/java/de/ozgcloud/eingang/formsolutions/FormSolutionsEingang.java similarity index 100% rename from formsolutions-adapter/src/main/java/de/ozgcloud/eingang/formsolutions/FormSolutionsEingang.java rename to src/main/java/de/ozgcloud/eingang/formsolutions/FormSolutionsEingang.java diff --git a/formsolutions-adapter/src/main/java/de/ozgcloud/eingang/formsolutions/FormSolutionsFileMapperUtils.java b/src/main/java/de/ozgcloud/eingang/formsolutions/FormSolutionsFileMapperUtils.java similarity index 100% rename from formsolutions-adapter/src/main/java/de/ozgcloud/eingang/formsolutions/FormSolutionsFileMapperUtils.java rename to src/main/java/de/ozgcloud/eingang/formsolutions/FormSolutionsFileMapperUtils.java diff --git a/formsolutions-adapter/src/main/java/de/ozgcloud/eingang/formsolutions/FormSolutionsRequestMapper.java b/src/main/java/de/ozgcloud/eingang/formsolutions/FormSolutionsRequestMapper.java similarity index 100% rename from formsolutions-adapter/src/main/java/de/ozgcloud/eingang/formsolutions/FormSolutionsRequestMapper.java rename to src/main/java/de/ozgcloud/eingang/formsolutions/FormSolutionsRequestMapper.java diff --git a/formsolutions-adapter/src/main/java/de/ozgcloud/eingang/formsolutions/SemantikAdapterConfiguration.java b/src/main/java/de/ozgcloud/eingang/formsolutions/SemantikAdapterConfiguration.java similarity index 100% rename from formsolutions-adapter/src/main/java/de/ozgcloud/eingang/formsolutions/SemantikAdapterConfiguration.java rename to src/main/java/de/ozgcloud/eingang/formsolutions/SemantikAdapterConfiguration.java diff --git a/formsolutions-adapter/src/main/java/de/ozgcloud/eingang/formsolutions/SendFormEndpoint.java b/src/main/java/de/ozgcloud/eingang/formsolutions/SendFormEndpoint.java similarity index 100% rename from formsolutions-adapter/src/main/java/de/ozgcloud/eingang/formsolutions/SendFormEndpoint.java rename to src/main/java/de/ozgcloud/eingang/formsolutions/SendFormEndpoint.java diff --git a/formsolutions-adapter/src/main/java/de/ozgcloud/eingang/formsolutions/WebServiceConfiguration.java b/src/main/java/de/ozgcloud/eingang/formsolutions/WebServiceConfiguration.java similarity index 100% rename from formsolutions-adapter/src/main/java/de/ozgcloud/eingang/formsolutions/WebServiceConfiguration.java rename to src/main/java/de/ozgcloud/eingang/formsolutions/WebServiceConfiguration.java diff --git a/formsolutions-adapter/src/main/resources/application-local.yml b/src/main/resources/application-local.yml similarity index 100% rename from formsolutions-adapter/src/main/resources/application-local.yml rename to src/main/resources/application-local.yml diff --git a/formsolutions-adapter/src/main/resources/application.yml b/src/main/resources/application.yml similarity index 100% rename from formsolutions-adapter/src/main/resources/application.yml rename to src/main/resources/application.yml diff --git a/formsolutions-adapter/src/main/resources/banner.txt b/src/main/resources/banner.txt similarity index 100% rename from formsolutions-adapter/src/main/resources/banner.txt rename to src/main/resources/banner.txt diff --git a/formsolutions-adapter/src/main/resources/formsolutions/formdata.xsd b/src/main/resources/formsolutions/formdata.xsd similarity index 100% rename from formsolutions-adapter/src/main/resources/formsolutions/formdata.xsd rename to src/main/resources/formsolutions/formdata.xsd diff --git a/formsolutions-adapter/src/main/resources/wsdl/jsonWrap.wsdl b/src/main/resources/wsdl/jsonWrap.wsdl similarity index 100% rename from formsolutions-adapter/src/main/resources/wsdl/jsonWrap.wsdl rename to src/main/resources/wsdl/jsonWrap.wsdl diff --git a/formsolutions-adapter/src/main/resources/wsdl/jsonWrap.xsd b/src/main/resources/wsdl/jsonWrap.xsd similarity index 100% rename from formsolutions-adapter/src/main/resources/wsdl/jsonWrap.xsd rename to src/main/resources/wsdl/jsonWrap.xsd diff --git a/src/test/helm-linter-values.yaml b/src/test/helm-linter-values.yaml deleted file mode 100644 index 42eb0483..00000000 --- a/src/test/helm-linter-values.yaml +++ /dev/null @@ -1,33 +0,0 @@ -# -# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -ozgcloud: - environment: test - bezeichner: helm - bundesland: sh - -networkPolicy: - dnsServerNamespace: test-dns-server-namespace - -imagePullSecret: image-pull-secret \ No newline at end of file diff --git a/src/test/helm/bindings_type_test.yaml b/src/test/helm/bindings_type_test.yaml deleted file mode 100644 index f0fa5ade..00000000 --- a/src/test/helm/bindings_type_test.yaml +++ /dev/null @@ -1,46 +0,0 @@ -# -# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -suite: test bindings type configmap -templates: - - templates/bindings_type_configmap.yaml -release: - name: eingang-manager - namespace: sh-helm-test -tests: - - it: xta bindings type - asserts: - - isKind: - of: ConfigMap - - isAPIVersion: - of: v1 - - equal: - path: metadata.name - value: eingang-manager-bindings-type - - equal: - path: metadata.namespace - value: sh-helm-test - - equal: - path: data.type - value: ca-certificates diff --git a/src/test/helm/deployment_63_chars_test.yaml b/src/test/helm/deployment_63_chars_test.yaml deleted file mode 100644 index 62c2f8e3..00000000 --- a/src/test/helm/deployment_63_chars_test.yaml +++ /dev/null @@ -1,56 +0,0 @@ -# -# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -suite: test deyploment less than 63 chars -release: - name: eingang-manager - namespace: sh-helm-test - -chart: - name: eingang-manager -set: - ozgcloud.environment: test - imagePullSecret: image-pull-secret -templates: - - templates/deployment.yaml - -tests: - - it: should fail on .Release.Namespace length longer than 63 characters - release: - namespace: test1234567890123123456789012345678901234567890123456789012345678901234567890123456789012345678904567890 - asserts: - - failedTemplate: - errorMessage: .Release.Namespace test1234567890123123456789012345678901234567890123456789012345678901234567890123456789012345678904567890 ist zu lang (max. 63 Zeichen) - - it: should not fail on .Release.Namespace length less than 63 characters - asserts: - - notFailedTemplate: {} - - it: should fail on .Chart.Name-.Chart.Version length longer than 63 characters - chart: - version: 1.0-test1234567890123123456789012345678901234567890123456789012345678901234567890123456789012345678904567890 - asserts: - - failedTemplate: - errorMessage: .Chart.Name-.Chart.Version Intelliform-Adapter-1.0-test1234567890123123456789012345678901234567890123456789012345678901234567890123456789012345678904567890 ist zu lang (max. 63 Zeichen) - - it: should not fail on .Chart.Name-.Chart.Version length less than 63 characters - asserts: - - notFailedTemplate: {} \ No newline at end of file diff --git a/src/test/helm/deployment_bindings_test.yaml b/src/test/helm/deployment_bindings_test.yaml deleted file mode 100644 index f4e0f24e..00000000 --- a/src/test/helm/deployment_bindings_test.yaml +++ /dev/null @@ -1,75 +0,0 @@ -# -# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -suite: deployment bindings -templates: - - templates/deployment.yaml -release: - name: eingang-manager - namespace: sh-helm-test -set: - ozgcloud.environment: test - imagePullSecret: image-pull-secret -tests: - - it: should have temp-dir volume - asserts: - - contains: - path: spec.template.spec.containers[0].volumeMounts - content: - name: temp-dir - mountPath: "/tmp" - - - it: should have temp-dir volume mount - asserts: - - contains: - path: spec.template.spec.volumes - content: - name: temp-dir - emptyDir: {} - - - it: should have projected namespace-ca-cert volume - asserts: - - contains: - path: spec.template.spec.volumes - content: - name: namespace-ca-cert - projected: - sources: - - secret: - name: sh-helm-test-ca-cert - optional: true - items: - - key: ca.crt - path: ca.crt - - configMap: - name: eingang-manager-bindings-type - - - it: should have namespace-ca-cert volume mount - asserts: - - contains: - path: spec.template.spec.containers[0].volumeMounts - content: - name: namespace-ca-cert - mountPath: "/bindings/namespace-certificate" - readOnly: true \ No newline at end of file diff --git a/src/test/helm/deployment_container_security_context_test.yaml b/src/test/helm/deployment_container_security_context_test.yaml deleted file mode 100644 index 06133120..00000000 --- a/src/test/helm/deployment_container_security_context_test.yaml +++ /dev/null @@ -1,89 +0,0 @@ -# -# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -suite: test deployment container security -release: - name: eingang-manager - namespace: sh-helm-test -templates: - - templates/deployment.yaml -set: - ozgcloud.environment: test - imagePullSecret: image-pull-secret -tests: - - it: check default values - asserts: - - equal: - path: spec.template.spec.containers[0].securityContext.allowPrivilegeEscalation - value: false - - equal: - path: spec.template.spec.containers[0].securityContext.privileged - value: false - - equal: - path: spec.template.spec.containers[0].securityContext.readOnlyRootFilesystem - value: false - - equal: - path: spec.template.spec.containers[0].securityContext.runAsNonRoot - value: true - - isNull: - path: spec.template.spec.containers[0].securityContext.runAsUser - - isNull: - path: spec.template.spec.containers[0].securityContext.runAsGroup - - isNull: - path: spec.template.spec.securityContext.fsGroup - - isNull: - path: spec.template.spec.containers[0].securityContext.capabilities - - it: check runAsUser - set: - securityContext.runAsUser: 1000 - asserts: - - equal: - path: spec.template.spec.containers[0].securityContext.runAsUser - value: 1000 - - it: check runAsGroup - set: - securityContext.runAsGroup: 1000 - asserts: - - equal: - path: spec.template.spec.containers[0].securityContext.runAsGroup - value: 1000 - - it: check fsGroup - set: - podSecurityContext.fsGroup: 1000 - asserts: - - equal: - path: spec.template.spec.securityContext.fsGroup - value: 1000 - - it: check capabilities - set: - securityContext: - capabilities: - drop: - - ALL - asserts: - - equal: - path: spec.template.spec.containers[0].securityContext.capabilities - value: - drop: - - ALL \ No newline at end of file diff --git a/src/test/helm/deployment_defaults_containers_health_test.yaml b/src/test/helm/deployment_defaults_containers_health_test.yaml deleted file mode 100644 index c6e30a3a..00000000 --- a/src/test/helm/deployment_defaults_containers_health_test.yaml +++ /dev/null @@ -1,82 +0,0 @@ -# -# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -suite: test deployment health check -release: - name: eingang-manager - namespace: sh-helm-test -templates: - - templates/deployment.yaml -set: - ozgcloud.environment: test - imagePullSecret: image-pull-secret -tests: - - it: should have correct health check values - asserts: - - equal: - path: spec.template.spec.containers[0].readinessProbe.failureThreshold - value: 3 - - equal: - path: spec.template.spec.containers[0].readinessProbe.httpGet.path - value: /actuator/health/readiness - - equal: - path: spec.template.spec.containers[0].readinessProbe.httpGet.port - value: 8081 - - equal: - path: spec.template.spec.containers[0].readinessProbe.httpGet.scheme - value: HTTP - - equal: - path: spec.template.spec.containers[0].readinessProbe.periodSeconds - value: 10 - - equal: - path: spec.template.spec.containers[0].readinessProbe.successThreshold - value: 1 - - equal: - path: spec.template.spec.containers[0].readinessProbe.timeoutSeconds - value: 3 - - equal: - path: spec.template.spec.containers[0].startupProbe.failureThreshold - value: 10 - - equal: - path: spec.template.spec.containers[0].startupProbe.httpGet.path - value: /actuator/health/readiness - - equal: - path: spec.template.spec.containers[0].startupProbe.httpGet.port - value: 8081 - - equal: - path: spec.template.spec.containers[0].startupProbe.httpGet.scheme - value: HTTP - - equal: - path: spec.template.spec.containers[0].startupProbe.initialDelaySeconds - value: 30 - - equal: - path: spec.template.spec.containers[0].startupProbe.periodSeconds - value: 5 - - equal: - path: spec.template.spec.containers[0].startupProbe.successThreshold - value: 1 - - equal: - path: spec.template.spec.containers[0].startupProbe.timeoutSeconds - value: 5 - \ No newline at end of file diff --git a/src/test/helm/deployment_defaults_labels_test.yaml b/src/test/helm/deployment_defaults_labels_test.yaml deleted file mode 100644 index 4e2d5f7f..00000000 --- a/src/test/helm/deployment_defaults_labels_test.yaml +++ /dev/null @@ -1,49 +0,0 @@ -# -# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -suite: test deployment default label -release: - name: intelliform-adapter - namespace: sh-helm-test -templates: - - templates/deployment.yaml - -set: - ozgcloud.environment: test - imagePullSecret: image-pull-secret -tests: - - it: check default labels - asserts: - - equal: - path: metadata.labels - value: - app.kubernetes.io/instance: afm-adapter - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/name: intelliform-adapter - app.kubernetes.io/namespace: sh-helm-test - app.kubernetes.io/part-of: ozgcloud - app.kubernetes.io/version: 0.0.0-MANAGED-BY-JENKINS - helm.sh/chart: Intelliform-Adapter-0.0.0-MANAGED-BY-JENKINS - ozg-component: eingangsadapter - diff --git a/src/test/helm/deployment_defaults_spec_containers_test.yaml b/src/test/helm/deployment_defaults_spec_containers_test.yaml deleted file mode 100644 index 947c086f..00000000 --- a/src/test/helm/deployment_defaults_spec_containers_test.yaml +++ /dev/null @@ -1,75 +0,0 @@ -# -# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -suite: test deployment actuator -release: - name: eingang-manager - namespace: sh-helm-test -templates: - - templates/deployment.yaml -set: - ozgcloud.environment: test - imagePullSecret: image-pull-secret -tests: - - it: check for some standard values - asserts: - - equal: - path: spec.template.spec.containers[0].image - value: docker.ozg-sh.de/intelliform-adapter:latest - - equal: - path: spec.template.spec.containers[0].imagePullPolicy - value: Always - - equal: - path: spec.template.spec.containers[0].name - value: intelliform-adapter - - equal: - path: spec.template.spec.containers[0].ports[0].containerPort - value: 8080 - - equal: - path: spec.template.spec.containers[0].ports[0].name - value: 8080tcp1 - - equal: - path: spec.template.spec.containers[0].ports[0].protocol - value: TCP - - equal: - path: spec.template.spec.containers[0].stdin - value: true - - equal: - path: spec.template.spec.containers[0].terminationMessagePath - value: /dev/termination-log - - equal: - path: spec.template.spec.containers[0].terminationMessagePolicy - value: File - - equal: - path: spec.template.spec.containers[0].tty - value: true - - equal: - path: spec.template.spec.containers[0].ports[1].containerPort - value: 8081 - - equal: - path: spec.template.spec.containers[0].ports[1].name - value: metrics - - equal: - path: spec.template.spec.containers[0].ports[1].protocol - value: TCP \ No newline at end of file diff --git a/src/test/helm/deployment_defaults_topologySpreadConstraints_test.yaml b/src/test/helm/deployment_defaults_topologySpreadConstraints_test.yaml deleted file mode 100644 index 9364e450..00000000 --- a/src/test/helm/deployment_defaults_topologySpreadConstraints_test.yaml +++ /dev/null @@ -1,48 +0,0 @@ -# -# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -suite: test deployment topology -release: - name: eingang-manager - namespace: sh-helm-test -templates: - - templates/deployment.yaml -set: - ozgcloud.environment: test - imagePullSecret: image-pull-secret -tests: - - it: check default values - asserts: - - equal: - path: spec.template.spec.topologySpreadConstraints[0].maxSkew - value: 1 - - equal: - path: spec.template.spec.topologySpreadConstraints[0].topologyKey - value: kubernetes.io/hostname - - equal: - path: spec.template.spec.topologySpreadConstraints[0].whenUnsatisfiable - value: DoNotSchedule - - equal: - path: spec.template.spec.topologySpreadConstraints[0].labelSelector.matchLabels["app.kubernetes.io/name"] - value: eingang-manager \ No newline at end of file diff --git a/src/test/helm/deployment_env_customList_test.yaml b/src/test/helm/deployment_env_customList_test.yaml deleted file mode 100644 index 32e81b53..00000000 --- a/src/test/helm/deployment_env_customList_test.yaml +++ /dev/null @@ -1,72 +0,0 @@ -# -# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -suite: test environments customList -templates: - - templates/deployment.yaml -set: - ozgcloud.environment: test - imagePullSecret: image-pull-secret -tests: - - it: check customList as list - set: - env.customList: - - name: my_test_environment_name - value: "A test value" - - name: test_environment - value: "B test value" - asserts: - - contains: - path: spec.template.spec.containers[0].env - content: - name: my_test_environment_name - value: "A test value" - - contains: - path: spec.template.spec.containers[0].env - content: - name: test_environment - value: "B test value" - - it: check customList as dict - set: - env.customList: - my_test_environment_name: "A test value" - test_environment: "B test value" - asserts: - - contains: - path: spec.template.spec.containers[0].env - content: - name: my_test_environment_name - value: "A test value" - - contains: - path: spec.template.spec.containers[0].env - content: - name: test_environment - value: "B test value" - - it: check customList test value is not set by default - asserts: - - notContains: - path: spec.template.spec.containers[0].env - content: - name: my_test_environment_name - value: "A test value" diff --git a/src/test/helm/deployment_host_aliases_test.yaml b/src/test/helm/deployment_host_aliases_test.yaml deleted file mode 100644 index 4ba73fa7..00000000 --- a/src/test/helm/deployment_host_aliases_test.yaml +++ /dev/null @@ -1,54 +0,0 @@ -# -# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -suite: deployment host aliases -release: - name: eingang-manager - namespace: sh-helm-test -templates: - - templates/deployment.yaml - -set: - ozgcloud.environment: test - imagePullSecret: image-pull-secret -tests: - - it: should not set hostAliases - asserts: - - isNull: - path: spec.template.spec.hostAliases - - it: should set hostAliases - set: - hostAliases: - - ip: "127.0.0.1" - hostname: - - "eins" - - "zwei" - asserts: - - contains: - path: spec.template.spec.hostAliases - content: - ip: "127.0.0.1" - hostname: - - "eins" - - "zwei" diff --git a/src/test/helm/deployment_imagepull_secret_test.yaml b/src/test/helm/deployment_imagepull_secret_test.yaml deleted file mode 100644 index eb15225e..00000000 --- a/src/test/helm/deployment_imagepull_secret_test.yaml +++ /dev/null @@ -1,44 +0,0 @@ -# -# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -suite: test deployment imagepullsecret -release: - name: afm-adapter - namespace: sh-helm-test -templates: - - templates/deployment.yaml -set: - ozgcloud.environment: test -tests: - - it: should set the imagePull secret - set: - imagePullSecret: image-pull-secret - asserts: - - equal: - path: spec.template.spec.imagePullSecrets[0].name - value: image-pull-secret - - it: should fail tempalte when not set - asserts: - - failedTemplate: - errorMessage: imagePullSecret must be set \ No newline at end of file diff --git a/src/test/helm/deployment_liveness_probe_test.yaml b/src/test/helm/deployment_liveness_probe_test.yaml deleted file mode 100644 index 944984fb..00000000 --- a/src/test/helm/deployment_liveness_probe_test.yaml +++ /dev/null @@ -1,51 +0,0 @@ -# -# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -suite: test deployment liveness probe -templates: - - templates/deployment.yaml -set: - ozgcloud.environment: test - imagePullSecret: image-pull-secret -tests: - - it: livenessProbe should be disabled by default - asserts: - - notExists: - path: spec.template.spec.containers[0].livenessProbe - - - it: enable livenessProbe - set: - enableLivenessProbe: true - asserts: - - isSubset: - path: spec.template.spec.containers[0].livenessProbe - content: - failureThreshold: 3 - httpGet: - path: /actuator/health/liveness - port: 8081 - scheme: HTTP - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 3 diff --git a/src/test/helm/deployment_pod_default_spec_values_test.yaml b/src/test/helm/deployment_pod_default_spec_values_test.yaml deleted file mode 100644 index ed1df2ad..00000000 --- a/src/test/helm/deployment_pod_default_spec_values_test.yaml +++ /dev/null @@ -1,50 +0,0 @@ - # -# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -suite: test deployment container basics -release: - name: eingang-manager - namespace: sh-helm-test -templates: - - templates/deployment.yaml -set: - ozgcloud.environment: test - imagePullSecret: image-pull-secret -tests: - - it: should have correct pod template values - asserts: - - isEmpty: - path: spec.template.spec.dnsConfig - - equal: - path: spec.template.spec.dnsPolicy - value: "ClusterFirst" - - equal: - path: spec.template.spec.restartPolicy - value: "Always" - - equal: - path: spec.template.spec.schedulerName - value: "default-scheduler" - - equal: - path: spec.template.spec.terminationGracePeriodSeconds - value: 30 \ No newline at end of file diff --git a/src/test/helm/deployment_resources_test.yaml b/src/test/helm/deployment_resources_test.yaml deleted file mode 100644 index 6404c0c9..00000000 --- a/src/test/helm/deployment_resources_test.yaml +++ /dev/null @@ -1,61 +0,0 @@ -# -# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -suite: test deployment resources -release: - name: afm-adapter -templates: - - templates/deployment.yaml -set: - ozgcloud.environment: test - imagePullSecret: image-pull-secret -tests: - - it: test resources - set: - resources: - limits: - cpu: "11m" - memory: "22Mi" - requests: - cpu: "33m" - memory: "44Mi" - asserts: - - equal: - path: spec.template.spec.containers[0].resources.limits.cpu - value: 11m - - equal: - path: spec.template.spec.containers[0].resources.limits.memory - value: 22Mi - - equal: - path: spec.template.spec.containers[0].resources.requests.cpu - value: 33m - - equal: - path: spec.template.spec.containers[0].resources.requests.memory - value: 44Mi - - - it: test empty resources - asserts: - - isEmpty: - path: spec.template.spec.containers[0].resources - diff --git a/src/test/helm/deployment_routing_strategy_env_test.yaml b/src/test/helm/deployment_routing_strategy_env_test.yaml deleted file mode 100644 index e70cff6f..00000000 --- a/src/test/helm/deployment_routing_strategy_env_test.yaml +++ /dev/null @@ -1,80 +0,0 @@ -# -# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -suite: test deployment routing strategy -release: - name: intelliform-adapter - namespace: sh-helm-test -templates: - - deployment.yaml -set: - image.tag: latest - ozgcloud.environment: test - imagePullSecret: image-pull-secret -tests: - - it: validate default routing values without questions.yaml - asserts: - - contains: - path: spec.template.spec.containers[0].env - content: - name: ozgcloud_adapter_routingStrategy - value: SINGLE - - contains: - path: spec.template.spec.containers[0].env - content: - name: ozgcloud_adapter_fallbackStrategy - value: DENY - - contains: - path: spec.template.spec.containers[0].env - content: - name: grpc_client_vorgang-manager-vorgang-manager_negotiationType - value: TLS - - contains: - path: spec.template.spec.containers[0].env - content: - name: grpc_client_vorgang-manager-vorgang-manager_address - value: dns:///vorgang-manager.sh-helm-test:9090 - - - it: validate routing infos - set: - routing: - routingStrategy: MULTI - fallbackStrategy: FUNDSTELLE - negotiationType: PLAINTEXT - asserts: - - contains: - path: spec.template.spec.containers[0].env - content: - name: ozgcloud_adapter_routingStrategy - value: MULTI - - contains: - path: spec.template.spec.containers[0].env - content: - name: ozgcloud_adapter_fallbackStrategy - value: FUNDSTELLE - - contains: - path: spec.template.spec.containers[0].env - content: - name: grpc_client_vorgang-manager-vorgang-manager_negotiationType - value: PLAINTEXT \ No newline at end of file diff --git a/src/test/helm/deployment_routing_zufi_test.yaml b/src/test/helm/deployment_routing_zufi_test.yaml deleted file mode 100644 index 85c3e1b7..00000000 --- a/src/test/helm/deployment_routing_zufi_test.yaml +++ /dev/null @@ -1,89 +0,0 @@ -# -# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -suite: test deployment zufi routing -release: - name: intelliform-adapter - namespace: sh-helm-test -templates: - - deployment.yaml -set: - image.tag: latest - ozgcloud.environment: test - imagePullSecret: image-pull-secret -tests: - - it: should set zufi routing values when zufi is enabled - set: - routing: - routingStrategy: "ZUFI" - zufiManager: - address: "127.0.0.1" - negotiationType: "TLS" - asserts: - - contains: - path: spec.template.spec.containers[0].env - content: - name: grpc_client_zufi-manager_address - value: "127.0.0.1" - - contains: - path: spec.template.spec.containers[0].env - content: - name: grpc_client_zufi-manager_negotiationType - value: "TLS" - - - it: should not set zufi routing values when zufi is disabled - asserts: - - notContains: - path: spec.template.spec.containers[0].env - content: - name: grpc_client_zufi-manager_address - any: true - - notContains: - path: spec.template.spec.containers[0].env - content: - name: grpc_client_zufi-manager_negotiationType - any: true - - - it: should throw error if zufi manager address is not set - set: - routing: - routingStrategy: "ZUFI" - zufiManager: - negotiationType: "PLAINTEXT" - asserts: - - failedTemplate: - errorMessage: "routing.zufiManager.address must be set when routingStrategy=ZUFI" - - - it: should set default value for zufi negotiationType - set: - routing: - routingStrategy: "ZUFI" - zufiManager: - address: "127.0.0.1" - asserts: - - contains: - path: spec.template.spec.containers[0].env - content: - name: grpc_client_zufi-manager_negotiationType - value: "PLAINTEXT" \ No newline at end of file diff --git a/src/test/helm/deployment_service_account_test.yaml b/src/test/helm/deployment_service_account_test.yaml deleted file mode 100644 index 0a5df07e..00000000 --- a/src/test/helm/deployment_service_account_test.yaml +++ /dev/null @@ -1,84 +0,0 @@ -# -# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -suite: deployment service account -release: - name: eingang-manager - namespace: sh-helm-test -templates: - - templates/deployment.yaml - -set: - ozgcloud.environment: test - imagePullSecret: image-pull-secret -tests: - - it: should use afm-adapter service account name - set: - image.name: intelliform-adapter - serviceAccount: - create: true - asserts: - - equal: - path: spec.template.spec.serviceAccountName - value: afm-adapter-service-account - - it: should use fs-adapter service account name - set: - image.name: formsolutions-adapter - serviceAccount: - create: true - asserts: - - equal: - path: spec.template.spec.serviceAccountName - value: fs-adapter-service-account - - it: should use formcycle-adapter service account name - set: - image.name: formcycle-adapter - serviceAccount: - create: true - asserts: - - equal: - path: spec.template.spec.serviceAccountName - value: formcycle-adapter-service-account - - it: should use enterprise-adapter service account name - set: - image.name: enterprise-adapter - serviceAccount: - create: true - asserts: - - equal: - path: spec.template.spec.serviceAccountName - value: enterprise-adapter-service-account - - it: should use service account with name - set: - serviceAccount: - create: true - name: helm-service-account - asserts: - - equal: - path: spec.template.spec.serviceAccountName - value: helm-service-account - - it: should use default service account - asserts: - - isNull: - path: spec.template.spec.serviceAccountName \ No newline at end of file diff --git a/src/test/helm/deployment_springProfile_env_test.yaml b/src/test/helm/deployment_springProfile_env_test.yaml deleted file mode 100644 index 001fbf3d..00000000 --- a/src/test/helm/deployment_springProfile_env_test.yaml +++ /dev/null @@ -1,50 +0,0 @@ -# -# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -suite: test spring profiles -release: - name: if-adapter -templates: - - templates/deployment.yaml -set: - imagePullSecret: image-pull-secret -tests: - - it: should override spring profiles - set: - env.overrideSpringProfiles: oc,stage,ea - asserts: - - contains: - path: spec.template.spec.containers[0].env - content: - name: spring_profiles_active - value: oc,stage,ea - - it: should generate spring profiles - set: - ozgcloud.environment: test - asserts: - - contains: - path: spec.template.spec.containers[0].env - content: - name: spring_profiles_active - value: oc, test \ No newline at end of file diff --git a/src/test/helm/deyploment_general_value_and_default_spec_test.yaml b/src/test/helm/deyploment_general_value_and_default_spec_test.yaml deleted file mode 100644 index 0ab50fa2..00000000 --- a/src/test/helm/deyploment_general_value_and_default_spec_test.yaml +++ /dev/null @@ -1,73 +0,0 @@ -# -# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -suite: test deployment general values -release: - name: eingang-manager - namespace: sh-helm-test -templates: - - templates/deployment.yaml -set: - ozgcloud.environment: test - imagePullSecret: image-pull-secret -tests: - - it: should have correct apiVersion - asserts: - - isKind: - of: Deployment - - isAPIVersion: - of: "apps/v1" - - - it: should have correct deployment metadata - asserts: - - equal: - path: metadata.name - value: eingang-manager - - equal: - path: metadata.namespace - value: sh-helm-test - - - - it: should have correct deyployment general spec values - asserts: - - equal: - path: spec.progressDeadlineSeconds - value: 600 - - equal: - path: spec.replicas - value: null - - equal: - path: spec.revisionHistoryLimit - value: 10 - - it: should have correct deployment spec strategy values - asserts: - - equal: - path: spec.strategy - value: - rollingUpdate: - maxSurge: 1 - maxUnavailable: 0 - type: RollingUpdate - - diff --git a/src/test/helm/ingress_create_or_not_test.yaml b/src/test/helm/ingress_create_or_not_test.yaml deleted file mode 100644 index fa92ab46..00000000 --- a/src/test/helm/ingress_create_or_not_test.yaml +++ /dev/null @@ -1,49 +0,0 @@ -# -# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -suite: test ingress creation dependent from values -templates: - - templates/ingress.yaml - -set: - ozgcloud: - bezeichner: helm - -tests: - - it: create ingress by config - set: - ingress.enabled: true - asserts: - - isKind: - of: Ingress - - it: not create ingress by config - set: - ingress.enabled: false - asserts: - - hasDocuments: - count: 0 - - it: ingress should be created by default - asserts: - - isKind: - of: Ingress diff --git a/src/test/helm/ingress_nginx_test.yaml b/src/test/helm/ingress_nginx_test.yaml deleted file mode 100644 index f9683004..00000000 --- a/src/test/helm/ingress_nginx_test.yaml +++ /dev/null @@ -1,68 +0,0 @@ -# -# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -suite: test ingress options -templates: - - templates/ingress.yaml - -set: - ozgcloud: - bezeichner: helm - -tests: - - it: should create afm ingress tls - release: - name: afm-adapter - asserts: - - equal: - path: spec.tls[0].secretName - value: helm-afm-adapter-tls - - it: should create afm ingress tls - release: - name: fs-adapter - set: - image.name: formsolutions-adapter - asserts: - - equal: - path: spec.tls[0].secretName - value: helm-fs-adapter-tls - - - it: should not set secretName - set: - ingress.skipTlsSecret: true - asserts: - - isNull: - path: spec.tls[0].secretName - - - it: should not set ingressClassName - asserts: - - isNull: - path: spec.ingressClassName - - it: should set ingressClassName - set: - ingress.className: nginx - asserts: - - equal: - path: spec.ingressClassName - value: nginx \ No newline at end of file diff --git a/src/test/helm/ingress_test.yaml b/src/test/helm/ingress_test.yaml deleted file mode 100644 index ee0b43da..00000000 --- a/src/test/helm/ingress_test.yaml +++ /dev/null @@ -1,147 +0,0 @@ -# -# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -suite: test ingress creation -release: - name: intelliform-adapter - namespace: sh-helm-test -templates: - - templates/ingress.yaml -set: - ozgcloud: - bezeichner: helm -tests: - - it: should match basic data - asserts: - - containsDocument: - kind: Ingress - apiVersion: networking.k8s.io/v1 - - equal: - path: metadata.name - value: intelliform-adapter - - equal: - path: metadata.namespace - value: sh-helm-test - - it: should match service port number - asserts: - - equal: - path: spec.rules[0].http.paths[0].backend.service.port.number - value: 8080 - - it: should match service name - asserts: - - equal: - path: spec.rules[0].http.paths[0].backend.service.name - value: intelliform-adapter - - it: should match service path - asserts: - - equal: - path: spec.rules[0].http.paths[0].path - value: '' - - it: should match service pathType - asserts: - - equal: - path: spec.rules[0].http.paths[0].pathType - value: ImplementationSpecific - - it: should create afm host - asserts: - - equal: - path: spec.rules[0].host - value: helm-afm.test.sh.ozg-cloud.de - - equal: - path: spec.tls[0].hosts[0] - value: helm-afm.test.sh.ozg-cloud.de - - - - it: should create fs host - set: - image.name: formsolutions-adapter - asserts: - - equal: - path: spec.rules[0].host - value: helm-fs.test.sh.ozg-cloud.de - - equal: - path: spec.tls[0].hosts[0] - value: helm-fs.test.sh.ozg-cloud.de - - - it: should create formcycle host - set: - image.name: formcycle-adapter - asserts: - - equal: - path: spec.rules[0].host - value: helm-formcycle.test.sh.ozg-cloud.de - - equal: - path: spec.tls[0].hosts[0] - value: helm-formcycle.test.sh.ozg-cloud.de - - - - it: should create custom adapter host - set: - ingress.adapterBezeichner: test - asserts: - - equal: - path: spec.rules[0].host - value: helm-test.test.sh.ozg-cloud.de - - equal: - path: spec.tls[0].hosts[0] - value: helm-test.test.sh.ozg-cloud.de - - - it: should use letsencrypt-prod cluster-issuer as default - asserts: - - equal: - path: metadata.annotations["cert-manager.io/cluster-issuer"] - value: letsencrypt-prod - - - it: should use letsencrypt-staging cluster-issuer if use_staging_cert is true - set: - ingress.use_staging_cert: true - asserts: - - equal: - path: metadata.annotations["cert-manager.io/cluster-issuer"] - value: letsencrypt-staging - - - it: should use letsencrypt-prod cluster-issuer if use_staging_cert is false - set: - ingress.use_staging_cert: false - asserts: - - equal: - path: metadata.annotations["cert-manager.io/cluster-issuer"] - value: letsencrypt-prod - - - it: should disable default cert-manager - set: - ingress.disableDefaultCertManager: true - asserts: - - notExists: - path: metadata.annotations["cert-manager.io/cluster-issuer"] - - - it: should set ingress annotation proxy body size to 42m - set: - ingress: - annotations: - nginx.ingress.kubernetes.io/proxy-body-size: 42m - asserts: - - equal: - path: metadata.annotations["nginx.ingress.kubernetes.io/proxy-body-size"] - value: 42m \ No newline at end of file diff --git a/src/test/helm/network_policy_test.yaml b/src/test/helm/network_policy_test.yaml deleted file mode 100644 index 30fc46d1..00000000 --- a/src/test/helm/network_policy_test.yaml +++ /dev/null @@ -1,225 +0,0 @@ -# -# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -suite: network policy test -release: - name: afm-adapter - namespace: by-helm-test -templates: - - templates/network_policy.yaml -tests: - - it: should match apiVersion - set: - networkPolicy: - dnsServerNamespace: test-dns-namespace - asserts: - - isAPIVersion: - of: networking.k8s.io/v1 - - it: should match kind - set: - networkPolicy: - dnsServerNamespace: test-dns-namespace - asserts: - - isKind: - of: NetworkPolicy - - it: validate metadata - set: - networkPolicy: - dnsServerNamespace: test-dns-namespace - asserts: - - equal: - path: metadata - value: - name: network-policy-afm-adapter - namespace: by-helm-test - - it: validate spec - set: - networkPolicy: - dnsServerNamespace: test-dns-namespace - asserts: - - equal: - path: spec - value: - podSelector: - matchLabels: - ozg-component: eingangsadapter - policyTypes: - - Ingress - - Egress - ingress: - - ports: - - port: 8080 - - from: - - namespaceSelector: - matchLabels: - name: openshift-user-workload-monitoring - ports: - - protocol: TCP - port: 8081 - egress: - - to: - - podSelector: - matchLabels: - component: vorgang-manager - ports: - - port: 9090 - protocol: TCP - - to: - - namespaceSelector: - matchLabels: - kubernetes.io/metadata.name: test-dns-namespace - ports: - - port: 53 - protocol: UDP - - port: 53 - protocol: TCP - - port: 5353 - protocol: UDP - - port: 5353 - protocol: TCP - - - it: should set monitoring namespace - set: - networkPolicy: - dnsServerNamespace: test-dns-namespace - monitoringNamespace: test-monitoring - asserts: - - contains: - path: spec.ingress - content: - from: - - namespaceSelector: - matchLabels: - name: test-monitoring - ports: - - protocol: TCP - port: 8081 - - - it: test network policy disabled - set: - networkPolicy: - disabled: true - dnsServerNamespace: test-dns-namespace - asserts: - - hasDocuments: - count: 0 - - - it: test network policy unset should be disabled - set: - networkPolicy: - disabled: false - dnsServerNamespace: test-dns-namespace - asserts: - - hasDocuments: - count: 1 - - it: test network policy dnsServerNamespace must be set message - set: - networkPolicy: - disabled: false - asserts: - - failedTemplate: - errorMessage: networkPolicy.dnsServerNamespace must be set - - - it: test network policy should be enabled by default - set: - networkPolicy: - dnsServerNamespace: test-dns-server-namespace - asserts: - - hasDocuments: - count: 1 - - - - it: should add zufi rules when zufi-routing is enabled - set: - networkPolicy: - dnsServerNamespace: test-dns-server-namespace - routing: - routingStrategy: ZUFI - zufiManager: - namespace: zufi-namespace - asserts: - - contains: - path: spec.egress - content: - to: - - namespaceSelector: - matchLabels: - kubernetes.io/metadata.name: zufi-namespace - podSelector: - matchLabels: - component: zufi-server - ports: - - port: 9090 - protocol: TCP - - contains: - path: spec.egress - content: - to: - - namespaceSelector: {} - podSelector: - matchLabels: - component: vorgang-manager - ports: - - port: 9090 - protocol: TCP - - - it: should throw error when zufi is enabled but zufi namespace not set - set: - networkPolicy: - dnsServerNamespace: test-dns-server-namespace - routing: - routingStrategy: ZUFI - asserts: - - failedTemplate: - errorMessage: routing.zufiManager.namespace must be set if routingStrategy=ZUFI - - - it: should not add zufi rule when zufi-routing is disabled - set: - networkPolicy: - dnsServerNamespace: test-dns-server-namespace - routing: - zufiManager: - namespace: zufi-namespace - asserts: - - notContains: - path: spec.egress - content: - to: - - namespaceSelector: - matchLabels: - kubernetes.io/metadata.name: zufi-namespace - podSelector: - matchLabels: - component: zufi-server - - notContains: - path: spec.egress - content: - to: - - namespaceSelector: {} - podSelector: - matchLabels: - component: vorgang-manager - ports: - - port: 9090 - protocol: TCP \ No newline at end of file diff --git a/src/test/helm/realm_name_length_test.yaml b/src/test/helm/realm_name_length_test.yaml deleted file mode 100644 index 5cb46db2..00000000 --- a/src/test/helm/realm_name_length_test.yaml +++ /dev/null @@ -1,41 +0,0 @@ -# -# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -suite: test ozgcloud bezeichner length -release: - name: eingang-manager - namespace: sh-helm-test -templates: - - templates/ingress.yaml - -tests: - - it: should fail on bezeichner length longer than 46 characters - set: - ozgcloud: - bezeichner: test1234567890123123456789012345678901234567890123456789012345678901234567890123456789012345678904567890 - environment: test - bundesland: by - asserts: - - failedTemplate: - errorMessage: Bezeichner test1234567890123123456789012345678901234567890123456789012345678901234567890123456789012345678904567890 ist zu lang (max. 46 Zeichen) \ No newline at end of file diff --git a/src/test/helm/service_account_test.yaml b/src/test/helm/service_account_test.yaml deleted file mode 100644 index 81b86cc0..00000000 --- a/src/test/helm/service_account_test.yaml +++ /dev/null @@ -1,108 +0,0 @@ -# -# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -suite: test service account -release: - name: eingang-manager - namespace: sh-helm-test -templates: - - templates/service_account.yaml -tests: - - it: should create default afm adapter service account name - set: - image.name: intelliform-adapter - serviceAccount: - create: true - asserts: - - isKind: - of: ServiceAccount - - isAPIVersion: - of: v1 - - equal: - path: metadata.name - value: afm-adapter-service-account - - equal: - path: metadata.namespace - value: sh-helm-test - - - it: should create default fs adapter service account name - set: - image.name: formsolutions-adapter - serviceAccount: - create: true - asserts: - - isKind: - of: ServiceAccount - - equal: - path: metadata.name - value: fs-adapter-service-account - - equal: - path: metadata.namespace - value: sh-helm-test - - it: should create default formcycle adapter service account name - set: - image.name: formcycle-adapter - serviceAccount: - create: true - asserts: - - isKind: - of: ServiceAccount - - equal: - path: metadata.name - value: formcycle-adapter-service-account - - equal: - path: metadata.namespace - value: sh-helm-test - - it: should create default enterprise adapter service account name - set: - image.name: enterprise-adapter - serviceAccount: - create: true - asserts: - - isKind: - of: ServiceAccount - - equal: - path: metadata.name - value: enterprise-adapter-service-account - - equal: - path: metadata.namespace - value: sh-helm-test - - it: should create service account with name - set: - serviceAccount: - create: true - name: helm-service-account - asserts: - - isKind: - of: ServiceAccount - - equal: - path: metadata.name - value: helm-service-account - - equal: - path: metadata.namespace - value: sh-helm-test - - it: should not create service account - asserts: - - hasDocuments: - count: 0 \ No newline at end of file diff --git a/src/test/helm/service_monitor_test.yaml b/src/test/helm/service_monitor_test.yaml deleted file mode 100644 index c85a7a6b..00000000 --- a/src/test/helm/service_monitor_test.yaml +++ /dev/null @@ -1,96 +0,0 @@ -# -# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -suite: test service monitor -release: - name: afm-adapter - namespace: sh-helm-test -templates: - - templates/service_monitor.yaml -tests: - - it: should have basic info and the label component with value afm-adapter-service-monitor attached - asserts: - - isKind: - of: ServiceMonitor - - isAPIVersion: - of: monitoring.coreos.com/v1 - - equal: - path: metadata.name - value: afm-adapter - - equal: - path: metadata.namespace - value: sh-helm-test - - equal: - path: metadata.labels["component"] - value: afm-adapter-service-monitor - - - it: should contain default lables and component lables - asserts: - - equal: - path: metadata.labels - value: - app.kubernetes.io/instance: afm-adapter - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/name: afm-adapter - app.kubernetes.io/namespace: sh-helm-test - app.kubernetes.io/part-of: ozgcloud - app.kubernetes.io/version: 0.0.0-MANAGED-BY-JENKINS - component: afm-adapter-service-monitor - helm.sh/chart: Intelliform-Adapter-0.0.0-MANAGED-BY-JENKINS - ozg-component: eingangsadapter - - - it: should have the metrics endpoint configured by default - set: - env.springProfiles: oc,stage - asserts: - - contains: - path: spec.endpoints - content: - port: metrics - path: /actuator/prometheus - - it: should be able to enable the endpoint - asserts: - - contains: - path: spec.endpoints - content: - port: metrics - path: /actuator/prometheus - - it: namespace selector should contain the namespace - asserts: - - contains: - path: spec.namespaceSelector.matchNames - content: sh-helm-test - - it: selector should contain the component label with the value afm-adapter-service - asserts: - - equal: - path: spec.selector.matchLabels["component"] - value: afm-adapter-service - - it: selector should contain helm recommended labels name and namespace - asserts: - - equal: - path: spec.selector.matchLabels["app.kubernetes.io/name"] - value: afm-adapter - - equal: - path: spec.selector.matchLabels["app.kubernetes.io/namespace"] - value: sh-helm-test diff --git a/src/test/helm/service_test.yaml b/src/test/helm/service_test.yaml deleted file mode 100644 index ebc38d5c..00000000 --- a/src/test/helm/service_test.yaml +++ /dev/null @@ -1,100 +0,0 @@ -# -# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -suite: test service -release: - name: afm-adapter - namespace: sh-helm-test -templates: - - templates/service.yaml -tests: - - it: should have basics and the label component with value afm-adapter-service attached - asserts: - - isKind: - of: Service - - isAPIVersion: - of: v1 - - equal: - path: metadata.labels["component"] - value: afm-adapter-service - - equal: - path: metadata.name - value: afm-adapter - - equal: - path: metadata.namespace - value: sh-helm-test - - it: should be of type ClusterIP - asserts: - - equal: - path: spec.type - value: ClusterIP - - it: ports should contain the 8080 default http port - asserts: - - contains: - path: spec.ports - content: - name: http - port: 8080 - protocol: TCP - targetPort: 8080 - count: 1 - any: true - - it: ports should contain the metrics port - asserts: - - contains: - path: spec.ports - content: - name: metrics - port: 8081 - protocol: TCP - count: 1 - any: true - - it: selector should contain the component label with the value afm-adapter - asserts: - - equal: - path: spec.selector["component"] - value: afm-adapter - - it: selector should contain helm recommended labels name and namespace - asserts: - - equal: - path: spec.selector["app.kubernetes.io/name"] - value: afm-adapter - - equal: - path: spec.selector["app.kubernetes.io/namespace"] - value: sh-helm-test - - - it: should contain default lables and component lables - asserts: - - equal: - path: metadata.labels - value: - app.kubernetes.io/instance: afm-adapter - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/name: afm-adapter - app.kubernetes.io/namespace: sh-helm-test - app.kubernetes.io/part-of: ozgcloud - app.kubernetes.io/version: 0.0.0-MANAGED-BY-JENKINS - component: afm-adapter-service - helm.sh/chart: Intelliform-Adapter-0.0.0-MANAGED-BY-JENKINS - ozg-component: eingangsadapter \ No newline at end of file diff --git a/formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsAttachmentsMapperTest.java b/src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsAttachmentsMapperTest.java similarity index 100% rename from formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsAttachmentsMapperTest.java rename to src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsAttachmentsMapperTest.java diff --git a/formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsEingangTestFactory.java b/src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsEingangTestFactory.java similarity index 100% rename from formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsEingangTestFactory.java rename to src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsEingangTestFactory.java diff --git a/formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsFileMapperUtilsTest.java b/src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsFileMapperUtilsTest.java similarity index 100% rename from formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsFileMapperUtilsTest.java rename to src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsFileMapperUtilsTest.java diff --git a/formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsFilesTestFactory.java b/src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsFilesTestFactory.java similarity index 51% rename from formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsFilesTestFactory.java rename to src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsFilesTestFactory.java index 2fc6b7e1..17a93b2d 100644 --- a/formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsFilesTestFactory.java +++ b/src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsFilesTestFactory.java @@ -34,7 +34,7 @@ public class FormSolutionsFilesTestFactory { public static final String ZIP_ENCODED = "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"; public static final byte[] ZIP_DECODED = Base64.getDecoder().decode(ZIP_ENCODED.getBytes()); - public static final String PDF_ENCODED = "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ZW5kb2JqCjI5IDAgb2JqCjw8L0NvbG9yU3BhY2UvRGV2aWNlR3JheS9TdWJ0eXBlL0ltYWdlL0hlaWdodCAxOS9GaWx0ZXIvRmxhdGVEZWNvZGUvVHlwZS9YT2JqZWN0L1dpZHRoIDE5L0xlbmd0aCAxMzIvQml0c1BlckNvbXBvbmVudCA4Pj5zdHJlYW0KeJxl0AENwCAMBMCXUAmTgAQkTMIkTEIdIGESkDAJSJgEJHQtDEKzTyDhUlqCyD83+9wijCVEYE+HSPQUtA97KiJ1c5S06HS9oo3HSvTYtU6Uc1DKWrSjk64asKtkfGSHulXdaFCbZImYhKtJwkLNCjmycQGeqMwX8/ivtP7XPy90XasiCmVuZHN0cmVhbQplbmRvYmoKMzAgMCBvYmoKPDwvQ29sb3JTcGFjZS9EZXZpY2VSR0IvU3VidHlwZS9JbWFnZS9IZWlnaHQgMTkvRmlsdGVyL0ZsYXRlRGVjb2RlL1R5cGUvWE9iamVjdC9XaWR0aCAxOS9TTWFzayAyOSAwIFIvTGVuZ3RoIDE4L0JpdHNQZXJDb21wb25lbnQgOD4+c3RyZWFtCnicY2AYBaNgFIwCkgEABDsAAQplbmRzdHJlYW0KZW5kb2JqCjMxIDAgb2JqCjw8L0NvbG9yU3BhY2UvRGV2aWNlR3JheS9TdWJ0eXBlL0ltYWdlL0hlaWdodCAxOS9GaWx0ZXIvRmxhdGVEZWNvZGUvVHlwZS9YT2JqZWN0L1dpZHRoIDE5L0xlbmd0aCAzMS9CaXRzUGVyQ29tcG9uZW50IDg+PnN0cmVhbQp4nPv/HxPsb0AF+///b2BABQ2jQgghLOGFCQANA2i1CmVuZHN0cmVhbQplbmRvYmoKMzIgMCBvYmoKPDwvQ29sb3JTcGFjZS9EZXZpY2VSR0IvU3VidHlwZS9JbWFnZS9IZWlnaHQgMTkvRmlsdGVyL0ZsYXRlRGVjb2RlL1R5cGUvWE9iamVjdC9XaWR0aCAxOS9TTWFzayAzMSAwIFIvTGVuZ3RoIDE4L0JpdHNQZXJDb21wb25lbnQgOD4+c3RyZWFtCnicY2AYBaNgFIwCkgEABDsAAQplbmRzdHJlYW0KZW5kb2JqCjMzIDAgb2JqCjw8L0NvbG9yU3BhY2UvRGV2aWNlR3JheS9TdWJ0eXBlL0ltYWdlL0hlaWdodCAxOS9GaWx0ZXIvRmxhdGVEZWNvZGUvVHlwZS9YT2JqZWN0L1dpZHRoIDE5L0xlbmd0aCAzMS9CaXRzUGVyQ29tcG9uZW50IDg+PnN0cmVhbQp4nPv/HxPsb0AF+///b2BABQ2jQgghLOGFCQANA2i1CmVuZHN0cmVhbQplbmRvYmoKMzQgMCBvYmoKPDwvQ29sb3JTcGFjZS9EZXZpY2VSR0IvU3VidHlwZS9JbWFnZS9IZWlnaHQgMTkvRmlsdGVyL0ZsYXRlRGVjb2RlL1R5cGUvWE9iamVjdC9XaWR0aCAxOS9TTWFzayAzMyAwIFIvTGVuZ3RoIDE4L0JpdHNQZXJDb21wb25lbnQgOD4+c3RyZWFtCnicY2AYBaNgFIwCkgEABDsAAQplbmRzdHJlYW0KZW5kb2JqCjM1IDAgb2JqCjw8L0NvbG9yU3BhY2UvRGV2aWNlR3JheS9TdWJ0eXBlL0ltYWdlL0hlaWdodCAxOS9GaWx0ZXIvRmxhdGVEZWNvZGUvVHlwZS9YT2JqZWN0L1dpZHRoIDE5L0xlbmd0aCAxMzIvQml0c1BlckNvbXBvbmVudCA4Pj5zdHJlYW0KeJxl0AENwCAMBMCXUAmTgAQkTMIkTEIdIGESkDAJSJgEJHQtDEKzTyDhUlqCyD83+9wijCVEYE+HSPQUtA97KiJ1c5S06HS9oo3HSvTYtU6Uc1DKWrSjk64asKtkfGSHulXdaFCbZImYhKtJwkLNCjmycQGeqMwX8/ivtP7XPy90XasiCmVuZHN0cmVhbQplbmRvYmoKMzYgMCBvYmoKPDwvQ29sb3JTcGFjZS9EZXZpY2VSR0IvU3VidHlwZS9JbWFnZS9IZWlnaHQgMTkvRmlsdGVyL0ZsYXRlRGVjb2RlL1R5cGUvWE9iamVjdC9XaWR0aCAxOS9TTWFzayAzNSAwIFIvTGVuZ3RoIDE4L0JpdHNQZXJDb21wb25lbnQgOD4+c3RyZWFtCnicY2AYBaNgFIwCkgEABDsAAQplbmRzdHJlYW0KZW5kb2JqCjM3IDAgb2JqCjw8L1N1YnR5cGUvRm9ybS9GaWx0ZXIvRmxhdGVEZWNvZGUvVHlwZS9YT2JqZWN0L01hdHJpeFsxIDAgMCAxIDAgMF0vRm9ybVR5cGUgMS9SZXNvdXJjZXM8PC9Gb250PDwvSGVsdiAx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bHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAxMSAwIFI+Pi9GZiAwPj4KZW5kb2JqCjQ5IDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoZmlsZVVybCkvVHlwZS9Bbm5vdC9WKGh0dHBzJTNBJTJGJTJGa3VuZGVudGVzdC5mb3JtLXNvbHV0aW9ucy5kZSUyRm1ldGFmb3JtJTJGRm9ybS1Tb2x1dGlvbnMlMkZzaWQlMkZhc3Npc3RhbnQlMkY2MWIyMDhlODY2ZGExMjM2NDRjOTdlNTYlM0ZhbmxpZWdlbklkJTNEMTIzNCUyNm9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5JRCUzRDkwMzAyMjklMjZrb21tdW5hbHZlcndhbHR1bmdJZCUzRDEwMDAwMDAwMCUyNmNvbnNlbnRDb21wbGV0ZSUzRHRydWUlMjZjYWNoZUlEJTNENGZiNmI2ZTAtMGYxYy00OTcwLWI5ZWQtZGJmMjQyZDMzM2Y5JTI2Y2l0aXplblBvcnRhbExvZ2luU3VjY2VzcyUzRHRydWUpL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAxMiAwIFI+Pi9GZiAwPj4KZW5kb2JqCjUwIDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoQVNfVm9ybmFtZSkvVHlwZS9Bbm5vdC9WKFN1c2FubmUpL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAxNSAwIFI+Pi9GZiAwPj4KZW5kb2JqCjUxIDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoQVNfTmFtZSkvVHlwZS9Bbm5vdC9WKEZpc2NoZXIpL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAxNiAwIFI+Pi9GZiAwPj4KZW5kb2JqCjUyIDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoQVNfUnVmbmFtZSkvVHlwZS9Bbm5vdC9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gMTcgMCBSPj4vRmYgMD4+CmVuZG9iago1MyAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKEFTX09yZGVuc25hbWVfS3VlbnN0bGVybmFtZSkvVHlwZS9Bbm5vdC9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gMTggMCBSPj4vRmYgMD4+CmVuZG9iago1NCAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKHN0YWF0KS9UeXBlL0Fubm90L1YoREUpL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAxOSAwIFI+Pi9GZiAwPj4KZW5kb2JqCjU1IDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoQVNfUExaKS9UeXBlL0Fubm90L1YoMTIzNDUpL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAyMCAwIFI+Pi9GZiAwPj4KZW5kb2JqCjU2IDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoQVNfT3J0KS9UeXBlL0Fubm90L1YoS2llbCkvRiA2L0RBKC9IZWx2IDAgVGYgMCBnICkvRlQvVHgvRFI8PC9Gb250PDwvSGVsdiAxMCAwIFI+Pj4+L1JlY3RbMCAwIDAgMF0vQVA8PC9OIDIxIDAgUj4+L0ZmIDA+PgplbmRvYmoKNTcgMCBvYmoKPDwvQlM8PC9TL1MvVyAxPj4vU3VidHlwZS9XaWRnZXQvVChCdW5kZXNsYW5kKS9UeXBlL0Fubm90L0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAyMiAwIFI+Pi9GZiAwPj4KZW5kb2JqCjU4IDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoQVNfU3RyYXNzZSkvVHlwZS9Bbm5vdC9WKEhhdXB0c3RyYd9lKS9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gMjMgMCBSPj4vRmYgMD4+CmVuZG9iago1OSAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKEFTX0hhdXNudW1tZXIpL1R5cGUvQW5ub3QvRiA2L0RBKC9IZWx2IDAgVGYgMCBnICkvRlQvVHgvRFI8PC9Gb250PDwvSGVsdiAxMCAwIFI+Pj4+L1JlY3RbMCAwIDAgMF0vQVA8PC9OIDI0IDAgUj4+L0ZmIDA+PgplbmRvYmoKNjAgMCBvYmoKPDwvQlM8PC9TL1MvVyAxPj4vU3VidHlwZS9XaWRnZXQvVChBU19UZWxlZm9uKS9UeXBlL0Fubm90L0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAyNSAwIFI+Pi9GZiAwPj4KZW5kb2JqCjYxIDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoQVNfRS1NYWlsKS9UeXBlL0Fubm90L1Yobm9yZXBseUBvemctc2guZGU=KS9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gMjYgMCBSPj4vRmYgMD4+CmVuZG9iago2MiAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKEFTX0ZheCkvVHlwZS9Bbm5vdC9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gMjcgMCBSPj4vRmYgMD4+CmVuZG9iago2MyAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKG9mc1hYMV9mcm9tX3NtYWlsMykvVHlwZS9Bbm5vdC9WKHN1c2FubmUuZmlzY2hlckBkYXRhcG9ydC5kZSkvRiA2L0RBKC9IZWx2IDAgVGYgMCBnICkvRlQvVHgvRFI8PC9Gb250PDwvSGVsdiAxMCAwIFI+Pj4+L1JlY3RbMCAwIDAgMF0vQVA8PC9OIDI4IDAgUj4+L0ZmIDA+PgplbmRvYmoKNjQgMCBvYmoKPDwvQlM8PC9TL1MvVyAxPj4vU3VidHlwZS9XaWRnZXQvVChIdW5kX05hbWUpL1R5cGUvQW5ub3QvVihIYXNzbykvRiA2L0RBKC9IZWx2IDAgVGYgMCBnICkvRlQvVHgvRFI8PC9Gb250PDwvSGVsdiAxMCAwIFI+Pj4+L1JlY3RbMCAwIDAgMF0vQVA8PC9OIDM3IDAgUj4+L0ZmIDA+PgplbmRvYmoKNjUgMCBvYmoKPDwvQlM8PC9TL1MvVyAxPj4vU3VidHlwZS9XaWRnZXQvVChIdW5kX1Jhc3NlKS9UeXBlL0Fubm90L1YoU2No5GZlcmh1bmQpL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAzOCAwIFI+Pi9GZiAwPj4KZW5kb2JqCjY2IDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoSHVuZF9HZXNjaGxlY2h0KS9UeXBlL0Fubm90L1Yod2VpYmxpY2gpL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAzOSAwIFI+Pi9GZiAwPj4KZW5kb2JqCjY3IDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoS2FzdHJhdGlvbikvVHlwZS9Bbm5vdC9WKG5laW4pL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiA0MCAwIFI+Pi9GZiAwPj4KZW5kb2JqCjY4IDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoSHVuZF9HZWJ1cnRkYXR1bSkvVHlwZS9Bbm5vdC9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gNDEgMCBSPj4vRmYgMD4+CmVuZG9iago2OSAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKEh1bmRfQWx0ZXIpL1R5cGUvQW5ub3QvVig1KS9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gNDIgMCBSPj4vRmYgMD4+CmVuZG9iago3MCAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKEh1bmRfQ2hpcE5yKS9UeXBlL0Fubm90L1YoMTIzNDU2Nzg5MTIzNDU2KS9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gNDMgMCBSPj4vRmYgMD4+CmVuZG9iago3MSAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKEh1bmRfRmVsbGZhcmJlKS9U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ZWxkc1s0NyAwIFIgNDggMCBSIDQ5IDAgUiA1MCAwIFIgNTEgMCBSIDUyIDAgUiA1MyAwIFIgNTQgMCBSIDU1IDAgUiA1NiAwIFIgNTcgMCBSIDU4IDAgUiA1OSAwIFIgNjAgMCBSIDYxIDAgUiA2MiAwIFIgNjMgMCBSIDY0IDAgUiA2NSAwIFIgNjYgMCBSIDY3IDAgUiA2OCAwIFIgNjkgMCBSIDcwIDAgUiA3MSAwIFIgNzIgMCBSIDczIDAgUl0vREEoL0hlbHYgMCBUZiAwIGcgKS9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4+PgplbmRvYmoKODMgMCBvYmoKPDwvVHlwZS9DYXRhbG9nL0Fjcm9Gb3JtIDgyIDAgUi9QYWdlcyA3NSAwIFI+PgplbmRvYmoKeHJlZgowIDg0CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAxNSAwMDAwMCBuIAowMDAwMDAyODA5IDAwMDAwIG4gCjAwMDAwMDQyMDYgMDAwMDAgbiAKMDAwMDAwNTYwNCAwMDAwMCBuIAowMDAwMDA1OTA5IDAwMDAwIG4gCjAwMDAwMDU5ODUgMDAwMDAgbiAKMDAwMDAwNjEyNSAwMDAwMCBuIAowMDAwMDA3NDA2IDAwMDAwIG4gCjAwMDAwMDYzNDEgMDAwMDAgbiAKMDAwMDAwNjU5NSAwMDAwMCBuIAowMDAwMDA2Njg0IDAwMDAwIG4gCjAwMDAwMDY5MzkgMDAwMDAgbiAKMDAwMDAzODI3NyAwMDAwMCBuIAowMDAwMDM4ODA0IDAwMDAwIG4gCjAwMDAwMDc1MzYgMDAwMDAgbiAKMDAwMDAwNzc5NCAwMDAwMCBuIAowMDAwMDA4MDUyIDAwMDAwIG4gCjAwMDAwMDgyNDcgMDAwMDAgbiAKMDAwMDAwODQ0MiAwMDAwMCBuIAowMDAwMDA4Njk1IDAwMDAwIG4gCjAwMDAwMDg5NTEgMDAwMDAgbiAKMDAwMDAwOTIwNiAwMDAwMCBuIAowMDAwMDA5NDAxIDAwMDAwIG4gCjAwMDAwMDk2NjQgMDAwMDAgbiAKMDAwMDAwOTg1OSAwMDAwMCBuIAowMDAwMDEwMDU0IDAwMDAwIG4gCjAwMDAwMTAzMzMgMDAwMDAgbiAKMDAwMDAxMDUyOCAwMDAwMCBuIAowMDAwMDEwODA3IDAwMDAwIG4gCjAwMDAwMTEwOTQgMDAwMDAgbiAKMDAwMDAxMTI3OCAwMDAwMCBuIAowMDAwMDExNDYzIDAwMDAwIG4gCjAwMDAwMTE2NDcgMDAwMDAgbiAKMDAwMDAxMTgzMiAwMDAwMCBuIAowMDAwMDEyMDE2IDAwMDAwIG4gCjAwMDAwMTIzMDMgMDAwMDAgbiAKMDAwMDAxMjQ4NyAwMDAwMCBuIAowMDAwMDEyNzQzIDAwMDAwIG4gCjAwMDAwMTMwMDYgMDAwMDAgbiAKMDAwMDAxMzI2NSAwMDAwMCBuIAowMDAwMDEzNTIwIDAwMDAwIG4gCjAwMDAwMTM3MTUgMDAwMDAgbiAKMDAwMDAxMzk2NyAwMDAwMCBuIAowMDAwMDE0MjI5IDAwMDAwIG4gCjAwMDAwMTQ0ODQgMDAwMDAgbiAKMDAwMDAxNDczNyAwMDAwMCBuIAowMDAwMDE0OTkwIDAwMDAwIG4gCjAwMDAwMTUxNjYgMDAwMDAgbiAKMDAwMDAxNTM1OCAwMDAwMCBuIAowMDAwMDE1ODQ0IDAwMDAwIG4gCjAwMDAwMTYwMjQgMDAwMDAgbiAKMDAwMDAxNjIwMSAwMDAwMCBuIAowMDAwMDE2MzcwIDAwMDAwIG4gCjAwMDAwMTY1NTYgMDAwMDAgbiAKMDAwMDAxNjcyNiAwMDAwMCBuIAowMDAwMDE2OTAwIDAwMDAwIG4gCjAwMDAwMTcwNzMgMDAwMDAgbiAKMDAwMDAxNzI0MiAwMDAwMCBuIAowMDAwMDE3NDI2IDAwMDAwIG4gCjAwMDAwMTc1OTggMDAwMDAgbiAKMDAwMDAxNzc2NyAwMDAwMCBuIAowMDAwMDE3OTY2IDAwMDAwIG4gCjAwMDAwMTgxMzEgMDAwMDAgbiAKMDAwMDAxODMzOSAwMDAwMCBuIAowMDAwMDE4NTE2IDAwMDAwIG4gCjAwMDAwMTg3MDAgMDAwMDAgbiAKMDAwMDAxODg4NiAwMDAwMCBuIAowMDAwMDE5MDYzIDAwMDAwIG4gCjAwMDAwMTkyMzggMDAwMDAgbiAKMDAwMDAxOTQxMiAwMDAwMCBuIAowMDAwMDE5NjAxIDAwMDAwIG4gCjAwMDAwMTk3ODIgMDAwMDAgbiAKMDAwMDAxOTk1OSAwMDAwMCBuIAowMDAwMDIwMTM2IDAwMDAwIG4gCjAwMDAwMjE0MTUgMDAwMDAgbiAKMDAwMDAyMTQ3NSAwMDAwMCBuIAowMDAwMDIzNjMzIDAwMDAwIG4gCjAwMDAwMjE5NTggMDAwMDAgbiAKMDAwMDAyMjA1MiAwMDAwMCBuIAowMDAwMDIzNzkwIDAwMDAwIG4gCjAwMDAwMzgwOTMgMDAwMDAgbiAKMDAwMDAzOTQ0OCAwMDAwMCBuIAowMDAwMDM5NzE0IDAwMDAwIG4gCnRyYWlsZXIKPDwvSW5mbyA0IDAgUi9JRCBbPGVlZWQ2YmEzM2YwZDY5ZjkzZWEyYzZjNWFhM2U0ZWJjPjw4ZGIwNDk0YjcxMmY5ZTE5NTJmZGMwMjI2Mjg3NzdhZj5dL1Jvb3QgODMgMCBSL1NpemUgODQ+PgolaVRleHQtNS41LjUKc3RhcnR4cmVmCjM5Nzc3CiUlRU9GCg=="; + public static final String PDF_ENCODED = "JVBERi0xLjQKJeLjz9MKMSAwIG9iago8PC9Db2xvclNwYWNlL0RldmljZUdyYXkvU3VidHlwZS9JbWFnZS9IZWlnaHQgOTAvRmlsdGVyL0ZsYXRlRGVjb2RlL1R5cGUvWE9iamVjdC9XaWR0aCAyMjgvTGVuZ3RoIDI2MzgvQml0c1BlckNvbXBvbmVudCA4Pj5zdHJlYW0KeJztm3lcFEcWx2tmYAYFh1MOEQUEB4iIgheIiiGrrFeieCDBqLvRjQdGs0pUNAJGiAQ3HhgxS1RcWW/x45mICSII6qogETWAgKKEwQG55Bhleruqerp7wAHBa/uz/fuDefW6qud9p7vreNUAwIsXL168ePHixYsXL168ePHi9X8hnSVphRkhXd51GG9UiwioEO0VRAakunURvL2QXkmt4hQCaQFiLOiptZF7fn5e3oP9xm80stejqJiYmE3rLXFBPHdVSEjIl6EOwLoGMdbItDYcgSpkdn9Lcb6KUKRKV1z4ApWIn7oDowfIut9ba8PhqMJFs7cU56voCYxU7ozs0dUo7qtk3IIIZEbram3IIcYqGGk5Yux5G4VdNhAWukYp6hQx3bQ35CSj+CiKujGAOmIxsEdbDTnJuBY/jBtecjTgIuOkehR0kr62mhILKzMhU+Qgo1M+ijnHivJ7LwsODl4+RF3NMPDArZKH96/FfaBDebjG+NhB5xQKuWqY2r8JlSOo0uQbhFpHqXGGa4zy3mtwfzOb9m9Ejq+QLVj9jGBUOBo5ucZYuLYWRRzDPG9sxhBCQ6Vu0Mk1xoYm+FeVpMf4WYw+T5H988ejZpxG1q9wZsA1RqymWSw/w6iTjMxo2NmINqMfYxrgKiORw1plMIyjUZVU3J9Kb8HCcdAeo9DhPTs9DY+BTAAs5jiRlsy03ajMnR3g0lXoaNgpqBZCAI9SmlHE+7rSfoYRzw0WA10osBMW8szaYZx+rrisOD3WluWKLPoT8G5cBIBz0dZ2YnLZliMvufS1PRhW8I0IiJxt26n/Uowlg/D92LzoBYwJyLp7+SpU5kP0m7i1zRhUf2ac38xvbwxm+RaluQOvynkA9EoLbTukCWUVUZOnRSsOAOfUpQJglLb3dTCW28rKUciVHq0YBUlEK8kHtckozM0Uw08J6qZ1JfQBT8WnrGq6dC8uZrd2q7reB37aueBZpV7eMfbhTiQeMKMTmNWIYs4wasV4rDWjYkCbjOI/9qhNo1lbjp3dCGP2WNIDM+ovGwmEM73Nwk4k+KOAfXec2WjjO5FqIUysdVC3NlkwTOj/neLO+qj+9l/aQ4/XaovOMjoDUQwOP7YlI/gBWfFz5tH67GOTtu/Vw0+CqClfv4yj4WGFd3rBQXYkZuxBbAai9JunrsZlE1+QVdaqcrcnZ5Qcotr2ub+TPo9LQ6RwVXrd418u+toSMaRDN7myE70QPSfXP4+Cfj6zJeNyZO1o2VCD0dijL/uYzUVl9vfjDUhLYg5DrYgCYEmVJ2a0rI8EwmPERmNgdqrRBnxIJJoDvTX0F4xs+Ct9HlnpV0DXMCepi74I7L5HLvWG1C/tOCKoVjMCpxIUdYFLC0bPSmjVjtPOKFxQWF971J51sGvAydKaoknQNHDo2zMric34lGQ8mwtTSLNV3iCxCaaEpGU/Uk1HNXyiwQjEOUegPUIVCEBEg/Ykmnax8gCTGlDYJ8SajIITyCyegBuYTJmA+gpvhjEAmclSjRObBt1oGgVEs67czLhQv7cl47k0OEwFNHqLzmXBPkk/dzfVbkjVMk1G/d9Qn2OQkgyM8uKEoON6xDACPDEnUNe+kmYEAyuQXbd7rt9H82MuEGUoP+DxjGY8h44/Hd/i1LYPYkFgc7SHvUfewVaMl2AaJbBxuPCn25DRgGY0zLr0QkYwT2XrS4zuBCJIZTGKcRda/wFp+zGMYLYSw6uq6tDn59BpfVfNKPgPPhrU4tTSrJ3iMynQyqYYvRRzWzCOAD8oYTdqVB2vbhZC0A8kZrx1GBUs8iMTUsSgE1rCYgT22Sja38gLZXKeYQSBjzSGjiI4wAjW0ddxD/JWDFWfU7h0krVUYhzWNFYQX2QPDEKIQyKwtM4LDK1fpye0VG4Ewl8uQ8ag56OBT3W6g57ZVuJ7IJq/wY506iY1h5rrdbFauQLIysPIX/7mTakeXAVENz0lpxBemyeCDkr6I3mRGvpRJffLKNxD5NjgcZ00vqb8Lnvu04QlZxejfIjJ3ucEcQ12GAOKoP87+pxd9j8ozjyeWRxM3uf38refPnFCFSsJrvECRjdUqWMMnn1LMmbAp/cTJXnvzXnYmJJ9Rh4PTGsINEWQblFU/Zr2uHgVcJKTjGCx8k4q7IecagvMgWAXkdlRRiCZFp+SSo+65n9PkddVFowkTevlh68toKu5Lfjn6fSM5P3RczzUMw1JwK60BBNoDUnIPPd5V9ZJZdNDIj5zRNb6uCWG+qER0j4zyEvuHBnnCaaTMwjfsfDK2M6EI3r/lds/Nbm/C4imr6B6zaFr4rcvJEcjqT9KOkzducOH/NAvhj+je7hvhxlJmVqyUsWm/Tzc+uK8qsRao6vsZm5hrKPREJh3x/2cwNIIvJJciRXt1vF/4vpqX/LOZLHsfUtTz7zcXm1XE1u8dzu5899iM8iTSTjq9p8yL+jPaI9HIhvB2u6wGjjSZ3g/zW2qXkPdO9XRsSVLlj+4V31tWDvVBj2sYJ6ojspha3bdYxd1yevAYzjUjSBNv8NFRJjaP3zzlapm1bM/zq+2o1v22Xaz4XqbufSXksQjYP4Eg/Zqmc/+sNMbvo5wcKtUM/qXoa5zHfl8BsIZUDh260fL6W71DjWhBX1hy2yrF530f0zR7PHRB6OcJnsW2yJmfJQeZI+OjYuRU7gNFq5bvqvAO6AsFqMVnrA8hGuIQGaeI8JjPFGWX4o+lWgQtrnHGcZyhlEnESE0+cNCGMM4B5m1kZ52g9ejZcrvsOfp38gZRmZtpU4VxyB/NM1ojCZ49XORe2GTesLqoeQMI7O2Gocn3Klo5sJaW01BFyyRqn8BFlLIqY57E/cY7X5HVIrh2M8wRiJrpaMMyhFl6QptOMmofxLfqcGUn2H8N7Iq5eVQcnSxS905yCgD4Rhxn4jyM3m540QrlXGR0c4PL4Nv0SEz1/EwsupYasjvxz3Gool4F7lhLO1nGGORFdVbRsvJQcI9RsU9fA+GM36GcSHaC7kkadGQa4yUjrOWiwyjDG1xENH0IbxG5iaj8sX7j9TN+jzOmoQTSIbGb0GXlGuMT/BENItZN7EZe9zFv0Hpwch/HMlVEk1oOc41xsIZxYji5Iv2H8lFZbHm0LEDJji4xlhu89FzFP03tB8zrsOFAT9rMJbAjWDOMfYFeNvqGb3XEKlSKpWqNVTJ8C/pVB6ZaLwSOhAmODjH6AxMcEK/wpPyW7m5uroOYDb7JAP+tulf+2JDpzlRgwgHGYEb3rbKednkBRcZwVR8Nx5p451VtjjJCDYQ7H5G/P6CSW3hcpOxK95obIZvGIHuxxqam1IdtTfkECN6/1+Bc48OeNoK39rAWTfigJ7WhhxiRJHWUPnViXg3NccWdMfvssi1p6Y5xDjBf/Jk//HqB2/wuDFjxvhN7Al64hchq7X/f8cQVOGW9dsJ801IgvaXiava/0XFdtfehITEiNfyQts7kg/cOlZMfddhvFkNS0xLGtt+NV68ePHixYsXB/Vf2tCAfAplbmRzdHJlYW0KZW5kb2JqCjIgMCBvYmoKPDwvQ29sb3JTcGFjZS9EZXZpY2VSR0IvU3VidHlwZS9JbWFnZS9IZWlnaHQgOTAvRmlsdGVyL0ZsYXRlRGVjb2RlL1R5cGUvWE9iamVjdC9XaWR0aCAyMjgvU01hc2sgMSAwIFIvTGVuZ3RoIDEyMzAvQml0c1BlckNvbXBvbmVudCA4Pj5zdHJlYW0KeJztnN9PlXUcx7/WXNh0FWiISyk5aXOCmoqUFEpdOCRzE7lNbOKmVybKdCmcjuA5nFZzzPUPtIxR68K1LkoqHakoekCGSKBWKF7QDAWGIDx9HyA8fATWheP94fB+7XXBj+95zvY5rz37Puc84DiEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGETBBmYRqlo4puUwIfCFUruk0JfCBUreg2JfCBULWi25TAB0LVim5TAh8IVSu6TQl8IFSt6DYl8IFQtaLblMAHQtWKblMCHwhVK7pNCXwgVK3oNiXwgVC1otuUwAdC1YpuUwIfCFUruk0JfCBUreg2JfCBULWi25TAB0LVim5TAh8IVSu6TQl8IFSt6DYl8IFQtaLblMAHQtWKblMCHwhVK7pNCXwgVK3oNiXwgVC1otuUwAdC1YpuUwIfCFUruk0JfCBUreg2JfCBULWi25TAB0LVim5TgpzGK28PiX5R6Kii25SY+FSYC9aa+W+YBW+Ot2bhQNLxa//X0Zh9RLe699T1IX9q3vfLHwcrWw9U3g43r+LGozUDy/b/+ufwMvuFfZT9oVjz2KFa836+OWLNf8sOuMta88+0uN9W3Mwtr0764HBmoGzW4ndnvv6+iV05be6qzZ99e/C3O+M8ha+mLS3/+NPzUphrBLf6Sc39IUP3j1zp9Df0HL36IFxfbcejNQPLiuq6hpfZL+yj7A/FGnmohh6fXVbz+LIu+ytrUX23OIhd/3FVW8KGnRuPngg29Y/22BFPceyWE/dOjoldBX+JI0Z0m5LCS/+EW1B9t1A4coFYVjDGglEONcaycX7rvdxe0tRfXN891rOEP4XNflOwfLpnPU+tU6TVyavttqSxLypxo3n5LfirHBmi25TAG3uC2u3KhyfO2S2uSVgHf6EjQHSbEnhgT1C7j7XXWdHJW5grW9Wv3dzmn26Zk5xlXmSubFW1dtfqv9Zrc42xZ9e4ZHfvGi4vu9iqJm2uxVcf5J9piU7JjlqyISoxY9AZSZnTPOvdjwx4vmWrmrTXWYPdDutv6M0qPTkjIY1vFLBV5dpcj7U4ni17TMxyeAaTQnSbEnhCE+mRK507ys4/uzRj6E4Dyla1ak+twSYnNn2be8MMugT9otuUwPuZYL2he3tP3TBzV/MKi60q13u5/VBV2+LsfWY+T61sVbv+hp5d34XMc0t5amWryvWG2n21HSm7gyZmGbwHzaLblMDLgVjS1J/9xQ9R8al8r5WtKreg+u7nfzmL7K41mqdWtqrdorqunC8rp3vS3U9d0VXoFN2mBN4MSntqDTQ+zP2m+il7hRXPXNmqdv3XeneWX3zGs87MW8O3BdiqcgONfTvKqp5PzOBmgK0q172n5ZaTlFNoXkiC56FKdJsSeCoa9NV2fPRjc/SaLPNSCm9rYauatafWorquwxf+zrV711fTzewV7v8ZmPJ/RIBuUwLvRI/e0L1A48PtX5197b3d7g0DcavhtbDVcOCFqLLA/Z8YncHrzqfNTmpe6RS/vwXdpgSeh07tliCvYuDWQXQwbHUYeBVqLa7vzvR/7e5d0c2w1UHgSag18Hvf1uPfT+U/zkK3KYEnoVZ7nZVVepKtEkIIIYQQQgghhBBCCJmk/AvtiBAjCmVuZHN0cmVhbQplbmRvYmoKMyAwIG9iago8PC9Db2xvclNwYWNlWy9JbmRleGVkWy9DYWxSR0I8PC9HYW1tYVsyLjIgMi4yIDIuMl0vV2hpdGVQb2ludFswLjk1MDQzIDEgMS4wOV0vTWF0cml4WzAuNDEyMzkgMC4yMTI2NCAwLjAxOTMzIDAuMzU3NTggMC43MTUxNyAwLjExOTE5IDAuMTgwNDUgMC4wNzIxOCAwLjk1MDRdPj5dIDI1NSgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApXS9NYXNrIFsyNTUgMjU1XS9TdWJ0eXBlL0ltYWdlL0hlaWdodCA5MC9GaWx0ZXIvRmxhdGVEZWNvZGUvVHlwZS9YT2JqZWN0L0RlY29kZVBhcm1zPDwvQ29sdW1ucyA3NTAvQ29sb3JzIDEvUHJlZGljdG9yIDE1L0JpdHNQZXJDb21wb25lbnQgOD4+L1dpZHRoIDc1MC9MZW5ndGggMjQ4L0JpdHNQZXJDb21wb25lbnQgOD4+c3RyZWFtCnhe7dIBAQAACMMg+5e+QQYZuEGG7oToTojuhOhOiO6E6E6I7oToTojuhOhOiO6E6E6I7oToTojuhOhOiO6E6E6I7oToTojuhOhOiO6E6E6I7oToTojuhOhOiO6E6E6I7oToTojuhOhOiO6E6E6I7oToTojuhOhOiO6E6E6I7oToTojuhOhOiO6E6E6I7oToTojuhOhOiO6E6E6I7oToTojuhOhOiO6E6E6I7oToTojuhOhOiO6E6E6I7oToTojuhOhOiO6E6E6I7oToTojuhOhOiO6E6E6I7oToTojuhOhOiO6E6E6I7oToTojuhOhOiO5kbA9JQrOvCmVuZHN0cmVhbQplbmRvYmoKNCAwIG9iago8PC9Nb2REYXRlKEQ6MjAyMjAzMTYxNDAzMTIrMDEnMDAnKS9DcmVhdG9yKDAxMDAyMDAwLTAwMDEtMDAwMCkvQ3JlYXRpb25EYXRlKEQ6MjAyMjAzMTYxNDAzMTIrMDEnMDAnKS9Qcm9kdWNlcihpVGV4dK4gNS41LjUgqTIwMDAtMjAxNCBpVGV4dCBHcm91cCBOViBcKEFHUEwtdmVyc2lvblwpOyBtb2RpZmllZCB1c2luZyBpVGV4dK4gNS41LjUgqTIwMDAtMjAxNCBpVGV4dCBHcm91cCBOViBcKEFHUEwtdmVyc2lvblwpKS9BdXRob3IoMDEwMDIwMDAtMDAwMS0wMDAwKS9UaXRsZShLRkFTX0tPUF9URVNUKT4+CmVuZG9iago1IDAgb2JqCjw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMTA+PnN0cmVhbQp4nCvkAgAA7gB8CmVuZHN0cmVhbQplbmRvYmoKNiAwIG9iago8PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDc0Pj5zdHJlYW0KeJxTCOQq5CpUMDQ01jM1VjAAQhMTPQsjBVMTBXMTYz1DC4XkXAX9iExDBZd8BaBaBWNzYz0TcySVhmbmIK0oqo0gqgO5AKdpE9sKZW5kc3RyZWFtCmVuZG9iago3IDAgb2JqCjw8L1N1YnR5cGUvRm9ybS9GaWx0ZXIvRmxhdGVEZWNvZGUvVHlwZS9YT2JqZWN0L01hdHJpeFsxIDAgMCAxIDAgMF0vRm9ybVR5cGUgMS9SZXNvdXJjZXM8PC9Gb250PDwvRjIgOCAwIFI+Pj4+L0JCb3hbMCAwIDMwIDEyXS9MZW5ndGggNDU+PnN0cmVhbQp4nCvkcgrhMlQwAEIQaaQQksul72akYKkQksalwSCqGZLF5RrCFcgFAKWTB9sKZW5kc3RyZWFtCmVuZG9iago5IDAgb2JqCjw8L1N1YnR5cGUvRm9ybS9GaWx0ZXIvRmxhdGVEZWNvZGUvVHlwZS9YT2JqZWN0L01hdHJpeFsxIDAgMCAxIDAgMF0vRm9ybVR5cGUgMS9SZXNvdXJjZXM8PC9Gb250PDwvSGVsdiAxMCAwIFI+Pj4+L0JCb3hbMCAwIDAgMF0vTGVuZ3RoIDgyPj5zdHJlYW0KeJwrVAhU0A+pUHDydVYoVDAEQl0jECpKVQhXyAMKOYUAxQyA0FDBCIhDchX0PVJzyhRMFELSgKLpChqGRsYmmiFZYI5rCNC8QAVXoGkArDEUjQplbmRzdHJlYW0KZW5kb2JqCjEwIDAgb2JqCjw8L1N1YnR5cGUvVHlwZTEvVHlwZS9Gb250L0Jhc2VGb250L0hlbHZldGljYS9FbmNvZGluZy9XaW5BbnNpRW5jb2Rpbmc+PgplbmRvYmoKMTEgMCBvYmoKPDwvU3VidHlwZS9Gb3JtL0ZpbHRlci9GbGF0ZURlY29kZS9UeXBlL1hPYmplY3QvTWF0cml4WzEgMCAwIDEgMCAwXS9Gb3JtVHlwZSAxL1Jlc291cmNlczw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vQkJveFswIDAgMCAwXS9MZW5ndGggODI+PnN0cmVhbQp4nCtUCFTQD6lQcPJ1VihUMARCXSMQKkpVCFfIAwo5hQDFDIDQUMEIiENyFfQ9UnPKFEwUQtKAoukKGoYGUKAZkgUWcQ0BGhqo4Ao0EgAQkxV0CmVuZHN0cmVhbQplbmRvYmoKMTIgMCBvYmoKPDwvU3VidHlwZS9Gb3JtL0ZpbHRlci9GbGF0ZURlY29kZS9UeXBlL1hPYmplY3QvTWF0cml4WzEgMCAwIDEgMCAwXS9Gb3JtVHlwZSAxL1Jlc291cmNlczw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vQkJveFswIDAgMCAwXS9MZW5ndGggMjkzPj5zdHJlYW0KeJw1UU1PwzAM/Su5VIJDR5qEbD2yL4EEEtMqcU4Ttwtrk61xB+LX444RO5b13suzFJ/Zjj1U32z5tmJnVlDkYsoB2AcLBC0rwjhFwQTdqmcPz9BdmGJVQ2jL7g6Ip5TJp0xsKY9jcBAQEs6aOPR5it2IPoY0c0B0D2gmnNrtRO//aQKSd1RNSj6hCUi9LmrBF7DQ2plCSK2ULefwqDO5NaHz0EJ4cZlcE6cyoePQmuCTuRqCDwfwSIo1KUouuRAliY6x78dgugsMX6bDMbR/Fvx2SGKn5wFXsT91gEAsDiNMhLEHuPqppta1Bp7zprC5Kuc8r0twuasboYSTUjbTMOvR/0B4jwOa7jW2PuxHayGlm+d99Xn9xE1Fe9ixDW3hF9b+e2gKZW5kc3RyZWFtCmVuZG9iago4IDAgb2JqCjw8L1N1YnR5cGUvVHlwZTAvVHlwZS9Gb250L0Jhc2VGb250L1JIVEVVWitOb3RvU2Fucy9FbmNvZGluZy9JZGVudGl0eS1IL0Rlc2NlbmRhbnRGb250c1sxMyAwIFJdL1RvVW5pY29kZSAxNCAwIFI+PgplbmRvYmoKMTUgMCBvYmoKPDwvU3VidHlwZS9Gb3JtL0ZpbHRlci9GbGF0ZURlY29kZS9UeXBlL1hPYmplY3QvTWF0cml4WzEgMCAwIDEgMCAwXS9Gb3JtVHlwZSAxL1Jlc291cmNlczw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vQkJveFswIDAgMCAwXS9MZW5ndGggODU+PnN0cmVhbQp4nCtUCFTQD6lQcPJ1VihUMARCXSMQKkpVCFfIAwo5hQDFDIDQUMEIiENyFfQ9UnPKFEwUQtKAoukKGsGlxYl5eamaIVlgvmsI0MhABVeggQALBRagCmVuZHN0cmVhbQplbmRvYmoKMTYgMCBvYmoKPDwvU3VidHlwZS9Gb3JtL0ZpbHRlci9GbGF0ZURlY29kZS9UeXBlL1hPYmplY3QvTWF0cml4WzEgMCAwIDEgMCAwXS9Gb3JtVHlwZSAxL1Jlc291cmNlczw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vQkJveFswIDAgMCAwXS9MZW5ndGggODU+PnN0cmVhbQp4nCtUCFTQD6lQcPJ1VihUMARCXSMQKkpVCFfIAwo5hQDFDIDQUMEIiENyFfQ9UnPKFEwUQtKAoukKGm6ZxckZqUWaIVlgvmsI0MhABVeggQAIeBaHCmVuZHN0cmVhbQplbmRvYmoKMTcgMCBvYmoKPDwvU3VidHlwZS9Gb3JtL0ZpbHRlci9GbGF0ZURlY29kZS9UeXBlL1hPYmplY3QvTWF0cml4WzEgMCAwIDEgMCAwXS9Gb3JtVHlwZSAxL1Jlc291cmNlczw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vQkJveFswIDAgMCAwXS9MZW5ndGggMjI+PnN0cmVhbQp4nCtUCFTQD6lQcPJ1VnAFYgAjrAQFCmVuZHN0cmVhbQplbmRvYmoKMTggMCBvYmoKPDwvU3VidHlwZS9Gb3JtL0ZpbHRlci9GbGF0ZURlY29kZS9UeXBlL1hPYmplY3QvTWF0cml4WzEgMCAwIDEgMCAwXS9Gb3JtVHlwZSAxL1Jlc291cmNlczw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vQkJveFswIDAgMCAwXS9MZW5ndGggMjI+PnN0cmVhbQp4nCtUCFTQD6lQcPJ1VnAFYgAjrAQFCmVuZHN0cmVhbQplbmRvYmoKMTkgMCBvYmoKPDwvU3VidHlwZS9Gb3JtL0ZpbHRlci9GbGF0ZURlY29kZS9UeXBlL1hPYmplY3QvTWF0cml4WzEgMCAwIDEgMCAwXS9Gb3JtVHlwZSAxL1Jlc291cmNlczw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vQkJveFswIDAgMCAwXS9MZW5ndGggODA+PnN0cmVhbQp4nCtUCFTQD6lQcPJ1VihUMARCXSMQKkpVCFfIAwo5hQDFDIDQUMEIiENyFfQ9UnPKFEwUQtKAoukKGi6umiFZYKZrCNC0QAVXoFkAh40UTAplbmRzdHJlYW0KZW5kb2JqCjIwIDAgb2JqCjw8L1N1YnR5cGUvRm9ybS9GaWx0ZXIvRmxhdGVEZWNvZGUvVHlwZS9YT2JqZWN0L01hdHJpeFsxIDAgMCAxIDAgMF0vRm9ybVR5cGUgMS9SZXNvdXJjZXM8PC9Gb250PDwvSGVsdiAxMCAwIFI+Pj4+L0JCb3hbMCAwIDAgMF0vTGVuZ3RoIDgzPj5zdHJlYW0KeJwrVAhU0A+pUHDydVYoVDAEQl0jECpKVQhXyAMKOYUAxQyA0FDBCIhDchX0PVJzyhRMFELSgKLpChqGRsYmppohWWCeawjQwEAFV6BxAMB0FMIKZW5kc3RyZWFtCmVuZG9iagoyMSAwIG9iago8PC9TdWJ0eXBlL0Zvcm0vRmlsdGVyL0ZsYXRlRGVjb2RlL1R5cGUvWE9iamVjdC9NYXRyaXhbMSAwIDAgMSAwIDBdL0Zvcm1UeXBlIDEvUmVzb3VyY2VzPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9CQm94WzAgMCAwIDBdL0xlbmd0aCA4Mj4+c3RyZWFtCnicK1QIVNAPqVBw8nVWKFQwBEJdIxAqSlUIV8gDCjmFAMUMgNBQwQiIQ3IV9D1Sc8oUTBRC0oCi6Qoa3pmpOZohWWCOawjQvEAFV6BpALu7FUgKZW5kc3RyZWFtCmVuZG9iagoyMiAwIG9iago8PC9TdWJ0eXBlL0Zvcm0vRmlsdGVyL0ZsYXRlRGVjb2RlL1R5cGUvWE9iamVjdC9NYXRyaXhbMSAwIDAgMSAwIDBdL0Zvcm1UeXBlIDEvUmVzb3VyY2VzPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9CQm94WzAgMCAwIDBdL0xlbmd0aCAyMj4+c3RyZWFtCnicK1QIVNAPqVBw8nVWcAViACOsBAUKZW5kc3RyZWFtCmVuZG9iagoyMyAwIG9iago8PC9TdWJ0eXBlL0Zvcm0vRmlsdGVyL0ZsYXRlRGVjb2RlL1R5cGUvWE9iamVjdC9NYXRyaXhbMSAwIDAgMSAwIDBdL0Zvcm1UeXBlIDEvUmVzb3VyY2VzPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9CQm94WzAgMCAwIDBdL0xlbmd0aCA5MD4+c3RyZWFtCnicK1QIVNAPqVBw8nVWKFQwBEJdIxAqSlUIV8gDCjmFAMUMgNBQwQiIQ3IV9D1Sc8oUTBRC0oCi6QoaHomlBSXFJUWJ91M1Q7LAYq4hQGMDFVyBhgIAgVAYwwplbmRzdHJlYW0KZW5kb2JqCjI0IDAgb2JqCjw8L1N1YnR5cGUvRm9ybS9GaWx0ZXIvRmxhdGVEZWNvZGUvVHlwZS9YT2JqZWN0L01hdHJpeFsxIDAgMCAxIDAgMF0vRm9ybVR5cGUgMS9SZXNvdXJjZXM8PC9Gb250PDwvSGVsdiAxMCAwIFI+Pj4+L0JCb3hbMCAwIDAgMF0vTGVuZ3RoIDIyPj5zdHJlYW0KeJwrVAhU0A+pUHDydVZwBWIAI6wEBQplbmRzdHJlYW0KZW5kb2JqCjI1IDAgb2JqCjw8L1N1YnR5cGUvRm9ybS9GaWx0ZXIvRmxhdGVEZWNvZGUvVHlwZS9YT2JqZWN0L01hdHJpeFsxIDAgMCAxIDAgMF0vRm9ybVR5cGUgMS9SZXNvdXJjZXM8PC9Gb250PDwvSGVsdiAxMCAwIFI+Pj4+L0JCb3hbMCAwIDAgMF0vTGVuZ3RoIDIyPj5zdHJlYW0KeJwrVAhU0A+pUHDydVZwBWIAI6wEBQplbmRzdHJlYW0KZW5kb2JqCjI2IDAgb2JqCjw8L1N1YnR5cGUvRm9ybS9GaWx0ZXIvRmxhdGVEZWNvZGUvVHlwZS9YT2JqZWN0L01hdHJpeFsxIDAgMCAxIDAgMF0vRm9ybVR5cGUgMS9SZXNvdXJjZXM8PC9Gb250PDwvSGVsdiAxMCAwIFI+Pj4+L0JCb3hbMCAwIDAgMF0vTGVuZ3RoIDEwNT4+c3RyZWFtCnicHY3NCkBQFIRfZZYs/OYBRMrGQp2yvnH8xcW9yOM7NDObr6nvQI2AHmRVjgORxIu/GkYDLSgjYaEkQiyjFUHJy40E1Asd4NjLKq3Z7yfbjmzSTp1q38zpd+zS/H8KEk2NQiQvXaceaAplbmRzdHJlYW0KZW5kb2JqCjI3IDAgb2JqCjw8L1N1YnR5cGUvRm9ybS9GaWx0ZXIvRmxhdGVEZWNvZGUvVHlwZS9YT2JqZWN0L01hdHJpeFsxIDAgMCAxIDAgMF0vRm9ybVR5cGUgMS9SZXNvdXJjZXM8PC9Gb250PDwvSGVsdiAxMCAwIFI+Pj4+L0JCb3hbMCAwIDAgMF0vTGVuZ3RoIDIyPj5zdHJlYW0KeJwrVAhU0A+pUHDydVZwBWIAI6wEBQplbmRzdHJlYW0KZW5kb2JqCjI4IDAgb2JqCjw8L1N1YnR5cGUvRm9ybS9GaWx0ZXIvRmxhdGVEZWNvZGUvVHlwZS9YT2JqZWN0L01hdHJpeFsxIDAgMCAxIDAgMF0vRm9ybVR5cGUgMS9SZXNvdXJjZXM8PC9Gb250PDwvSGVsdiAxMCAwIFI+Pj4+L0JCb3hbMCAwIDAgMF0vTGVuZ3RoIDEwNT4+c3RyZWFtCnicHY3NCkBQFIRfZZYs/OYBRMrGQp2yvnH8xcW9yOM7NDObr6nvQI2AHmRVjgORxIu/GkYDLSgjYaEkQiyjFUHJy40E1Asd4NjLKq3Z7yfbjmzSTp1q38zpd+zS/H8KEk2NQiQvXaceaAplbmRzdHJlYW0KZW5kb2JqCjI5IDAgb2JqCjw8L0NvbG9yU3BhY2UvRGV2aWNlR3JheS9TdWJ0eXBlL0ltYWdlL0hlaWdodCAxOS9GaWx0ZXIvRmxhdGVEZWNvZGUvVHlwZS9YT2JqZWN0L1dpZHRoIDE5L0xlbmd0aCAxMzIvQml0c1BlckNvbXBvbmVudCA4Pj5zdHJlYW0KeJxl0AENwCAMBMCXUAmTgAQkTMIkTEIdIGESkDAJSJgEJHQtDEKzTyDhUlqCyD83+9wijCVEYE+HSPQUtA97KiJ1c5S06HS9oo3HSvTYtU6Uc1DKWrSjk64asKtkfGSHulXdaFCbZImYhKtJwkLNCjmycQGeqMwX8/ivtP7XPy90XasiCmVuZHN0cmVhbQplbmRvYmoKMzAgMCBvYmoKPDwvQ29sb3JTcGFjZS9EZXZpY2VSR0IvU3VidHlwZS9JbWFnZS9IZWlnaHQgMTkvRmlsdGVyL0ZsYXRlRGVjb2RlL1R5cGUvWE9iamVjdC9XaWR0aCAxOS9TTWFzayAyOSAwIFIvTGVuZ3RoIDE4L0JpdHNQZXJDb21wb25lbnQgOD4+c3RyZWFtCnicY2AYBaNgFIwCkgEABDsAAQplbmRzdHJlYW0KZW5kb2JqCjMxIDAgb2JqCjw8L0NvbG9yU3BhY2UvRGV2aWNlR3JheS9TdWJ0eXBlL0ltYWdlL0hlaWdodCAxOS9GaWx0ZXIvRmxhdGVEZWNvZGUvVHlwZS9YT2JqZWN0L1dpZHRoIDE5L0xlbmd0aCAzMS9CaXRzUGVyQ29tcG9uZW50IDg+PnN0cmVhbQp4nPv/HxPsb0AF+///b2BABQ2jQgghLOGFCQANA2i1CmVuZHN0cmVhbQplbmRvYmoKMzIgMCBvYmoKPDwvQ29sb3JTcGFjZS9EZXZpY2VSR0IvU3VidHlwZS9JbWFnZS9IZWlnaHQgMTkvRmlsdGVyL0ZsYXRlRGVjb2RlL1R5cGUvWE9iamVjdC9XaWR0aCAxOS9TTWFzayAzMSAwIFIvTGVuZ3RoIDE4L0JpdHNQZXJDb21wb25lbnQgOD4+c3RyZWFtCnicY2AYBaNgFIwCkgEABDsAAQplbmRzdHJlYW0KZW5kb2JqCjMzIDAgb2JqCjw8L0NvbG9yU3BhY2UvRGV2aWNlR3JheS9TdWJ0eXBlL0ltYWdlL0hlaWdodCAxOS9GaWx0ZXIvRmxhdGVEZWNvZGUvVHlwZS9YT2JqZWN0L1dpZHRoIDE5L0xlbmd0aCAzMS9CaXRzUGVyQ29tcG9uZW50IDg+PnN0cmVhbQp4nPv/HxPsb0AF+///b2BABQ2jQgghLOGFCQANA2i1CmVuZHN0cmVhbQplbmRvYmoKMzQgMCBvYmoKPDwvQ29sb3JTcGFjZS9EZXZpY2VSR0IvU3VidHlwZS9JbWFnZS9IZWlnaHQgMTkvRmlsdGVyL0ZsYXRlRGVjb2RlL1R5cGUvWE9iamVjdC9XaWR0aCAxOS9TTWFzayAzMyAwIFIvTGVuZ3RoIDE4L0JpdHNQZXJDb21wb25lbnQgOD4+c3RyZWFtCnicY2AYBaNgFIwCkgEABDsAAQplbmRzdHJlYW0KZW5kb2JqCjM1IDAgb2JqCjw8L0NvbG9yU3BhY2UvRGV2aWNlR3JheS9TdWJ0eXBlL0ltYWdlL0hlaWdodCAxOS9GaWx0ZXIvRmxhdGVEZWNvZGUvVHlwZS9YT2JqZWN0L1dpZHRoIDE5L0xlbmd0aCAxMzIvQml0c1BlckNvbXBvbmVudCA4Pj5zdHJlYW0KeJxl0AENwCAMBMCXUAmTgAQkTMIkTEIdIGESkDAJSJgEJHQtDEKzTyDhUlqCyD83+9wijCVEYE+HSPQUtA97KiJ1c5S06HS9oo3HSvTYtU6Uc1DKWrSjk64asKtkfGSHulXdaFCbZImYhKtJwkLNCjmycQGeqMwX8/ivtP7XPy90XasiCmVuZHN0cmVhbQplbmRvYmoKMzYgMCBvYmoKPDwvQ29sb3JTcGFjZS9EZXZpY2VSR0IvU3VidHlwZS9JbWFnZS9IZWlnaHQgMTkvRmlsdGVyL0ZsYXRlRGVjb2RlL1R5cGUvWE9iamVjdC9XaWR0aCAxOS9TTWFzayAzNSAwIFIvTGVuZ3RoIDE4L0JpdHNQZXJDb21wb25lbnQgOD4+c3RyZWFtCnicY2AYBaNgFIwCkgEABDsAAQplbmRzdHJlYW0KZW5kb2JqCjM3IDAgb2JqCjw8L1N1YnR5cGUvRm9ybS9GaWx0ZXIvRmxhdGVEZWNvZGUvVHlwZS9YT2JqZWN0L01hdHJpeFsxIDAgMCAxIDAgMF0vRm9ybVR5cGUgMS9SZXNvdXJjZXM8PC9Gb250PDwvSGVsdiAx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bHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAxMSAwIFI+Pi9GZiAwPj4KZW5kb2JqCjQ5IDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoZmlsZVVybCkvVHlwZS9Bbm5vdC9WKGh0dHBzJTNBJTJGJTJGa3VuZGVudGVzdC5mb3JtLXNvbHV0aW9ucy5kZSUyRm1ldGFmb3JtJTJGRm9ybS1Tb2x1dGlvbnMlMkZzaWQlMkZhc3Npc3RhbnQlMkY2MWIyMDhlODY2ZGExMjM2NDRjOTdlNTYlM0ZhbmxpZWdlbklkJTNEMTIzNCUyNm9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5JRCUzRDkwMzAyMjklMjZrb21tdW5hbHZlcndhbHR1bmdJZCUzRDEwMDAwMDAwMCUyNmNvbnNlbnRDb21wbGV0ZSUzRHRydWUlMjZjYWNoZUlEJTNENGZiNmI2ZTAtMGYxYy00OTcwLWI5ZWQtZGJmMjQyZDMzM2Y5JTI2Y2l0aXplblBvcnRhbExvZ2luU3VjY2VzcyUzRHRydWUpL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAxMiAwIFI+Pi9GZiAwPj4KZW5kb2JqCjUwIDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoQVNfVm9ybmFtZSkvVHlwZS9Bbm5vdC9WKFN1c2FubmUpL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAxNSAwIFI+Pi9GZiAwPj4KZW5kb2JqCjUxIDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoQVNfTmFtZSkvVHlwZS9Bbm5vdC9WKEZpc2NoZXIpL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAxNiAwIFI+Pi9GZiAwPj4KZW5kb2JqCjUyIDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoQVNfUnVmbmFtZSkvVHlwZS9Bbm5vdC9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gMTcgMCBSPj4vRmYgMD4+CmVuZG9iago1MyAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKEFTX09yZGVuc25hbWVfS3VlbnN0bGVybmFtZSkvVHlwZS9Bbm5vdC9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gMTggMCBSPj4vRmYgMD4+CmVuZG9iago1NCAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKHN0YWF0KS9UeXBlL0Fubm90L1YoREUpL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAxOSAwIFI+Pi9GZiAwPj4KZW5kb2JqCjU1IDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoQVNfUExaKS9UeXBlL0Fubm90L1YoMTIzNDUpL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAyMCAwIFI+Pi9GZiAwPj4KZW5kb2JqCjU2IDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoQVNfT3J0KS9UeXBlL0Fubm90L1YoS2llbCkvRiA2L0RBKC9IZWx2IDAgVGYgMCBnICkvRlQvVHgvRFI8PC9Gb250PDwvSGVsdiAxMCAwIFI+Pj4+L1JlY3RbMCAwIDAgMF0vQVA8PC9OIDIxIDAgUj4+L0ZmIDA+PgplbmRvYmoKNTcgMCBvYmoKPDwvQlM8PC9TL1MvVyAxPj4vU3VidHlwZS9XaWRnZXQvVChCdW5kZXNsYW5kKS9UeXBlL0Fubm90L0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAyMiAwIFI+Pi9GZiAwPj4KZW5kb2JqCjU4IDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoQVNfU3RyYXNzZSkvVHlwZS9Bbm5vdC9WKEhhdXB0c3RyYd9lKS9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gMjMgMCBSPj4vRmYgMD4+CmVuZG9iago1OSAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKEFTX0hhdXNudW1tZXIpL1R5cGUvQW5ub3QvRiA2L0RBKC9IZWx2IDAgVGYgMCBnICkvRlQvVHgvRFI8PC9Gb250PDwvSGVsdiAxMCAwIFI+Pj4+L1JlY3RbMCAwIDAgMF0vQVA8PC9OIDI0IDAgUj4+L0ZmIDA+PgplbmRvYmoKNjAgMCBvYmoKPDwvQlM8PC9TL1MvVyAxPj4vU3VidHlwZS9XaWRnZXQvVChBU19UZWxlZm9uKS9UeXBlL0Fubm90L0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAyNSAwIFI+Pi9GZiAwPj4KZW5kb2JqCjYxIDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoQVNfRS1NYWlsKS9UeXBlL0Fubm90L1Yoc3VzYW5uZS5maXNjaGVyQGRhdGFwb3J0LmRlKS9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gMjYgMCBSPj4vRmYgMD4+CmVuZG9iago2MiAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKEFTX0ZheCkvVHlwZS9Bbm5vdC9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gMjcgMCBSPj4vRmYgMD4+CmVuZG9iago2MyAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKG9mc1hYMV9mcm9tX3NtYWlsMykvVHlwZS9Bbm5vdC9WKHN1c2FubmUuZmlzY2hlckBkYXRhcG9ydC5kZSkvRiA2L0RBKC9IZWx2IDAgVGYgMCBnICkvRlQvVHgvRFI8PC9Gb250PDwvSGVsdiAxMCAwIFI+Pj4+L1JlY3RbMCAwIDAgMF0vQVA8PC9OIDI4IDAgUj4+L0ZmIDA+PgplbmRvYmoKNjQgMCBvYmoKPDwvQlM8PC9TL1MvVyAxPj4vU3VidHlwZS9XaWRnZXQvVChIdW5kX05hbWUpL1R5cGUvQW5ub3QvVihIYXNzbykvRiA2L0RBKC9IZWx2IDAgVGYgMCBnICkvRlQvVHgvRFI8PC9Gb250PDwvSGVsdiAxMCAwIFI+Pj4+L1JlY3RbMCAwIDAgMF0vQVA8PC9OIDM3IDAgUj4+L0ZmIDA+PgplbmRvYmoKNjUgMCBvYmoKPDwvQlM8PC9TL1MvVyAxPj4vU3VidHlwZS9XaWRnZXQvVChIdW5kX1Jhc3NlKS9UeXBlL0Fubm90L1YoU2No5GZlcmh1bmQpL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAzOCAwIFI+Pi9GZiAwPj4KZW5kb2JqCjY2IDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoSHVuZF9HZXNjaGxlY2h0KS9UeXBlL0Fubm90L1Yod2VpYmxpY2gpL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAzOSAwIFI+Pi9GZiAwPj4KZW5kb2JqCjY3IDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoS2FzdHJhdGlvbikvVHlwZS9Bbm5vdC9WKG5laW4pL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiA0MCAwIFI+Pi9GZiAwPj4KZW5kb2JqCjY4IDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoSHVuZF9HZWJ1cnRkYXR1bSkvVHlwZS9Bbm5vdC9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gNDEgMCBSPj4vRmYgMD4+CmVuZG9iago2OSAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKEh1bmRfQWx0ZXIpL1R5cGUvQW5ub3QvVig1KS9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gNDIgMCBSPj4vRmYgMD4+CmVuZG9iago3MCAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKEh1bmRfQ2hpcE5yKS9UeXBlL0Fubm90L1YoMTIzNDU2Nzg5MTIzNDU2KS9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gNDMgMCBSPj4vRmYgMD4+CmVuZG9iago3MSAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKEh1bmRfRmVsbGZhcmJlKS9UeXBlL0Fubm90L1YoaGVsbCkvRiA2L0RBKC9IZWx2IDAgVGYgMCBnICkvRlQvVHgvRFI8PC9Gb250PDwvSGVsdiAxMCAwIFI+Pj4+L1JlY3RbMCAwIDAgMF0vQVA8PC9OIDQ0IDAgUj4+L0ZmIDA+PgplbmRvYmoKNzIgMCBvYmoKPDwvQlM8PC9T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NjYgMCBSIDY3IDAgUiA2OCAwIFIgNjkgMCBSIDcwIDAgUiA3MSAwIFIgNzIgMCBSIDczIDAgUl0vREEoL0hlbHYgMCBUZiAwIGcgKS9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4+PgplbmRvYmoKODMgMCBvYmoKPDwvVHlwZS9DYXRhbG9nL0Fjcm9Gb3JtIDgyIDAgUi9QYWdlcyA3NSAwIFI+PgplbmRvYmoKeHJlZgowIDg0CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAxNSAwMDAwMCBuIAowMDAwMDAyODA5IDAwMDAwIG4gCjAwMDAwMDQyMDYgMDAwMDAgbiAKMDAwMDAwNTYwNCAwMDAwMCBuIAowMDAwMDA1OTA5IDAwMDAwIG4gCjAwMDAwMDU5ODUgMDAwMDAgbiAKMDAwMDAwNjEyNSAwMDAwMCBuIAowMDAwMDA3NDA2IDAwMDAwIG4gCjAwMDAwMDYzNDEgMDAwMDAgbiAKMDAwMDAwNjU5NSAwMDAwMCBuIAowMDAwMDA2Njg0IDAwMDAwIG4gCjAwMDAwMDY5MzkgMDAwMDAgbiAKMDAwMDAzODI3NyAwMDAwMCBuIAowMDAwMDM4ODA0IDAwMDAwIG4gCjAwMDAwMDc1MzYgMDAwMDAgbiAKMDAwMDAwNzc5NCAwMDAwMCBuIAowMDAwMDA4MDUyIDAwMDAwIG4gCjAwMDAwMDgyNDcgMDAwMDAgbiAKMDAwMDAwODQ0MiAwMDAwMCBuIAowMDAwMDA4Njk1IDAwMDAwIG4gCjAwMDAwMDg5NTEgMDAwMDAgbiAKMDAwMDAwOTIwNiAwMDAwMCBuIAowMDAwMDA5NDAxIDAwMDAwIG4gCjAwMDAwMDk2NjQgMDAwMDAgbiAKMDAwMDAwOTg1OSAwMDAwMCBuIAowMDAwMDEwMDU0IDAwMDAwIG4gCjAwMDAwMTAzMzMgMDAwMDAgbiAKMDAwMDAxMDUyOCAwMDAwMCBuIAowMDAwMDEwODA3IDAwMDAwIG4gCjAwMDAwMTEwOTQgMDAwMDAgbiAKMDAwMDAxMTI3OCAwMDAwMCBuIAowMDAwMDExNDYzIDAwMDAwIG4gCjAwMDAwMTE2NDcgMDAwMDAgbiAKMDAwMDAxMTgzMiAwMDAwMCBuIAowMDAwMDEyMDE2IDAwMDAwIG4gCjAwMDAwMTIzMDMgMDAwMDAgbiAKMDAwMDAxMjQ4NyAwMDAwMCBuIAowMDAwMDEyNzQzIDAwMDAwIG4gCjAwMDAwMTMwMDYgMDAwMDAgbiAKMDAwMDAxMzI2NSAwMDAwMCBuIAowMDAwMDEzNTIwIDAwMDAwIG4gCjAwMDAwMTM3MTUgMDAwMDAgbiAKMDAwMDAxMzk2NyAwMDAwMCBuIAowMDAwMDE0MjI5IDAwMDAwIG4gCjAwMDAwMTQ0ODQgMDAwMDAgbiAKMDAwMDAxNDczNyAwMDAwMCBuIAowMDAwMDE0OTkwIDAwMDAwIG4gCjAwMDAwMTUxNjYgMDAwMDAgbiAKMDAwMDAxNTM1OCAwMDAwMCBuIAowMDAwMDE1ODQ0IDAwMDAwIG4gCjAwMDAwMTYwMjQgMDAwMDAgbiAKMDAwMDAxNjIwMSAwMDAwMCBuIAowMDAwMDE2MzcwIDAwMDAwIG4gCjAwMDAwMTY1NTYgMDAwMDAgbiAKMDAwMDAxNjcyNiAwMDAwMCBuIAowMDAwMDE2OTAwIDAwMDAwIG4gCjAwMDAwMTcwNzMgMDAwMDAgbiAKMDAwMDAxNzI0MiAwMDAwMCBuIAowMDAwMDE3NDI2IDAwMDAwIG4gCjAwMDAwMTc1OTggMDAwMDAgbiAKMDAwMDAxNzc2NyAwMDAwMCBuIAowMDAwMDE3OTY2IDAwMDAwIG4gCjAwMDAwMTgxMzEgMDAwMDAgbiAKMDAwMDAxODMzOSAwMDAwMCBuIAowMDAwMDE4NTE2IDAwMDAwIG4gCjAwMDAwMTg3MDAgMDAwMDAgbiAKMDAwMDAxODg4NiAwMDAwMCBuIAowMDAwMDE5MDYzIDAwMDAwIG4gCjAwMDAwMTkyMzggMDAwMDAgbiAKMDAwMDAxOTQxMiAwMDAwMCBuIAowMDAwMDE5NjAxIDAwMDAwIG4gCjAwMDAwMTk3ODIgMDAwMDAgbiAKMDAwMDAxOTk1OSAwMDAwMCBuIAowMDAwMDIwMTM2IDAwMDAwIG4gCjAwMDAwMjE0MTUgMDAwMDAgbiAKMDAwMDAyMTQ3NSAwMDAwMCBuIAowMDAwMDIzNjMzIDAwMDAwIG4gCjAwMDAwMjE5NTggMDAwMDAgbiAKMDAwMDAyMjA1MiAwMDAwMCBuIAowMDAwMDIzNzkwIDAwMDAwIG4gCjAwMDAwMzgwOTMgMDAwMDAgbiAKMDAwMDAzOTQ0OCAwMDAwMCBuIAowMDAwMDM5NzE0IDAwMDAwIG4gCnRyYWlsZXIKPDwvSW5mbyA0IDAgUi9JRCBbPGVlZWQ2YmEzM2YwZDY5ZjkzZWEyYzZjNWFhM2U0ZWJjPjw4ZGIwNDk0YjcxMmY5ZTE5NTJmZGMwMjI2Mjg3NzdhZj5dL1Jvb3QgODMgMCBSL1NpemUgODQ+PgolaVRleHQtNS41LjUKc3RhcnR4cmVmCjM5Nzc3CiUlRU9GCg=="; public static final byte[] PDF_DECODED = Base64.getDecoder().decode(PDF_ENCODED.getBytes()); public static final String JSON_CONTENT = "{}"; diff --git a/formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsRequestMapperITCase.java b/src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsRequestMapperITCase.java similarity index 100% rename from formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsRequestMapperITCase.java rename to src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsRequestMapperITCase.java diff --git a/formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsRequestMapperTest.java b/src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsRequestMapperTest.java similarity index 100% rename from formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsRequestMapperTest.java rename to src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsRequestMapperTest.java diff --git a/formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormsolutionsAdapterApplicationTest.java b/src/test/java/de/ozgcloud/eingang/formsolutions/FormsolutionsAdapterApplicationTest.java similarity index 100% rename from formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormsolutionsAdapterApplicationTest.java rename to src/test/java/de/ozgcloud/eingang/formsolutions/FormsolutionsAdapterApplicationTest.java diff --git a/formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormsolutionsITCase.java b/src/test/java/de/ozgcloud/eingang/formsolutions/FormsolutionsITCase.java similarity index 100% rename from formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormsolutionsITCase.java rename to src/test/java/de/ozgcloud/eingang/formsolutions/FormsolutionsITCase.java diff --git a/formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/SendFormEndpointITCase.java b/src/test/java/de/ozgcloud/eingang/formsolutions/SendFormEndpointITCase.java similarity index 100% rename from formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/SendFormEndpointITCase.java rename to src/test/java/de/ozgcloud/eingang/formsolutions/SendFormEndpointITCase.java diff --git a/formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/SendFormEndpointTest.java b/src/test/java/de/ozgcloud/eingang/formsolutions/SendFormEndpointTest.java similarity index 100% rename from formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/SendFormEndpointTest.java rename to src/test/java/de/ozgcloud/eingang/formsolutions/SendFormEndpointTest.java diff --git a/common/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension b/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension similarity index 100% rename from common/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension rename to src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension diff --git a/formsolutions-adapter/src/test/resources/SimpleJsonWithAttachments.json b/src/test/resources/SimpleJsonWithAttachments.json similarity index 100% rename from formsolutions-adapter/src/test/resources/SimpleJsonWithAttachments.json rename to src/test/resources/SimpleJsonWithAttachments.json diff --git a/formsolutions-adapter/src/test/resources/application-itcase.yml b/src/test/resources/application-itcase.yml similarity index 100% rename from formsolutions-adapter/src/test/resources/application-itcase.yml rename to src/test/resources/application-itcase.yml diff --git a/formsolutions-adapter/src/test/resources/application.yml b/src/test/resources/application.yml similarity index 100% rename from formsolutions-adapter/src/test/resources/application.yml rename to src/test/resources/application.yml diff --git a/formsolutions-adapter/src/test/resources/formular/RequestJsonContent.json b/src/test/resources/formular/RequestJsonContent.json similarity index 100% rename from formsolutions-adapter/src/test/resources/formular/RequestJsonContent.json rename to src/test/resources/formular/RequestJsonContent.json diff --git a/common/src/test/resources/junit-platform.properties b/src/test/resources/junit-platform.properties similarity index 100% rename from common/src/test/resources/junit-platform.properties rename to src/test/resources/junit-platform.properties diff --git a/xta-adapter/doc/example-response-getmessages-items-pending.xml b/xta-adapter/doc/example-response-getmessages-items-pending.xml deleted file mode 100644 index bdc87bdc..00000000 --- a/xta-adapter/doc/example-response-getmessages-items-pending.xml +++ /dev/null @@ -1,51 +0,0 @@ -<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"> - <soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing"> - <tran:MsgBoxResponse xmlns:tran="http://www.osci.eu/ws/2008/05/transport"> - <tran:MsgBoxResponse MsgBoxRequestID="urn:de:xta:requestid:xta-tester:e8959968-a8c3-4ba4-aad1-5928ad6030dc"> - <tran:ItemsPending>1</tran:ItemsPending> - </tran:MsgBoxResponse> - </tran:MsgBoxResponse> - <wsa:Action>http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxStatusListRequest</wsa:Action> - <wsa:RelatesTo>uuid:d30e3dbd-4724-4a08-84b9-55e61ce1b404</wsa:RelatesTo> - </soapenv:Header> - <soapenv:Body> - <tran:MsgStatusList xmlns:tran="http://www.osci.eu/ws/2008/05/transport" xmlns:tran1="http://www.osci.eu/ws/2014/10/transport" xmlns:add="http://www.w3.org/2005/08/addressing"> - <tran1:MessageMetaData> - <tran1:DeliveryAttributes> - <tran1:Origin>2022-02-25T14:13:57.613+01:00</tran1:Origin> - <tran1:InitialSend>2022-02-25T14:13:57.613+01:00</tran1:InitialSend> - <tran1:Delivery>2022-02-25T14:13:57.613+01:00</tran1:Delivery> - <tran1:InitialFetch>2022-02-25T14:13:57.613+01:00</tran1:InitialFetch> - </tran1:DeliveryAttributes> - <tran1:Originators> - <tran1:Author> - <tran1:Identifier category="category" type="type"/> - </tran1:Author> - <tran1:Sender> - <tran1:Identifier category="category" type="type"/> - </tran1:Sender> - </tran1:Originators> - <tran1:Destinations> - <tran1:Reader> - <tran1:Identifier category="category" type="type"/> - </tran1:Reader> - </tran1:Destinations> - <tran1:MsgIdentification> - <add:MessageID>urn:de:xta:messageid:xta-tester:0149cd17-a905-4b4b-83c6-10b5ca04a96b</add:MessageID> - </tran1:MsgIdentification> - <tran1:Qualifier> - <tran1:Service>urn:service</tran1:Service> - <tran1:BusinessScenario> - <tran1:Defined> - <name>test</name> - </tran1:Defined> - </tran1:BusinessScenario> - <tran1:MessageType> - <name>mytype</name> - </tran1:MessageType> - </tran1:Qualifier> - <tran1:MsgSize>10</tran1:MsgSize> - </tran1:MessageMetaData> - </tran:MsgStatusList> - </soapenv:Body> -</soapenv:Envelope> \ No newline at end of file diff --git a/xta-adapter/doc/example-response-getmessages-no-messages-available.xml b/xta-adapter/doc/example-response-getmessages-no-messages-available.xml deleted file mode 100644 index 8f56105d..00000000 --- a/xta-adapter/doc/example-response-getmessages-no-messages-available.xml +++ /dev/null @@ -1,11 +0,0 @@ -<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing"> - <s:Header> - <a:Action s:mustUnderstand="1">http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxStatusListRequest</a:Action> - <h:MsgBoxResponse MsgBoxRequestID="1" xmlns:h="http://www.osci.eu/ws/2008/05/transport" xmlns="http://www.osci.eu/ws/2008/05/transport" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <NoMessageAvailable reason="Keine Nachrichten gefunden."/> - </h:MsgBoxResponse> - </s:Header> - <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> - <MsgStatusList xmlns="http://www.osci.eu/ws/2008/05/transport"/> - </s:Body> -</s:Envelope> \ No newline at end of file diff --git a/xta-adapter/pom.xml b/xta-adapter/pom.xml deleted file mode 100644 index e52b51d5..00000000 --- a/xta-adapter/pom.xml +++ /dev/null @@ -1,194 +0,0 @@ -<?xml version="1.0"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>de.ozgcloud.eingang</groupId> - <artifactId>eingang-manager</artifactId> - <version>2.16.0-SNAPSHOT</version> - </parent> - <artifactId>xta-adapter</artifactId> - <name>Eingangs Adapter - XTA</name> - <packaging>jar</packaging> - - <properties> - <spring-boot.build-image.imageName>docker.ozg-sh.de/xta-adapter:build-latest</spring-boot.build-image.imageName> - </properties> - - <dependencies> - <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-web-services</artifactId> - <exclusions> - <exclusion> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-tomcat</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>org.springframework.ws</groupId> - <artifactId>spring-ws-security</artifactId> - </dependency> - <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-log4j2</artifactId> - </dependency> - <!-- own projects --> - <dependency> - <groupId>de.ozgcloud.eingang</groupId> - <artifactId>common</artifactId> - </dependency> - <dependency> - <groupId>de.ozgcloud.eingang</groupId> - <artifactId>semantik-adapter</artifactId> - </dependency> - <dependency> - <groupId>de.ozgcloud.eingang</groupId> - <artifactId>fim-adapter</artifactId> - </dependency> - <!--mapstruct--> - <dependency> - <groupId>org.mapstruct</groupId> - <artifactId>mapstruct</artifactId> - </dependency> - <dependency> - <groupId>org.springframework.ws</groupId> - <artifactId>spring-ws-core</artifactId> - </dependency> - <dependency> - <groupId>org.springframework.ws</groupId> - <artifactId>spring-ws-support</artifactId> - </dependency> - <dependency> - <groupId>org.springframework.ws</groupId> - <artifactId>spring-ws-test</artifactId> - <scope>test</scope> - </dependency> - <!-- JAXB API only --> - <dependency> - <groupId>jakarta.xml.bind</groupId> - <artifactId>jakarta.xml.bind-api</artifactId> - </dependency> - <dependency> - <groupId>com.sun.xml.bind</groupId> - <artifactId>jaxb-impl</artifactId> - </dependency> - <!-- Dev --> - <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-devtools</artifactId> - <scope>runtime</scope> - <optional>true</optional> - </dependency> - <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-configuration-processor</artifactId> - <optional>true</optional> - </dependency> - <!-- Test --> - <dependency> - <groupId>de.ozgcloud.eingang</groupId> - <artifactId>common</artifactId> - <type>test-jar</type> - <scope>test</scope> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-compiler-plugin</artifactId> - </plugin> - <plugin> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-maven-plugin</artifactId> - <configuration> - <profiles>local,sec</profiles> - </configuration> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-dependency-plugin</artifactId> - <executions> - <execution> - <goals> - <goal>unpack</goal> - </goals> - <configuration> - <artifactItems> - <artifactItem> - <groupId>de.ozgcloud.eingang</groupId> - <artifactId>fim-adapter</artifactId> - <version>${project.version}</version> - <includes>**/*.yml,**/*.xml,**/*.xsd</includes> - </artifactItem> - </artifactItems> - <outputDirectory>${project.build.directory}/classes/</outputDirectory> - </configuration> - </execution> - </executions> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-failsafe-plugin</artifactId> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-surefire-plugin</artifactId> - </plugin> - <plugin> - <groupId>org.jacoco</groupId> - <artifactId>jacoco-maven-plugin</artifactId> - </plugin> - <plugin> - <groupId>pl.project13.maven</groupId> - <artifactId>git-commit-id-plugin</artifactId> - </plugin> - - <plugin> - <groupId>org.codehaus.mojo</groupId> - <artifactId>jaxb2-maven-plugin</artifactId> - <executions> - <execution> - <id>wsdl1</id> - <goals> - <goal>xjc</goal> - </goals> - <configuration> - <sourceType>wsdl</sourceType> - <sources> - <source>${basedir}/src/main/resources/XTA.wsdl</source> - </sources> - <clearOutputDir>false</clearOutputDir> - <arguments>-wsdl</arguments> - </configuration> - </execution> - </executions> - </plugin> - </plugins> - </build> - - <profiles> - <profile> - <id>ci-build</id> - <build> - <plugins> - <plugin> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-maven-plugin</artifactId> - <executions> - <execution> - <id>build-image</id> - <phase>install</phase> - <goals> - <goal>build-image-no-fork</goal> - </goals> - </execution> - </executions> - </plugin> - </plugins> - </build> - </profile> - </profiles> -</project> diff --git a/xta-adapter/readme.md b/xta-adapter/readme.md deleted file mode 100644 index 86a1f933..00000000 --- a/xta-adapter/readme.md +++ /dev/null @@ -1,48 +0,0 @@ -# Keystore passwort - -Das Keystore und Passwort müssen extra hinzugefügt werden. Keystore irgendwo im Dateisystem ablegen. -Dazu eine Datei 'application-sec.yml' anlegen: - -ozgcloud: - xta: - keystore: - store: file:<pfad zum keystore> - password: <geheim> - -Den Dienst dann mit dem Spring-Profile 'sec' starten. - -# P12 Datei erzeugen und als Umgerbungsvariable umwandeln - -Wir haben eine pfx Datei bekommen und wandeln diese in eine P12 Cert Datei um: - - keytool -importkeystore -srckeystore KOP_SH_KIEL_DEV.pfx -srcstoretype pkcs12 -destkeystore KOP_SH_KIEL_DEV.p12 -deststoretype PKCS12 - -Dann in Base64 umwandeln, damit es als Umgebungsvariable gesetzt werden kann: - - base64 KOP_SH_KIEL_DEV.p12 - -# Lokale Installation -Lokal das Root CA in keystore laden (https://ddatabox.dataport.de/public/download-shares/XUok5Wk3EDGWyYaoFGldOeJfGu0J8pke): - - sudo keytool -trustcacerts -keystore /lib/jvm/java-1.17.0-openjdk-amd64/lib/security/cacerts -storepass changeit -importcert -alias dataportRoot -file DataportRootCA02.crt - -Port forwarding aktivieren. Um eine Verbindung zum Nachrichtenbroker aufbauen zu können, muss diese über den Hetzner-Server geroutet werden: - - ssh -L 3000:[Hetzner-Server-IP]:443 ozg-sh.de (ggf ssh -L 0.0.0.0:3000:[Hetzner-Server-IP]:443 ozg-sh.de) - -## Alternative Dataport Zertifikat Installation -Zertifikate direkt vom Endpunkt anfragen: -```shell -openssl s_client -showcerts -connect li33-0005.dp.dsecurecloud.de:443 </dev/null -``` -und das `Dataport Root CA` Zertifikat unter `/etc/ssl/certs/dataport-root-ca.pem` abspeichern, dann `sudo update-ca-certificates` aufrufen. - -## deprecated - -DEPRECATED, da wir den HostNameVerifier deaktiviert haben: Hosts Datei erzeugen, damit der Hostname passt: - - 127.0.0.1 LI33-0005 - -# SoapUi Projekt zum manuellen Abrufen des Nachrichtenbrokers -Im Dokumentation Repo unter `Entwicklungsumgebung/Beistellungen/soapUiXTA` liegt ein SoapUi Projekt, -dass manuelle XTA-Aufrufe des Nachrichtenbrokers ermöglicht. diff --git a/xta-adapter/run_helm_test.sh b/xta-adapter/run_helm_test.sh deleted file mode 100755 index 31d13d5b..00000000 --- a/xta-adapter/run_helm_test.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh - -set -e - -helm template ./src/main/helm/ -f src/test/helm-linter-values.yaml -helm lint -f src/test/helm-linter-values.yaml ./src/main/helm/ -cd src/main/helm && helm unittest -f '../../test/helm/**/*.yaml' . diff --git a/xta-adapter/src/main/helm/Chart.yaml b/xta-adapter/src/main/helm/Chart.yaml deleted file mode 100644 index 63f41e33..00000000 --- a/xta-adapter/src/main/helm/Chart.yaml +++ /dev/null @@ -1,31 +0,0 @@ -# -# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -apiVersion: v1 -appVersion: "1.1" -description: A Helm chart for Xta-Adapter -name: xta-adapter -version: 0.0.0-MANAGED-BY-JENKINS -icon: https://simpleicons.org/icons/helm.svg - diff --git a/xta-adapter/src/main/helm/README.md b/xta-adapter/src/main/helm/README.md deleted file mode 100644 index e0a7cdac..00000000 --- a/xta-adapter/src/main/helm/README.md +++ /dev/null @@ -1,35 +0,0 @@ -# Helm - -## Linter - -`helm lint -f test-values.yaml` - -## Unit-Tests - -Für Unit-Tests wird das helm [helm-unittest](https://github.com/quintush/helm-unittest) plugin benötigt. Die Unit-Tests liegen im Verzeichnis src/test/helm - -`helm unittest -f '../../test/helm/*.yaml' -v '../../test/helm/values/unit-values.yaml' .` - -## SyntaxCheck - -`helm template --debug -f test-values.yaml .` - -## Package - -`helm package --version=[version] .` - -## Versionierung - -Jenkins verwendet die Version aus der pom.xml - -### Master Branch - -Im master Branch werden die ersten 7 Zeichen vom git commit hash an die Version gehangen. - -### Release Branch - -Ist nur die Version aus der pom.xml - -### Feature Branch - -In einem feature Branch wird der Branchname an die Version gehangen. \ No newline at end of file diff --git a/xta-adapter/src/main/helm/app-readme.md b/xta-adapter/src/main/helm/app-readme.md deleted file mode 100644 index 8d33e802..00000000 --- a/xta-adapter/src/main/helm/app-readme.md +++ /dev/null @@ -1 +0,0 @@ -# Xta-Adapter \ No newline at end of file diff --git a/xta-adapter/src/main/helm/templates/_helpers.tpl b/xta-adapter/src/main/helm/templates/_helpers.tpl deleted file mode 100644 index 5f233e14..00000000 --- a/xta-adapter/src/main/helm/templates/_helpers.tpl +++ /dev/null @@ -1,79 +0,0 @@ -{{/* vim: set filetype=mustache: */}} - -{{/* error check 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec) */}} -{{/* Namespace */}} -{{- define "app.namespace" -}} -{{- if gt (len (.Release.Namespace)) 63 -}} -{{- fail (printf ".Release.Namespace %s ist zu lang (max. 63 Zeichen)" .Release.Namespace) -}} -{{- end -}} -{{ printf "%s" .Release.Namespace }} -{{- end -}} - -{{/* Chart: Name + Version */}} -{{- define "app.chart" -}} -{{- if gt (len (printf "%s-%s" .Chart.Name .Chart.Version)) 63 -}} -{{- fail (printf ".Chart.Name-.Chart.Version %s-%s ist zu lang (max. 63 Zeichen)" .Chart.Name .Chart.Version) -}} -{{- end -}} -{{ printf "%s-%s" .Chart.Name .Chart.Version }} -{{- end -}} - -{{/* Managed-by -> On Helm, this value is always Helm */}} -{{- define "app.managedBy" -}} -{{- if gt (len (.Release.Service)) 63 -}} -{{- fail (printf ".Release.Service %s ist zu lang (max. 63 Zeichen)" .Release.Service) -}} -{{- end -}} -{{ printf "%s" .Release.Service }} -{{- end -}} - -{{/* Default Labels: Helm recommended best-practice labels https://helm.sh/docs/chart_best_practices/labels/ */}} -{{- define "app.defaultLabels" }} -app.kubernetes.io/instance: {{ .Release.Name }} -app.kubernetes.io/managed-by: {{ include "app.managedBy" . }} -app.kubernetes.io/name: {{ .Release.Name }} -app.kubernetes.io/part-of: ozgcloud -app.kubernetes.io/version: {{ .Chart.Version }} -app.kubernetes.io/namespace: {{ include "app.namespace" . }} -helm.sh/chart: {{ include "app.chart" . }} -{{- end -}} - -{{- define "app.envSpringProfiles" }} -{{- if (.Values.env).overrideSpringProfiles -}} -{{ printf "%s" (.Values.env).overrideSpringProfiles }} -{{- else -}} -{{ printf "oc, %s" (include "app.kopEnvironment" . ) }} -{{- end -}} -{{- end -}} - -{{- define "app.kopEnvironment" -}} -{{- required "Environment muss angegeben sein" (.Values.ozgcloud).environment -}} -{{- end -}} - -{{- define "app.xtaSchedule" -}} -{{- if (.Values.xta).schedule -}} -{{ .Values.xta.schedule | quote }} -{{- else if eq (include "app.kopEnvironment" . ) "dev" -}} -{{ "*/15 * * * *" | quote }} -{{- end -}} -{{- end -}} - -{{- define "app.serviceAccountName" -}} -{{ printf "%s" ( (.Values.serviceAccount).name | default "xta-adapter-service-account" ) }} -{{- end -}} - -{{- define "app.getCustomList" -}} -{{- with (.Values.env).customList -}} -{{- if kindIs "map" . -}} -{{ include "app.dictToList" . }} -{{- else if kindIs "slice" . -}} -{{ . | toYaml }} -{{- end -}} -{{- end -}} -{{- end -}} - -{{- define "app.dictToList" -}} -{{- $customList := list -}} -{{- range $key, $value := . -}} -{{- $customList = append $customList (dict "name" $key "value" $value) }} -{{- end -}} -{{- $customList | toYaml -}} -{{- end -}} \ No newline at end of file diff --git a/xta-adapter/src/main/helm/templates/network_policy.yaml b/xta-adapter/src/main/helm/templates/network_policy.yaml deleted file mode 100644 index ff1ebff5..00000000 --- a/xta-adapter/src/main/helm/templates/network_policy.yaml +++ /dev/null @@ -1,98 +0,0 @@ -# -# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -{{- if not (.Values.networkPolicy).disabled }} -apiVersion: networking.k8s.io/v1 -kind: NetworkPolicy -metadata: - name: network-policy-xta-adapter - namespace: {{ .Release.Namespace }} -spec: - podSelector: - matchLabels: - ozg-component: xta-adapter - policyTypes: - - Egress - egress: - - to: - - podSelector: - matchLabels: - component: vorgang-manager - ports: - - port: 9090 - protocol: TCP - - to: - - namespaceSelector: - matchLabels: - kubernetes.io/metadata.name: {{ required "networkPolicy.dnsServerNamespace must be set" (.Values.networkPolicy).dnsServerNamespace }} - ports: - - port: 53 - protocol: UDP - - port: 53 - protocol: TCP - - port: 5353 - protocol: UDP - - port: 5353 - protocol: TCP - - to: - - namespaceSelector: - matchLabels: - kubernetes.io/metadata.name: ssh-port-forward - ports: - - port: 443 - protocol: TCP - - port: 80 - protocol: TCP - - port: 9000 - protocol: TCP - -{{- if eq (.Values.routing).routingStrategy "ZUFI" }} - - to: - - namespaceSelector: - matchLabels: - kubernetes.io/metadata.name: {{ required "routing.zufiManager.namespace must be set if routingStrategy=ZUFI" ((.Values.routing).zufiManager).namespace }} - podSelector: - matchLabels: - component: zufi-server - ports: - - port: 9090 - protocol: TCP - - to: - - namespaceSelector: {} - podSelector: - matchLabels: - component: vorgang-manager - ports: - - port: 9090 - protocol: TCP -{{- end }} - -{{- with (.Values.networkPolicy).additionalEgressConfigLocal }} -{{ toYaml . | indent 2 }} -{{- end }} -{{- with (.Values.networkPolicy).additionalEgressConfigGlobal }} -{{ toYaml . | indent 2 }} -{{- end }} - -{{- end }} \ No newline at end of file diff --git a/xta-adapter/src/main/helm/templates/service_account.yaml b/xta-adapter/src/main/helm/templates/service_account.yaml deleted file mode 100644 index 0e13e6bc..00000000 --- a/xta-adapter/src/main/helm/templates/service_account.yaml +++ /dev/null @@ -1,31 +0,0 @@ -# -# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -{{- if (.Values.serviceAccount).create }} -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ include "app.serviceAccountName" . }} - namespace: {{ include "app.namespace" . }} -{{- end }} \ No newline at end of file diff --git a/xta-adapter/src/main/helm/templates/xta_adapter_cronjob.yaml b/xta-adapter/src/main/helm/templates/xta_adapter_cronjob.yaml deleted file mode 100644 index 76195913..00000000 --- a/xta-adapter/src/main/helm/templates/xta_adapter_cronjob.yaml +++ /dev/null @@ -1,179 +0,0 @@ -# -# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -apiVersion: batch/v1 -kind: CronJob -metadata: - name: {{ .Release.Name }} - namespace: {{ include "app.namespace" . }} - labels: - {{- include "app.defaultLabels" . | indent 4 }} -spec: - schedule: {{ include "app.xtaSchedule" . }} - successfulJobsHistoryLimit: 3 - failedJobsHistoryLimit: 3 - concurrencyPolicy: Forbid - startingDeadlineSeconds: 120 - jobTemplate: - spec: - backoffLimit: 1 - template: - metadata: - labels: - workload: xta-adapter-cronjob - ozg-component: xta-adapter - spec: - {{- if (.Values.serviceAccount).create }} - serviceAccountName: {{ include "app.serviceAccountName" . }} - {{- end }} - restartPolicy: Never - containers: - - name: xta-adapter - image: "{{ .Values.image.repo }}/{{ .Values.image.name }}:{{ (.Values.image).tag }}" - imagePullPolicy: Always - env: - - name: spring_profiles_active - value: {{ include "app.envSpringProfiles" . }} - - name: SERVICE_BINDING_ROOT - value: "/bindings" - - name: ozgcloud_xta_server_name - value: {{ (.Values.xta).server.name }} - - name: ozgcloud_xta_server_address - value: {{ (.Values.xta).server.address }} - - name: ozgcloud_xta_server_protocol - value: {{ (.Values.xta).server.protocol }} - - name: ozgcloud_xta_identifiers - value: {{ (.Values.xta).identifiers | join "," | quote }} - - name: ozgcloud_xta_keystore_file - value: "keystore/xta-keystore.p12" - - name: ozgcloud_xta_keystore_password - valueFrom: - secretKeyRef: - name: "xta-keystore" - key: password - optional: false - - name: ozgcloud_adapter_fallbackStrategy - value: {{ (.Values.routing).fallbackStrategy | default "DENY"}} - - name: ozgcloud_adapter_routingStrategy - value: {{ (.Values.routing).routingStrategy | default "SINGLE"}} - {{- if (.Values.routing).targetVorgangManagerName }} - - name: ozgcloud_adapter_targetVorgangManagerName - value: {{ (.Values.routing).targetVorgangManagerName}} - - name: grpc_client_vorgang-manager-{{ (.Values.routing).targetVorgangManagerName }}_address - value: 'dns:///vorgang-manager.{{ coalesce (.Values.routing).targetNamespace .Release.Namespace }}:9090' - - name: grpc_client_vorgang-manager-{{ (.Values.routing).targetVorgangManagerName }}_negotiationType - value: {{ (.Values.routing).negotiationType | default "PLAINTEXT" }} - {{- end }} - {{- if eq (.Values.routing).routingStrategy "ZUFI" }} - - name: grpc_client_zufi-manager_address - value: {{ required "routing.zufiManager.address must be set when routingStrategy=ZUFI" ((.Values.routing).zufiManager).address | quote }} - - name: grpc_client_zufi-manager_negotiationType - value: {{ ((.Values.routing).zufiManager).negotiationType | default "PLAINTEXT" }} - {{- end }} - {{- with include "app.getCustomList" . }} -{{ . | indent 16 }} - {{- end }} - volumeMounts: - - name: bindings - mountPath: "/bindings/ca-certificates/type" - subPath: type - readOnly: true - - name: xta-root-ca - mountPath: "/bindings/ca-certificates/xta-root-ca.crt" - subPath: ca.crt - readOnly: true - - name: xta-keystore - mountPath: "/workspace/keystore/xta-keystore.p12" - subPath: file - readOnly: true - - name: temp-dir - mountPath: "/tmp" - securityContext: - allowPrivilegeEscalation: false - privileged: false - readOnlyRootFilesystem: false - runAsNonRoot: true - {{- with (.Values.securityContext).runAsUser }} - runAsUser: {{ . }} - {{- end }} - {{- with (.Values.securityContext).runAsGroup }} - runAsGroup: {{ . }} - {{- end }} - {{- with (.Values.securityContext).capabilities }} - capabilities: -{{ toYaml . | indent 18 }} - {{- end }} - resources: - {{- with .Values.resources }} -{{ toYaml . | indent 16 }} - {{- end }} - - {{- if (.Values.dummyProbesEnabled) }} - livenessProbe: - exec: - command: - - echo - - '>' - - /dev/null - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 3 - readinessProbe: - exec: - command: - - echo - - '>' - - /dev/null - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 3 - startupProbe: - exec: - command: - - echo - - '>' - - /dev/null - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 3 - {{- end }} - - volumes: - - name: bindings - configMap: - name: xta-adapter-bindings-type - - name: xta-root-ca - secret: - secretName: xta-root-ca - - name: xta-keystore - secret: - secretName: xta-keystore - - name: temp-dir - emptyDir: {} - imagePullSecrets: - - name: {{ required "imagePullSecret must be set" .Values.imagePullSecret }} - {{- with .Values.podSecurityContext }} - securityContext: -{{ toYaml . | indent 12 }} - {{- end }} diff --git a/xta-adapter/src/main/helm/templates/xta_bindings_type_configmap.yaml b/xta-adapter/src/main/helm/templates/xta_bindings_type_configmap.yaml deleted file mode 100644 index 983076ff..00000000 --- a/xta-adapter/src/main/helm/templates/xta_bindings_type_configmap.yaml +++ /dev/null @@ -1,10 +0,0 @@ -{{- if (.Values.xta).rootCa }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: xta-adapter-bindings-type - namespace: {{ include "app.namespace" . }} -data: - type: | - ca-certificates -{{- end }} \ No newline at end of file diff --git a/xta-adapter/src/main/helm/templates/xta_keystore_secret.yaml b/xta-adapter/src/main/helm/templates/xta_keystore_secret.yaml deleted file mode 100644 index c3a2a687..00000000 --- a/xta-adapter/src/main/helm/templates/xta_keystore_secret.yaml +++ /dev/null @@ -1,36 +0,0 @@ -# -# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -{{- if (.Values.xta).keystore }} -apiVersion: v1 -kind: Secret -metadata: - name: xta-keystore - namespace: {{ include "app.namespace" . }} -type: Opaque -stringData: - password: {{ .Values.xta.keystore.password }} -data: - file: {{ .Values.xta.keystore.file }} -{{- end }} \ No newline at end of file diff --git a/xta-adapter/src/main/helm/templates/xta_root_ca_secret.yaml b/xta-adapter/src/main/helm/templates/xta_root_ca_secret.yaml deleted file mode 100644 index 76a6045d..00000000 --- a/xta-adapter/src/main/helm/templates/xta_root_ca_secret.yaml +++ /dev/null @@ -1,34 +0,0 @@ -# -# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -{{- if (.Values.xta).rootCa }} -apiVersion: v1 -kind: Secret -metadata: - name: xta-root-ca - namespace: {{ include "app.namespace" . }} -type: Opaque -data: - ca.crt: {{ .Values.xta.rootCa }} -{{- end }} \ No newline at end of file diff --git a/xta-adapter/src/main/helm/values.yaml b/xta-adapter/src/main/helm/values.yaml deleted file mode 100644 index b7fd23ad..00000000 --- a/xta-adapter/src/main/helm/values.yaml +++ /dev/null @@ -1,36 +0,0 @@ -# -# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -image: - repo: docker.ozg-sh.de - name: xta-adapter - tag: 9.9.99 - -# env: -# overrideSpringProfiles: "oc,prod" - -routing: - targetVorgangManagerName: vorgang-manager - fallbackStrategy: DENY - routingStrategy: SINGLE \ No newline at end of file diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xdomea/XMLHelper.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xdomea/XMLHelper.java deleted file mode 100644 index 1eb09f2e..00000000 --- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xdomea/XMLHelper.java +++ /dev/null @@ -1,63 +0,0 @@ -package de.ozgcloud.eingang.xdomea; - -import java.io.IOException; - -import javax.xml.XMLConstants; -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.ParserConfigurationException; -import javax.xml.xpath.XPathExpression; -import javax.xml.xpath.XPathExpressionException; -import javax.xml.xpath.XPathFactory; -import javax.xml.xpath.XPathFactoryConfigurationException; - -import org.w3c.dom.Document; -import org.xml.sax.SAXException; - -import de.ozgcloud.eingang.common.errorhandling.TechnicalException; -import de.ozgcloud.eingang.common.formdata.IncomingFile; -import lombok.AccessLevel; -import lombok.NoArgsConstructor; - -@NoArgsConstructor(access = AccessLevel.PRIVATE) -public class XMLHelper { - - private static final DocumentBuilder DOCUMENT_BUILDER = createDocumentBuilder(); - private static final XPathFactory X_PATH_FACTORY = createXPathFactory(); - - public static Document parseDocument(IncomingFile incomingFile) { - try (var inputStream = incomingFile.getContentStream()) { - return DOCUMENT_BUILDER.parse(inputStream); - } catch (SAXException | IOException e) { - throw new TechnicalException("Failed to parse xml document!", e); - } - } - - public static XPathExpression compileXPathExpression(String xPathString) { - try { - return X_PATH_FACTORY.newXPath().compile(xPathString); - } catch (XPathExpressionException e) { - throw new TechnicalException("Failed to compile xpath expression!", e); - } - } - - private static DocumentBuilder createDocumentBuilder() { - var documentBuilderFactory = DocumentBuilderFactory.newInstance(); - try { - documentBuilderFactory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); - return documentBuilderFactory.newDocumentBuilder(); - } catch (ParserConfigurationException e) { - throw new TechnicalException("Failed to configure document builder", e); - } - } - - private static XPathFactory createXPathFactory() { - var xPathFactory = XPathFactory.newInstance(); - try { - xPathFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, Boolean.TRUE); - return xPathFactory; - } catch (XPathFactoryConfigurationException e) { - throw new TechnicalException("Failed to configure xpath factory!", e); - } - } -} diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xdomea/XdomeaMessageData.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xdomea/XdomeaMessageData.java deleted file mode 100644 index 432b06c5..00000000 --- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xdomea/XdomeaMessageData.java +++ /dev/null @@ -1,17 +0,0 @@ -package de.ozgcloud.eingang.xdomea; - -import java.util.List; - -import de.ozgcloud.eingang.common.formdata.IncomingFile; -import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; -import lombok.Builder; -import lombok.Singular; - -@Builder -public record XdomeaMessageData( - IncomingFile metadataFile, - List<IncomingFile> representations, - @Singular - List<IncomingFileGroup> attachments -) { -} diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xdomea/XdomeaMessageDataMapper.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xdomea/XdomeaMessageDataMapper.java deleted file mode 100644 index 6457a449..00000000 --- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xdomea/XdomeaMessageDataMapper.java +++ /dev/null @@ -1,152 +0,0 @@ -package de.ozgcloud.eingang.xdomea; - -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -import org.springframework.stereotype.Component; - -import de.ozgcloud.eingang.common.errorhandling.TechnicalException; -import de.ozgcloud.eingang.common.formdata.IncomingFile; -import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; -import de.ozgcloud.eingang.xta.RepresentationsAttachmentsPair; -import lombok.RequiredArgsConstructor; -import lombok.extern.log4j.Log4j2; - -@Component -@Log4j2 -@RequiredArgsConstructor -public class XdomeaMessageDataMapper { - static final String XDOMEA_0201_XML_FILE_NAME_SUFFIX = "_Geschaeftsgang.Geschaeftsgang.0201.xml"; - static final String ATTACHMENT_GROUP_NAME = "Dokument"; - - private final XdomeaXMLValueReader valueReader; - - public RepresentationsAttachmentsPair mapIncomingFilesToRepresentationsAttachmentsPair(List<IncomingFile> incomingFileList) { - var xdomeaMessageData = mapIncomingFilesToXdomeaMessageData(incomingFileList); - return RepresentationsAttachmentsPair.builder() - .representations(removeUuidPrefixFromIncomingFiles(getPairRepresentations(xdomeaMessageData))) - .attachments(removeUuidPrefixFromIncomingFileGroups(xdomeaMessageData.attachments())) - .build(); - } - - private List<IncomingFileGroup> removeUuidPrefixFromIncomingFileGroups(List<IncomingFileGroup> incomingFileGroups) { - return incomingFileGroups.stream() - .map(group -> group.toBuilder() - .clearFiles() - .files(removeUuidPrefixFromIncomingFiles(group.getFiles())) - .build()) - .toList(); - } - - private List<IncomingFile> removeUuidPrefixFromIncomingFiles(List<IncomingFile> incomingFiles) { - return incomingFiles.stream() - .map(this::removeUuidPrefixFromIncomingFile) - .toList(); - } - - private IncomingFile removeUuidPrefixFromIncomingFile(IncomingFile incomingFile) { - return incomingFile.toBuilder() - .name(removeUuidPrefix(incomingFile.getName())) - .build(); - } - - private String removeUuidPrefix(String name) { - return name.replaceFirst("^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}_", ""); - } - - private List<IncomingFile> getPairRepresentations(XdomeaMessageData xdomeaMessageData) { - return Stream.concat( - Stream.of(xdomeaMessageData.metadataFile()), - xdomeaMessageData.representations().stream() - ).toList(); - } - - XdomeaMessageData mapIncomingFilesToXdomeaMessageData(List<IncomingFile> incomingFileList) { - var xdomeaXMLFile = findXdomeaXMLFile(incomingFileList); - var representationFileNames = valueReader.readRepresentationFileNames(xdomeaXMLFile); - var attachmentFileNames = getFileNamesExcluding( - incomingFileList, - Stream.concat(Stream.of(xdomeaXMLFile.getName()), representationFileNames.stream()) - ); - - var fileNameToFileMap = createFileNameToIncomingFileMap(incomingFileList); - return XdomeaMessageData.builder() - .metadataFile(xdomeaXMLFile) - .representations(getRepresentations(representationFileNames, fileNameToFileMap)) - .attachments(getAttachments(attachmentFileNames, fileNameToFileMap)) - .build(); - } - - private Map<String, IncomingFile> createFileNameToIncomingFileMap(List<IncomingFile> incomingFileList) { - return incomingFileList.stream() - .collect(Collectors.toMap(IncomingFile::getName, file -> file)); - } - - private Stream<String> getFileNamesExcluding(List<IncomingFile> incomingFileList, Stream<String> excludedFileNames) { - return dropNames( - incomingFileList.stream().map(IncomingFile::getName), - excludedFileNames.collect(Collectors.toSet()) - ); - } - - private List<IncomingFile> getRepresentations(List<String> representationFileNames, Map<String, IncomingFile> fileNameToFileMap) { - return getFilesByName( - movePrimaryRepresentationFileNameToFirstPosition(representationFileNames), - fileNameToFileMap - ); - } - - private List<IncomingFileGroup> getAttachments(Stream<String> attachmentFileNames, Map<String, IncomingFile> fileNameToFileMap) { - return Stream.of(IncomingFileGroup.builder() - .name(ATTACHMENT_GROUP_NAME) - .files( - getFilesByName( - attachmentFileNames, - fileNameToFileMap - ) - ) - .build()) - // Do not include empty attachment group - .filter(group -> !group.getFiles().isEmpty()) - .toList(); - } - - private Stream<String> movePrimaryRepresentationFileNameToFirstPosition(List<String> representationFileNames) { - var primaryRepresentationFileName = findPrimaryRepresentationName(representationFileNames); - return Stream.concat( - Stream.of(primaryRepresentationFileName), - dropNames(representationFileNames.stream(), Set.of(primaryRepresentationFileName)) - ); - } - - private List<IncomingFile> getFilesByName(Stream<String> names, Map<String, IncomingFile> fileNameToFileMap) { - return names.map(fileNameToFileMap::get).toList(); - } - - private Stream<String> dropNames(Stream<String> names, Set<String> namesToDrop) { - return names.filter(name -> !namesToDrop.contains(name)); - } - - String findPrimaryRepresentationName(List<String> representationFileNames) { - var xmlFileNames = representationFileNames.stream() - .filter(name -> name.endsWith(".xml")) - .toList(); - if (xmlFileNames.isEmpty()) { - throw new TechnicalException("No xml representation file name found!"); - } else if (xmlFileNames.size() > 1) { - LOG.warn("There is more than one xml representations. Choosing the first of {}.", xmlFileNames.size()); - } - return xmlFileNames.getFirst(); - } - - IncomingFile findXdomeaXMLFile(List<IncomingFile> incomingFileList) { - return incomingFileList.stream() - .filter(file -> file.getName().endsWith(XDOMEA_0201_XML_FILE_NAME_SUFFIX)) - .findFirst() - .orElseThrow(() -> new TechnicalException("Primary xdomea xml representation not found!")); - } - -} diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xdomea/XdomeaXMLValueReader.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xdomea/XdomeaXMLValueReader.java deleted file mode 100644 index a94e189b..00000000 --- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xdomea/XdomeaXMLValueReader.java +++ /dev/null @@ -1,64 +0,0 @@ -package de.ozgcloud.eingang.xdomea; - -import static de.ozgcloud.eingang.xdomea.XMLHelper.*; - -import java.util.List; -import java.util.stream.IntStream; -import java.util.stream.Stream; - -import javax.xml.xpath.XPathConstants; -import javax.xml.xpath.XPathExpression; -import javax.xml.xpath.XPathExpressionException; - -import org.springframework.stereotype.Component; -import org.w3c.dom.Element; -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; - -import de.ozgcloud.eingang.common.errorhandling.TechnicalException; -import de.ozgcloud.eingang.common.formdata.IncomingFile; - -@Component -public class XdomeaXMLValueReader { - - private static final String DATEINAME_NODE_QUERY_STRING = "//Hauptobjekt//Dateiname"; - // Interpret XML-Attachments as representations - // XML filetype code: 030 (see https://www.xrepository.de/details/urn:xoev-de:xdomea:codeliste:dateiformat) - private static final String DATEINAME_NODE_FOR_XML_ANHANG_QUERY_STRING = "//Anlage//Format/Name[contains(., '030')]/..//Dateiname"; - private static final XPathExpression DATEINAME_NODE_QUERY = compileXPathExpression( - DATEINAME_NODE_QUERY_STRING + "|" + DATEINAME_NODE_FOR_XML_ANHANG_QUERY_STRING); - - public List<String> readRepresentationFileNames(IncomingFile xdomeaXMLFile) { - return getTextsFromNodes( - queryDateinameNodeList( - XMLHelper.parseDocument(xdomeaXMLFile) - .getDocumentElement() - ) - ); - } - - private NodeList queryDateinameNodeList(Element contextElement) { - try { - return (NodeList) DATEINAME_NODE_QUERY - .evaluate( - contextElement, - XPathConstants.NODESET - ); - } catch (XPathExpressionException e) { - throw new TechnicalException("Failed to execute xpath search!", e); - } - } - - private List<String> getTextsFromNodes(NodeList nodeList) { - return streamNodeList(nodeList) - .map(Node::getTextContent) - .map(String::trim) - .toList(); - } - - private Stream<Node> streamNodeList(NodeList nodeList) { - return IntStream.range(0, nodeList.getLength()) - .mapToObj(nodeList::item); - } - -} diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/MsgStatusListTypeAndHeaderResponse.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/MsgStatusListTypeAndHeaderResponse.java deleted file mode 100644 index aead2074..00000000 --- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/MsgStatusListTypeAndHeaderResponse.java +++ /dev/null @@ -1,19 +0,0 @@ -package de.ozgcloud.eingang.xta; - -import java.math.BigInteger; -import java.util.stream.Stream; - -import eu.osci.ws._2014._10.transport.MessageMetaData; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Getter; - -@AllArgsConstructor -@Getter -@Builder -class MsgStatusListTypeAndHeaderResponse { - private String msgBoxRequestID; - private boolean noMessageAvailable; - private BigInteger messageItemsPending; - private Stream<MessageMetaData> messages; -} \ No newline at end of file diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/RepresentationsAttachmentsPair.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/RepresentationsAttachmentsPair.java deleted file mode 100644 index 0639e78e..00000000 --- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/RepresentationsAttachmentsPair.java +++ /dev/null @@ -1,14 +0,0 @@ -package de.ozgcloud.eingang.xta; - -import java.util.List; - -import de.ozgcloud.eingang.common.formdata.IncomingFile; -import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; -import lombok.Builder; - -@Builder -public record RepresentationsAttachmentsPair( - List<IncomingFile> representations, - List<IncomingFileGroup> attachments -) { -} diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/WsHeaderAddingInterceptor.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/WsHeaderAddingInterceptor.java deleted file mode 100644 index f0ae4deb..00000000 --- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/WsHeaderAddingInterceptor.java +++ /dev/null @@ -1,75 +0,0 @@ -package de.ozgcloud.eingang.xta; - -import java.util.Objects; - -import jakarta.xml.bind.JAXBContext; -import jakarta.xml.bind.JAXBElement; -import jakarta.xml.bind.JAXBException; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; -import org.springframework.ws.client.WebServiceClientException; -import org.springframework.ws.client.support.interceptor.ClientInterceptor; -import org.springframework.ws.context.MessageContext; -import org.springframework.ws.soap.SoapMessage; - -import de.ozgcloud.eingang.common.errorhandling.TechnicalException; -import eu.osci.ws._2014._10.transport.OriginatorsType; -import eu.osci.ws._2014._10.transport.PartyIdentifierType; -import eu.osci.ws._2014._10.transport.PartyType; - -@Component -class WsHeaderAddingInterceptor implements ClientInterceptor { - - @Autowired - private XtaCurrentIdentifierService xtaCurrentIdentifierService; - - @Override - public boolean handleRequest(MessageContext messageContext) throws WebServiceClientException { - var soapMessage = (SoapMessage) messageContext.getRequest(); - var header = soapMessage.getSoapHeader(); - - try { - JAXBContext context = JAXBContext.newInstance(PartyType.class); - var marshaller = context.createMarshaller(); - marshaller.marshal(createAuthor(), header.getResult()); - } catch (JAXBException e) { - throw new TechnicalException("Error on handling Request for adding Header.", e); - } - - return true; - } - - JAXBElement<PartyType> createAuthor() { - eu.osci.ws._2014._10.transport.ObjectFactory objectFactory = new eu.osci.ws._2014._10.transport.ObjectFactory(); - - PartyType partyType = new PartyType(); - PartyIdentifierType identifier = new PartyIdentifierType(); - identifier.setValue(Objects.requireNonNull( - xtaCurrentIdentifierService.getCurrentIdentifier(), - "Expect current identifier to be set!") - ); - partyType.setIdentifier(identifier); - - var origin = new OriginatorsType(); - origin.setAuthor(partyType); - - return objectFactory.createAuthor(partyType); - } - - @Override - public boolean handleResponse(MessageContext messageContext) throws WebServiceClientException { - return true; - } - - @Override - public boolean handleFault(MessageContext messageContext) throws WebServiceClientException { - return true; - } - - @Override - public void afterCompletion(MessageContext messageContext, Exception ex) throws WebServiceClientException { - // nothing to do here - } - -} diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaCurrentIdentifierService.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaCurrentIdentifierService.java deleted file mode 100644 index f5f6b25a..00000000 --- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaCurrentIdentifierService.java +++ /dev/null @@ -1,28 +0,0 @@ -package de.ozgcloud.eingang.xta; - -import java.util.List; - -import jakarta.validation.Valid; - -import org.springframework.stereotype.Service; - -import lombok.Getter; -import lombok.RequiredArgsConstructor; -import lombok.Setter; - -@Service -@RequiredArgsConstructor -public class XtaCurrentIdentifierService { - - @Setter - @Getter - private String currentIdentifier; - - @Valid - private final XtaProperties properties; - - public List<String> getIdentifiers() { - return properties.getIdentifiers(); - } - -} diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaFile.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaFile.java deleted file mode 100644 index 56004207..00000000 --- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaFile.java +++ /dev/null @@ -1,14 +0,0 @@ -package de.ozgcloud.eingang.xta; - -import java.io.File; -import java.math.BigInteger; - -import lombok.Builder; - -@Builder -public record XtaFile(File file, - String contentType, - String name, - BigInteger size) { - -} diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaIncomingFilesMapper.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaIncomingFilesMapper.java deleted file mode 100644 index 891512d2..00000000 --- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaIncomingFilesMapper.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch das - * Ministerium für Energiewende, Klimaschutz, Umwelt und Natur - * Zentrales IT-Management - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ - -package de.ozgcloud.eingang.xta; - -import java.util.Collection; -import java.util.List; -import java.util.Objects; -import java.util.stream.Stream; - -import org.springframework.stereotype.Component; - -import de.ozgcloud.eingang.common.formdata.IncomingFile; -import de.ozgcloud.eingang.xta.zip.ZipFileExtractor; -import lombok.RequiredArgsConstructor; -import lombok.extern.log4j.Log4j2; - -@Log4j2 -@Component -@RequiredArgsConstructor -class XtaIncomingFilesMapper { - - private final ZipFileExtractor zipFileExtractor; - - public List<IncomingFile> toIncomingFiles(Collection<XtaFile> messageFiles) { - if (Objects.nonNull(messageFiles)) { - return messageFiles.stream() - .map(this::toIncomingFile) - .flatMap(this::tryToExtractZip) - .toList(); - } - return List.of(); - } - - IncomingFile toIncomingFile(XtaFile messageFile) { - return IncomingFile.builder() - .name(messageFile.name()) - .contentType(messageFile.contentType()) - .file(messageFile.file()) - .size(messageFile.file().length()) - .build(); - } - - Stream<IncomingFile> tryToExtractZip(IncomingFile incomingFile) { - try { - List<IncomingFile> extractedZips = zipFileExtractor.extractIncomingFilesSafely(incomingFile); - return extractedZips.stream(); - } catch (RuntimeException e) { - return Stream.of(incomingFile); - } - } -} diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMapperHelper.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMapperHelper.java deleted file mode 100644 index 5711cb57..00000000 --- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMapperHelper.java +++ /dev/null @@ -1,31 +0,0 @@ -package de.ozgcloud.eingang.xta; - -import lombok.AccessLevel; -import lombok.NoArgsConstructor; -import org.apache.commons.lang3.StringUtils; - -import java.time.ZonedDateTime; - -@NoArgsConstructor(access = AccessLevel.PRIVATE) -public class XtaMapperHelper { - - public static String getFormEngineName(XtaMessageMetaData metaData) { - if (StringUtils.equals(metaData.getMessageType(), XtaService.XDOMEA_0201_MESSAGE_TYPE)) { - // TODO OZG-5778 verify the correct engine name - return "XDOMEA"; - } - - if (StringUtils.startsWith(metaData.getMessageType(), XtaService.FIM_MESSAGE_TYPE_PREFIX)) { - return "FIM"; - } - return null; - } - - // TODO OZG-6176 Check if the problem can be fixed elsewhere - public static ZonedDateTime getCreatedAt(XtaMessageMetaData metaData) { - if (metaData.getOrigin() != null) { - return metaData.getOrigin(); - } - return ZonedDateTime.now(); - } -} diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessage.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessage.java deleted file mode 100644 index 2f51bd85..00000000 --- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessage.java +++ /dev/null @@ -1,19 +0,0 @@ -package de.ozgcloud.eingang.xta; - -import java.util.Collection; - -import lombok.Builder; -import lombok.Getter; -import lombok.Singular; - -@Builder(toBuilder = true) -@Getter -public class XtaMessage { - private String primaryFormDataMessage; - - private XtaMessageMetaData metaData; - @Singular - private Collection<XtaFile> messageFiles; - @Singular - private Collection<XtaFile> attachments; -} diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageId.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageId.java deleted file mode 100644 index e247f5f4..00000000 --- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageId.java +++ /dev/null @@ -1,14 +0,0 @@ -package de.ozgcloud.eingang.xta; - -import de.ozgcloud.common.datatype.StringBasedValue; - -public class XtaMessageId extends StringBasedValue { - - public XtaMessageId(String messageId) { - super(messageId); - } - - public static XtaMessageId from(String messageId) { - return new XtaMessageId(messageId); - } -} diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMapper.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMapper.java deleted file mode 100644 index 7fb082ce..00000000 --- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMapper.java +++ /dev/null @@ -1,50 +0,0 @@ -package de.ozgcloud.eingang.xta; - -import java.util.Optional; - -import org.mapstruct.Context; -import org.mapstruct.Mapper; -import org.mapstruct.Mapping; - -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.FormHeader; -import de.ozgcloud.eingang.common.formdata.FormMetaData; -import de.ozgcloud.eingang.common.vorgang.VorgangNummerSupplier; -import de.ozgcloud.eingang.semantik.enginebased.FilesMapperHelper; - -@Mapper(imports = { FilesMapperHelper.class, XtaMapperHelper.class }) -interface XtaMessageMapper { - int VORGANG_NUMMER_SUFFIX_LENGTH = 4; - - @Mapping(target = "antragsteller", ignore = true) - @Mapping(target = "formData", ignore = true) - @Mapping(target = "id", ignore = true) - @Mapping(target = "zustaendigeStelle", ignore = true) - @Mapping(target = "header", source = "metaData") - @Mapping(target = "numberOfAttachments", expression = "java(FilesMapperHelper.countAttachedFiles(representationsAttachmentsPair.attachments()))") - @Mapping(target = "numberOfRepresentations", dependsOn = "representations", expression = "java(representationsAttachmentsPair.representations().size())") - @Mapping(target = "representation", ignore = true) - @Mapping(target = "attachment", ignore = true) - @Mapping(target = "control.metaData", source = "metaData") - FormData toFormData(RepresentationsAttachmentsPair representationsAttachmentsPair, XtaMessageMetaData metaData, - @Context VorgangNummerSupplier vorgangNummerSupplier); - - @Mapping(target = "formId", source = "messageType") - @Mapping(target = "requestId", source = "messageId") - @Mapping(target = "vorgangNummer", expression = "java(vorgangNummerSupplier.get(VORGANG_NUMMER_SUFFIX_LENGTH))") - @Mapping(target = "serviceKonto", ignore = true) - @Mapping(target = "createdAt", expression = "java(XtaMapperHelper.getCreatedAt(metaData))") - @Mapping(target = "sender", constant = "XTA") - @Mapping(target = "channel", constant = "XTA") - @Mapping(target = "formName", ignore = true) - @Mapping(target = "formEngineName", expression = "java(XtaMapperHelper.getFormEngineName(metaData))") - FormHeader formHeaderFromMetaData(XtaMessageMetaData metaData, @Context VorgangNummerSupplier vorgangNummerSupplier); - - default String fromId(XtaMessageId id) { - return id.toString(); - } - - default Optional<FormMetaData> mapMetaData(XtaMessageMetaData value) { - return Optional.ofNullable(value); - } -} diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMetaData.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMetaData.java deleted file mode 100644 index 84fc3290..00000000 --- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMetaData.java +++ /dev/null @@ -1,59 +0,0 @@ -package de.ozgcloud.eingang.xta; - -import java.time.ZonedDateTime; - -import de.ozgcloud.eingang.common.formdata.FormMetaData; -import de.ozgcloud.eingang.common.formdata.IncomingFile; -import lombok.Builder; -import lombok.Getter; -import lombok.ToString; - -@Builder -@Getter -@ToString -class XtaMessageMetaData implements FormMetaData { - static final String SERVICE = "service"; - static final String MESSAGE_TYPE_ENTRY_NAME = "messageType"; - static final String MESSAGE_TYPE_LIST_VERSION = "messageTypeListVersion"; - static final String MESSAGE_ID_ENTRY_NAME = "messageId"; - static final String XTA_IDENTIFIER_ENTRY_NAME = "xtaIdentifier"; - - // MsgIdentification.MessageId - private XtaMessageId messageId; - - // DeliveryAttributes.origin - private ZonedDateTime origin; - // DeliveryAttributes.delivery - private ZonedDateTime delivery; - - // Qualifier.MessageType.code - private String messageType; - // Qualifier.MessageType.listVersion - private String messageTypeListVersion; - // Qualifier.Service - private String service; - - private String xtaIdentifier; - - private IncomingFile metaDataFile; - - @Override - public String getEntry(String name) { - switch (name) { - case MESSAGE_TYPE_ENTRY_NAME: - return getMessageType(); - case MESSAGE_TYPE_LIST_VERSION: - return getMessageTypeListVersion(); - case MESSAGE_ID_ENTRY_NAME: - return getMessageId().toString(); - case XTA_IDENTIFIER_ENTRY_NAME: - return getXtaIdentifier(); - case SERVICE: - return getService(); - - default: - return null; - } - } - -} diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMetaDataMapper.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMetaDataMapper.java deleted file mode 100644 index f5566e15..00000000 --- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMetaDataMapper.java +++ /dev/null @@ -1,36 +0,0 @@ -package de.ozgcloud.eingang.xta; - -import java.util.stream.Stream; - -import jakarta.xml.bind.JAXBElement; - -import org.mapstruct.Mapper; -import org.mapstruct.Mapping; - -import eu.osci.ws._2008._05.transport.MsgStatusListType; -import eu.osci.ws._2014._10.transport.MessageMetaData; - -@Mapper -interface XtaMessageMetaDataMapper { - - @Mapping(target = "messageTypeListVersion", ignore = true) - @Mapping(target = "metaDataFile", ignore = true) - @Mapping(target = "service", ignore = true) - @Mapping(target = "origin", source = "deliveryAttributes.origin") - @Mapping(target = "delivery", source = "deliveryAttributes.delivery") - @Mapping(target = "messageId", source = "msgIdentification.messageID.value") - @Mapping(target = "messageType", source = "qualifier.messageType.code") - @Mapping(target = "xtaIdentifier", source = "destinations.reader.identifier.value") - XtaMessageMetaData fromSoap(MessageMetaData metaData); - - default XtaMessageId fromString(String id) { - return XtaMessageId.from(id); - } - - @Mapping(target = "moreMessagesAvailable", constant = "false") - XtaMessageMetaDatasAndHeader msgStatusListFromSoap(MsgStatusListTypeAndHeaderResponse statusList); - - default Stream<XtaMessageMetaData> map(JAXBElement<MsgStatusListType> msgStatusListResponse) { - return msgStatusListResponse.getValue().getMessageMetaData().stream().map(this::fromSoap); - } -} diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMetaDatasAndHeader.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMetaDatasAndHeader.java deleted file mode 100644 index ff04d5df..00000000 --- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMetaDatasAndHeader.java +++ /dev/null @@ -1,15 +0,0 @@ -package de.ozgcloud.eingang.xta; - -import java.util.stream.Stream; - -import lombok.Builder; -import lombok.Getter; - -@Builder -@Getter -class XtaMessageMetaDatasAndHeader { - - private String msgBoxRequestID; - private boolean moreMessagesAvailable; - private Stream<XtaMessageMetaData> messages; -} diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMetadataRemoteIterator.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMetadataRemoteIterator.java deleted file mode 100644 index b12ce91b..00000000 --- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMetadataRemoteIterator.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.xta; - -import java.util.Iterator; - -public class XtaMessageMetadataRemoteIterator implements Iterator<XtaMessageMetaData> { - - private final XtaRemoteService xtaRemoteService; - private XtaMessageMetaDatasAndHeader messagesMetadata; - private Iterator<XtaMessageMetaData> remoteMessageIterator; - - public XtaMessageMetadataRemoteIterator(XtaRemoteService xtaRemoteService) { - this.xtaRemoteService = xtaRemoteService; - messagesMetadata = this.xtaRemoteService.getMessagesMetadata(); - remoteMessageIterator = getRemoteMessageIterator(messagesMetadata); - } - - @Override - public boolean hasNext() { - if (remoteMessageIterator.hasNext()) { - return true; - } - if (messagesMetadata.isMoreMessagesAvailable()) { - loadNextMessages(); - return remoteMessageIterator.hasNext(); - } - return false; - } - - void loadNextMessages() { - messagesMetadata = xtaRemoteService.getNextMessagesMetadata(messagesMetadata.getMsgBoxRequestID()); - remoteMessageIterator = getRemoteMessageIterator(messagesMetadata); - } - - Iterator<XtaMessageMetaData> getRemoteMessageIterator(XtaMessageMetaDatasAndHeader messagesMetadata) { - return messagesMetadata.getMessages().iterator(); - } - - @Override - public XtaMessageMetaData next() { - return remoteMessageIterator.next(); - } -} diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaProperties.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaProperties.java deleted file mode 100644 index 23a4e4bc..00000000 --- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaProperties.java +++ /dev/null @@ -1,85 +0,0 @@ -package de.ozgcloud.eingang.xta; - -import java.math.BigInteger; -import java.net.URI; -import java.util.List; - -import jakarta.validation.constraints.NotEmpty; -import jakarta.validation.constraints.NotNull; - -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.context.annotation.Configuration; -import org.springframework.core.io.Resource; -import org.springframework.stereotype.Component; -import org.springframework.validation.annotation.Validated; - -import lombok.Getter; -import lombok.Setter; -import lombok.ToString; - -@Validated -@ToString -@Setter -@Getter -@Configuration -@ConfigurationProperties(prefix = XtaProperties.PROPERTIES_PREFIX) -class XtaProperties { - static final String PROPERTIES_PREFIX = "ozgcloud.xta"; - - private Server server; - private BigInteger maxListElements; - - private KeyStore keyStore; - private Actions actions; - @NotEmpty - private List<String> identifiers; -} - -@Validated -@ToString -@Getter -@Setter -@Component -@ConfigurationProperties(prefix = Server.PROPERTIES_PREFIX) -class Server { - static final String PROPERTIES_PREFIX = XtaProperties.PROPERTIES_PREFIX + ".server"; - - @NotEmpty - private String name; - private String address; - @NotEmpty - private String protocol; -} - -@Validated -@ToString -@Getter -@Setter -@Component -@ConfigurationProperties(prefix = KeyStore.PROPERTIES_PREFIX) -class KeyStore { - static final String PROPERTIES_PREFIX = XtaProperties.PROPERTIES_PREFIX + ".keystore"; - - @NotNull - private Resource file; - private String type = "PKCS12"; - @NotEmpty - private char[] password; -} - -@Validated -@ToString -@Setter -@Getter -@Configuration -@ConfigurationProperties(prefix = Actions.PROPERTIES_PREFIX) -class Actions { - static final String PROPERTIES_PREFIX = XtaProperties.PROPERTIES_PREFIX + ".actions"; - - @NotNull - private URI statusList; - @NotNull - private URI fetchRequest; - @NotNull - private URI closeRequest; -} diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaRemoteService.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaRemoteService.java deleted file mode 100644 index a837c55d..00000000 --- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaRemoteService.java +++ /dev/null @@ -1,296 +0,0 @@ -package de.ozgcloud.eingang.xta; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.net.URI; -import java.net.URISyntaxException; -import java.util.Collections; -import java.util.Iterator; -import java.util.stream.Stream; - -import javax.xml.namespace.QName; -import javax.xml.transform.TransformerException; - -import jakarta.validation.Valid; -import jakarta.xml.bind.JAXBElement; - -import org.apache.commons.io.IOUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.boot.webservices.client.WebServiceTemplateBuilder; -import org.springframework.oxm.jaxb.Jaxb2Marshaller; -import org.springframework.stereotype.Service; -import org.springframework.ws.WebServiceMessage; -import org.springframework.ws.client.core.WebServiceMessageCallback; -import org.springframework.ws.client.core.WebServiceMessageExtractor; -import org.springframework.ws.soap.SoapFaultDetailElement; -import org.springframework.ws.soap.SoapHeader; -import org.springframework.ws.soap.SoapHeaderElement; -import org.springframework.ws.soap.SoapMessage; -import org.springframework.ws.soap.addressing.client.ActionCallback; -import org.springframework.ws.soap.addressing.version.Addressing10; -import org.springframework.ws.soap.client.SoapFaultClientException; -import org.springframework.ws.support.MarshallingUtils; -import org.w3._2005._08.addressing.AttributedURIType; - -import de.ozgcloud.eingang.common.errorhandling.TechnicalException; -import de.xoev.transport.xta._211.ContentType; -import de.xoev.transport.xta._211.ExceptionType; -import de.xoev.transport.xta._211.GenericContentContainer; -import eu.osci.ws._2008._05.transport.MsgBoxCloseRequestType; -import eu.osci.ws._2008._05.transport.MsgBoxFetchRequest; -import eu.osci.ws._2008._05.transport.MsgBoxGetNextRequestType; -import eu.osci.ws._2008._05.transport.MsgBoxResponseType; -import eu.osci.ws._2008._05.transport.MsgBoxStatusListRequestType; -import eu.osci.ws._2008._05.transport.MsgSelector; -import eu.osci.ws._2008._05.transport.MsgStatusListType; -import eu.osci.ws._2008._05.transport.ObjectFactory; -import eu.osci.ws._2014._10.transport.MessageMetaData; -import lombok.NonNull; -import lombok.extern.log4j.Log4j2; - -@Log4j2 -@Service -class XtaRemoteService { - - private static final String ERROR_ON_CLOSE_LOG_TEMPLATE = "Error result on close request.\nReason: %s"; - private static final String DETAIL_LOG_TEMPLATE = "Code: %s, Message: %s"; - - @Autowired - @Valid - private XtaProperties properties; - - @Autowired - private XtaMessageMetaDataMapper mapper; - - @Autowired - private WebServiceTemplateBuilder webServiceTemplateBuilder; - - @Autowired - @Qualifier("osciTransportMarshaller") - private Jaxb2Marshaller osciMarshaller; - - @Autowired - @Qualifier("xoevTransportMarshaller") - private Jaxb2Marshaller xoevMarshaller; - - public XtaMessageMetaDatasAndHeader getMessagesMetadata() { - return mapper.msgStatusListFromSoap(getStatusList()); - } - - public XtaMessageMetaDatasAndHeader getNextMessagesMetadata(String msgBoxRequestId) { - return mapper.msgStatusListFromSoap(getNextStatusList(msgBoxRequestId)); - } - - MsgStatusListTypeAndHeaderResponse getStatusList() { - var request = buildListRequest(); - return getGenericStatusList(request); - } - - MsgStatusListTypeAndHeaderResponse getNextStatusList(String msgBoxRequestId) { - var request = buildNextListRequest(msgBoxRequestId); - return getGenericStatusList(request); - } - - MsgStatusListTypeAndHeaderResponse getGenericStatusList(Object request) { - var template = webServiceTemplateBuilder.setMarshaller(osciMarshaller).setUnmarshaller(osciMarshaller).build(); - - return template.sendAndReceive(buildMarshalCallBack(request, buildActionCallback()), buildHeaderExtractor()); - } - - private ActionCallback buildActionCallback() { - return new ActionCallback(properties.getActions().getStatusList(), new Addressing10(), getTargetUri()); - } - - WebServiceMessageCallback buildMarshalCallBack(Object jaxbElement, ActionCallback callback) { - return new WebServiceMessageCallback() { - @Override - public void doWithMessage(WebServiceMessage message) throws IOException, TransformerException { - MarshallingUtils.marshal(osciMarshaller, jaxbElement, message); - callback.doWithMessage(message); - } - }; - } - - WebServiceMessageExtractor<MsgStatusListTypeAndHeaderResponse> buildHeaderExtractor() { - return new WebServiceMessageExtractor<MsgStatusListTypeAndHeaderResponse>() { - @Override - public MsgStatusListTypeAndHeaderResponse extractData(WebServiceMessage message) throws IOException, TransformerException { - - MsgBoxResponseType header = extractHeader(message); - - return MsgStatusListTypeAndHeaderResponse.builder() - .msgBoxRequestID(header.getMsgBoxRequestID()) - .noMessageAvailable(header.getNoMessageAvailable() != null) - .messageItemsPending(header.getItemsPending()) - .messages(extractMessages(message)) - .build(); - } - - @SuppressWarnings("unchecked") - private MsgBoxResponseType extractHeader(WebServiceMessage message) { - SoapHeader soapHeader = ((SoapMessage) message).getSoapHeader(); - Iterator<SoapHeaderElement> it = soapHeader - .examineHeaderElements(new QName("http://www.osci.eu/ws/2008/05/transport", "MsgBoxResponse")); - validateHasHeader(it); - return ((JAXBElement<MsgBoxResponseType>) osciMarshaller.unmarshal(it.next().getSource())).getValue(); - } - - private void validateHasHeader(Iterator<SoapHeaderElement> it) { - if (!it.hasNext()) { - throw new TechnicalException("Response from XTA GetStatusList has no header"); - } - } - - @SuppressWarnings("unchecked") - private Stream<MessageMetaData> extractMessages(WebServiceMessage message) throws IOException { - return ((JAXBElement<MsgStatusListType>) MarshallingUtils.unmarshal(osciMarshaller, message)).getValue().getMessageMetaData() - .stream(); - } - }; - } - - private JAXBElement<MsgBoxStatusListRequestType> buildListRequest() { - ObjectFactory objectFactory = new ObjectFactory(); - - MsgBoxStatusListRequestType msg = new MsgBoxStatusListRequestType(); - msg.setMaxListItems(properties.getMaxListElements()); - return objectFactory.createMsgBoxStatusListRequest(msg); - } - - private JAXBElement<MsgBoxGetNextRequestType> buildNextListRequest(String msgBoxRequestId) { - ObjectFactory objectFactory = new ObjectFactory(); - - MsgBoxGetNextRequestType msg = new MsgBoxGetNextRequestType(); - msg.setMsgBoxRequestID(msgBoxRequestId); - return objectFactory.createMsgBoxGetNextRequest(msg); - } - - private URI getTargetUri() { - try { - return new URI(buildServerAddressUri()); - } catch (URISyntaxException e) { - throw new TechnicalException("Error building target url: " + e); - } - } - - String buildServerAddressUri() { - return XtaRemoteServiceConfiguration.URI_TEMPLATE.formatted(properties.getServer().getProtocol(), - properties.getServer().getName()); - } - - public XtaMessage getMessage(XtaMessageId messageId) { - var contentContainer = loadContentContainer(messageId.toString()); - XtaFile formDataFile = getMessage(contentContainer); - - return XtaMessage.builder() - .metaData(null) - .primaryFormDataMessage(formDataFile.name()) - .messageFiles(Collections.singleton(formDataFile)) - .attachments(getAttachments(contentContainer).toList()) - .build(); - } - - GenericContentContainer loadContentContainer(String messageId) { - var callback = new ActionCallback(properties.getActions().getFetchRequest(), new Addressing10(), getTargetUri()); - var template = webServiceTemplateBuilder.setMarshaller(osciMarshaller).setUnmarshaller(xoevMarshaller).build(); - - return (GenericContentContainer) template.marshalSendAndReceive(buildFetchRequest(messageId), callback); - } - - XtaFile getMessage(GenericContentContainer container) { - return toXtaFile(container.getContentContainer().getMessage()); - } - - Stream<XtaFile> getAttachments(GenericContentContainer container) { - return container.getContentContainer().getAttachment().stream().map(this::toXtaFile); - } - - private XtaFile toXtaFile(ContentType type) { - return XtaFile.builder() - .file(persistToFile(type.getValue())) - .name(type.getFilename()) - .contentType(type.getContentType()) - .size(type.getSize()) - .build(); - } - - private File persistToFile(byte[] data) { - try { - var file = File.createTempFile("xta", ".data"); - file.deleteOnExit(); - var out = new FileOutputStream(file); - IOUtils.write(data, out); - out.flush(); - out.close(); - return file; - } catch (IOException e) { - throw new TechnicalException("Error writing Attachment to temp file", e); - } - } - - private JAXBElement<MsgBoxFetchRequest> buildFetchRequest(String msgId) { - MsgSelector msgSelector = new MsgSelector(); - AttributedURIType attribute = new AttributedURIType(); - attribute.setValue(msgId); - msgSelector.getMessageID().add(attribute); - - var request = new MsgBoxFetchRequest(); - request.setMsgSelector(msgSelector); - - return wrapAsJaxBElemement(request); - } - - private JAXBElement<MsgBoxFetchRequest> wrapAsJaxBElemement(MsgBoxFetchRequest request) { - QName qname = new QName("http://www.osci.eu/ws/2008/05/transport", "MsgBoxFetchRequest"); - - return new JAXBElement<>(qname, MsgBoxFetchRequest.class, request); - } - - public void close(@NonNull XtaMessageId messageId) { - var callback = new ActionCallback(properties.getActions().getCloseRequest(), new Addressing10(), getTargetUri()); - var template = webServiceTemplateBuilder.setMarshaller(osciMarshaller).setUnmarshaller(xoevMarshaller).build(); - - try { - template.marshalSendAndReceive(buildCloseRequest(messageId.toString()), callback); - } catch (SoapFaultClientException e) { - logErrorOnClose(e); - } - } - - private JAXBElement<MsgBoxCloseRequestType> buildCloseRequest(String msgId) { - MsgBoxCloseRequestType request = new MsgBoxCloseRequestType(); - var lastMsgReceived = request.getLastMsgReceived(); - - AttributedURIType attribute = new AttributedURIType(); - attribute.setValue(msgId); - lastMsgReceived.add(attribute); - - return new ObjectFactory().createMsgBoxCloseRequest(request); - } - - private void logErrorOnClose(SoapFaultClientException e) { - try { - var fault = e.getSoapFault(); - StringBuilder logBuilder = new StringBuilder(ERROR_ON_CLOSE_LOG_TEMPLATE.formatted(e.getSoapFault().getFaultStringOrReason())); - - var entries = fault.getFaultDetail().getDetailEntries(); - entries.forEachRemaining(entry -> logBuilder.append("\n").append(formatFaultEntry(entry))); - - LOG.error(logBuilder.toString(), e); - } catch (Exception e1) { - LOG.error("Error on loggging close error", e1); - LOG.error("origin error was", e); - } - } - - private String formatFaultEntry(SoapFaultDetailElement soapfaultdetailelement1) { - @SuppressWarnings("unchecked") - ExceptionType exceptionType = ((JAXBElement<ExceptionType>) xoevMarshaller.unmarshal(soapfaultdetailelement1.getSource())).getValue(); - - return DETAIL_LOG_TEMPLATE.formatted(exceptionType.getErrorCode().getCode(), exceptionType.getErrorCode().getName().toString()); - - } - -} diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaRemoteServiceConfiguration.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaRemoteServiceConfiguration.java deleted file mode 100644 index 8668263d..00000000 --- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaRemoteServiceConfiguration.java +++ /dev/null @@ -1,126 +0,0 @@ -package de.ozgcloud.eingang.xta; - -import java.io.IOException; -import java.io.InputStream; -import java.net.URI; -import java.net.URISyntaxException; -import java.security.KeyStore; -import java.security.KeyStoreException; -import java.security.NoSuchAlgorithmException; -import java.security.cert.CertificateException; - -import javax.net.ssl.KeyManagerFactory; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.webservices.client.WebServiceTemplateCustomizer; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.oxm.jaxb.Jaxb2Marshaller; -import org.springframework.ws.client.support.destination.DestinationProvider; -import org.springframework.ws.client.support.interceptor.ClientInterceptor; -import org.springframework.ws.soap.SoapVersion; -import org.springframework.ws.soap.saaj.SaajSoapMessageFactory; -import org.springframework.ws.transport.WebServiceMessageSender; -import org.springframework.ws.transport.http.HttpsUrlConnectionMessageSender; - -import de.ozgcloud.eingang.common.errorhandling.TechnicalException; -import lombok.extern.log4j.Log4j2; - -@Log4j2 -@Configuration -public class XtaRemoteServiceConfiguration { - - static final String URI_TEMPLATE = "%s://%s/MB_XTA-WS/XTA210msgBoxPort.svc"; - - @Autowired - private XtaProperties properties; - - @Bean - Jaxb2Marshaller osciTransportMarshaller() { - Jaxb2Marshaller marshaller = new Jaxb2Marshaller(); - marshaller.setContextPath("eu.osci.ws._2008._05.transport"); - marshaller.setMtomEnabled(true); - return marshaller; - } - - @Bean - Jaxb2Marshaller xoevTransportMarshaller() { - Jaxb2Marshaller unmarshaller = new Jaxb2Marshaller(); - unmarshaller.setContextPath("de.xoev.transport.xta._211"); - unmarshaller.setMtomEnabled(true); - return unmarshaller; - } - - @Bean - WebServiceTemplateCustomizer webServiceTemplateCustomizer() { - return template -> template.setMessageSender(messageSender()); - } - - @Bean - WebServiceTemplateCustomizer setMessageFactoryCustomizer() { - return template -> template.setMessageFactory(messageFactory()); - } - - @Bean - WebServiceTemplateCustomizer addingInterceptorCustomizer(WsHeaderAddingInterceptor interceptor) { - return template -> template.setInterceptors(new ClientInterceptor[] { interceptor }); - } - - @Bean - WebServiceTemplateCustomizer setDestionationProvider() { - return template -> template.setDestinationProvider(destinationProvider()); - } - - @Bean - DestinationProvider destinationProvider() { - return () -> { - try { - String serverUri = buildServerAddressUri(properties.getServer()); - LOG.trace("Xta Service remote URI: {}", serverUri); - return new URI(serverUri); - } catch (URISyntaxException e) { - throw new TechnicalException("Error building URI", e); - } - }; - } - - String buildServerAddressUri(Server server) { - return URI_TEMPLATE.formatted(server.getProtocol(), server.getAddress()); - } - - @Bean - SaajSoapMessageFactory messageFactory() { - SaajSoapMessageFactory messageFactory = new SaajSoapMessageFactory(); - messageFactory.setSoapVersion(SoapVersion.SOAP_12); - return messageFactory; - } - - @Bean - WebServiceMessageSender messageSender() { - try { - var keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); - keyManagerFactory.init(xtaKeyStore(), properties.getKeyStore().getPassword()); - - var messageSender1 = new HttpsUrlConnectionMessageSender(); - messageSender1.setKeyManagers(keyManagerFactory.getKeyManagers()); - messageSender1.setHostnameVerifier((hostname, session) -> true); // NOSONAR hostname verification is senseless due missing DNS for - // Dataport XTA Server - - return messageSender1; - } catch (Exception e) { - throw new TechnicalException("Error initializating message sender.", e); - } - } - - @Bean - KeyStore xtaKeyStore() throws KeyStoreException, CertificateException, NoSuchAlgorithmException, IOException { - var keyStoreResource = properties.getKeyStore().getFile(); - var keyStore = KeyStore.getInstance(properties.getKeyStore().getType()); - try (InputStream keyStoreStream = keyStoreResource.getInputStream()) { - keyStore.load(keyStoreStream, properties.getKeyStore().getPassword()); - } - - return keyStore; - } - -} diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaRunner.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaRunner.java deleted file mode 100644 index cc384b4c..00000000 --- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaRunner.java +++ /dev/null @@ -1,48 +0,0 @@ -package de.ozgcloud.eingang.xta; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.ApplicationListener; -import org.springframework.context.annotation.Profile; -import org.springframework.context.event.ContextRefreshedEvent; -import org.springframework.stereotype.Component; - -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.semantik.SemantikAdapter; -import lombok.NonNull; -import lombok.extern.log4j.Log4j2; - -@Profile({ "!itcase" }) -@Log4j2 -@Component -class XtaRunner implements ApplicationListener<ContextRefreshedEvent> { - - @Autowired - private XtaService service; - @Autowired - private SemantikAdapter semantikAdapter; - - @Override - public void onApplicationEvent(ContextRefreshedEvent event) { - LOG.info("Fetching XTA Messages"); - runGetXtaMessages(); - } - - void runGetXtaMessages() { - try { - service.getMessages().forEach(this::processAndAcknowledge); - } catch (RuntimeException e) { - LOG.error("Error fetch XTA Message List.", e); - } - } - - private void processAndAcknowledge(@NonNull FormData formData) { - try { - LOG.info("Process XTA-Message '{}'.", formData.getHeader().getRequestId()); - semantikAdapter.processFormData(formData); - service.acknowledgeReceive(XtaMessageId.from(formData.getHeader().getRequestId())); - } catch (RuntimeException e) { - LOG.error("Error on processing XTA-Message. Continue with next message.", e); - } - } - -} diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaService.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaService.java deleted file mode 100644 index 500e78da..00000000 --- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaService.java +++ /dev/null @@ -1,152 +0,0 @@ -package de.ozgcloud.eingang.xta; - -import static java.util.Collections.*; - -import java.util.Collection; -import java.util.List; -import java.util.Optional; -import java.util.Spliterators; -import java.util.stream.Stream; -import java.util.stream.StreamSupport; - -import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import de.ozgcloud.eingang.common.errorhandling.TechnicalException; -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.FormData.Representations; -import de.ozgcloud.eingang.common.formdata.IncomingFile; -import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; -import de.ozgcloud.eingang.common.vorgang.VorgangNummerSupplier; -import de.ozgcloud.eingang.xdomea.XdomeaMessageDataMapper; -import lombok.NonNull; -import lombok.extern.log4j.Log4j2; - -@Service -@Log4j2 -class XtaService { - - static final String XDOMEA_0201_MESSAGE_TYPE = "Geschaeftsgang.Geschaeftsgang.0201"; - - static final String FIM_MESSAGE_TYPE_PREFIX = "fim."; - - @Autowired - private XtaRemoteService remoteService; - @Autowired - private XtaMessageMapper mapper; - @Autowired - private VorgangNummerSupplier vorgangNummerSupplier; - @Autowired - private XdomeaMessageDataMapper xdomeaMessageDataMapper; - @Autowired - private XtaIncomingFilesMapper xtaIncomingFilesMapper; - @Autowired - private XtaCurrentIdentifierService service; - - public Stream<FormData> getMessages() { - return createXtaMessageStream() - .filter(this::isSupportedMessageType) - .map(this::getFormDataIfNoRuntimeException) - .flatMap(Optional::stream); - } - - Stream<XtaMessageMetaData> createXtaMessageStream() { - return service.getIdentifiers().stream() - .flatMap(this::createXtaMessageStreamForIdentifier); - } - - private Stream<XtaMessageMetaData> createXtaMessageStreamForIdentifier(String identifier) { - service.setCurrentIdentifier(identifier); - var iterator = new XtaMessageMetadataRemoteIterator(remoteService); - return StreamSupport.stream(Spliterators.spliteratorUnknownSize(iterator, 0), false); - } - - boolean isSupportedMessageType(XtaMessageMetaData metaData) { - if (isXDomeaMessageType(metaData.getMessageType()) || isFimMessageType(metaData.getMessageType())) { - return true; - } - LOG.warn("Ignoring XTA-Message of type '{}'.", metaData.getMessageType()); - return false; - } - - Optional<FormData> getFormDataIfNoRuntimeException(@NonNull XtaMessageMetaData metaData) { - try { - return Optional.of(getFormData(metaData)); - } catch (RuntimeException exception) { - LOG.error("Failed to process xta message (id: %s)".formatted(metaData.getMessageId()), exception); - return Optional.empty(); - } - } - - FormData getFormData(@NonNull XtaMessageMetaData metaData) { - var msg = remoteService.getMessage(metaData.getMessageId()); - var incomingFiles = xtaIncomingFilesMapper.toIncomingFiles(msg.getMessageFiles()); - var representationsAttachmentsPair = getRepresentationsAttachmentsPair(metaData, incomingFiles); - - var formData = mapper.toFormData(representationsAttachmentsPair, metaData, vorgangNummerSupplier); - formData = addAttachments(msg, formData); - - return addRepresentations(formData, msg); - } - - FormData addRepresentations(FormData formData, XtaMessage msg) { - return formData.toBuilder().control( - formData.getControl().toBuilder() - .representations(Optional.of(buildRepresentations(formData.getControl().getRepresentations(), msg))) - .build()) - .build(); - } - - private Representations buildRepresentations(Optional<Representations> base, XtaMessage msg) { - return base.map(Representations::toBuilder).orElseGet(Representations::builder) - .primaryFormDataRepresentation(msg.getPrimaryFormDataMessage()) - .build(); - } - - FormData addAttachments(XtaMessage msg, FormData inFormData) { - var attachments = buildAttachmentsInFiles(msg.getAttachments()); - if (CollectionUtils.isNotEmpty(attachments)) { - return inFormData.toBuilder() - .attachment(IncomingFileGroup.builder().name("sonstige").files(attachments).build()) - .numberOfAttachments(attachments.size()) - .build(); - } - return inFormData; - } - - private List<IncomingFile> buildAttachmentsInFiles(Collection<XtaFile> attachmentFiles) { - return attachmentFiles.stream().map(xtaIncomingFilesMapper::toIncomingFile).toList(); - } - - RepresentationsAttachmentsPair getRepresentationsAttachmentsPair(XtaMessageMetaData metaData, List<IncomingFile> incomingFiles) { - if (isXDomeaMessageType(metaData.getMessageType())) { - return xdomeaMessageDataMapper.mapIncomingFilesToRepresentationsAttachmentsPair(incomingFiles); - } - if (isFimMessageType(metaData.getMessageType())) { - return mapIncomingFilesToRepresentations(incomingFiles); - } - - throw new TechnicalException("Unexpected XTA message type: %s".formatted(metaData.getMessageType())); - } - - private boolean isXDomeaMessageType(String messageType) { - return StringUtils.equals(messageType, XDOMEA_0201_MESSAGE_TYPE); - } - - private boolean isFimMessageType(String messageType) { - return StringUtils.startsWith(messageType, FIM_MESSAGE_TYPE_PREFIX); - } - - RepresentationsAttachmentsPair mapIncomingFilesToRepresentations(List<IncomingFile> incomingFiles) { - return RepresentationsAttachmentsPair.builder() - .representations(incomingFiles) - .attachments(emptyList()) - .build(); - } - - public void acknowledgeReceive(@NonNull XtaMessageId messageId) { - remoteService.close(messageId); - } -} diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/zip/LimitedInputStream.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/zip/LimitedInputStream.java deleted file mode 100644 index ee5dc7a8..00000000 --- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/zip/LimitedInputStream.java +++ /dev/null @@ -1,42 +0,0 @@ -package de.ozgcloud.eingang.xta.zip; - -import java.io.FilterInputStream; -import java.io.IOException; -import java.io.InputStream; - -public class LimitedInputStream extends FilterInputStream { - static final String LIMITED_EXCEEDED_MESSAGE = "Read limit exceeded"; - - private final long maxSize; - long bytesRead; - - public LimitedInputStream(InputStream in, long maxSize) { - super(in); - this.maxSize = maxSize; - this.bytesRead = 0; - } - - @Override - public int read() throws IOException { - var byteValue = super.read(); - if (byteValue != -1) { - updateAndVerifyReadLimit(1); - } - return byteValue; - } - - @Override - public int read(byte[] b, int off, int len) throws IOException { - return updateAndVerifyReadLimit(super.read(b, off, len)); - } - - private int updateAndVerifyReadLimit(int newBytesRead) throws IOException { - if (newBytesRead != -1) { - bytesRead += newBytesRead; - if (bytesRead > maxSize) { - throw new IOException(LIMITED_EXCEEDED_MESSAGE); - } - } - return newBytesRead; - } -} diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/zip/ReadableZipEntry.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/zip/ReadableZipEntry.java deleted file mode 100644 index fec9014c..00000000 --- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/zip/ReadableZipEntry.java +++ /dev/null @@ -1,28 +0,0 @@ -package de.ozgcloud.eingang.xta.zip; - -import java.io.IOException; -import java.io.InputStream; -import java.util.zip.ZipEntry; -import java.util.zip.ZipFile; - -import de.ozgcloud.eingang.common.errorhandling.TechnicalException; -import lombok.Builder; - -@Builder -record ReadableZipEntry(ZipEntry zipEntry, ZipFile parentZip) { - public InputStream getInputStream() throws IOException { - return parentZip.getInputStream(zipEntry); - } - - public Long getPositiveSize() { - var size = zipEntry.getSize(); - if (size < 0) { - throw new TechnicalException("Size of ZIP entry is unknown."); - } - return size; - } - - public String getName() { - return zipEntry.getName(); - } -} diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/zip/ZipFileExtractor.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/zip/ZipFileExtractor.java deleted file mode 100644 index 8f162061..00000000 --- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/zip/ZipFileExtractor.java +++ /dev/null @@ -1,119 +0,0 @@ -package de.ozgcloud.eingang.xta.zip; - -import java.io.File; -import java.io.IOException; -import java.net.URLConnection; -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; -import java.util.concurrent.atomic.AtomicInteger; -import java.util.function.Function; -import java.util.zip.ZipEntry; -import java.util.zip.ZipFile; - -import org.springframework.stereotype.Component; -import org.springframework.util.MimeTypeUtils; - -import de.ozgcloud.common.binaryfile.TempFileUtils; -import de.ozgcloud.eingang.common.errorhandling.TechnicalException; -import de.ozgcloud.eingang.common.formdata.IncomingFile; - -// TODO Resolve code duplication with ZipAttachmentReader in semantik-adapter common.zip -// Note: In contrast to the ZipAttachmentReader, here, the zip file is not included in list of extracted files -// Further, the suspicious compression ratio ZIP_MAX_THRESHOLD is evaluated on the whole zipFile, instead of individual entries -@Component -public class ZipFileExtractor { - - static final double ZIP_MAX_THRESHOLD = 100; - static final int ZIP_MAX_TOTAL_SIZE = 500 * 1024 * 1024; - static final int ZIP_MAX_ENTRIES = 100; - - public List<IncomingFile> extractIncomingFilesSafely(IncomingFile zipIncomingFile) { - var zipFile = zipIncomingFile.getFile(); - verifyLimits(zipFile); - return extractIncomingFiles(zipFile); - } - - void verifyLimits(File zipFile) { - var uncompressedSize = sumUncompressedEntrySizes(zipFile); - verifySizeLimit(uncompressedSize); - verifyCompressionRatio(zipFile, uncompressedSize); - } - - private void verifySizeLimit(long uncompressedSize) { - if (uncompressedSize > getZipMaxTotalSize()) { - throw new TechnicalException("Expect uncompressed size %s to be smaller than %d!".formatted(uncompressedSize, getZipMaxTotalSize())); - } - } - - private void verifyCompressionRatio(File zipFile, long totalSize) { - var compressionRatio = (double) totalSize / zipFile.length(); - if (compressionRatio > ZIP_MAX_THRESHOLD) { - throw new TechnicalException( - "Expect compression ratio %s to be smaller than %s! A zip bomb attack is suspected!".formatted(compressionRatio, - ZIP_MAX_THRESHOLD)); - } - } - - int getZipMaxTotalSize() { - return ZIP_MAX_TOTAL_SIZE; - } - - Long sumUncompressedEntrySizes(File zipFile) { - return mapZipEntries(zipFile, ReadableZipEntry::getPositiveSize) - .stream() - .mapToLong(Long::longValue) - .sum(); - } - - List<IncomingFile> extractIncomingFiles(File zipFile) { - return mapZipEntries(zipFile, this::mapReadableEntryToIncomingFile); - } - - private IncomingFile mapReadableEntryToIncomingFile(ReadableZipEntry entry) { - File file; - try (var inputStream = new LimitedInputStream(entry.getInputStream(), entry.getPositiveSize())) { - file = TempFileUtils.writeTmpFile(inputStream); - } catch (IOException | de.ozgcloud.common.errorhandling.TechnicalException e) { - throw new TechnicalException("Failed reading zip file element %s!".formatted(entry.getName()), e); - } - return createIncomingFile(file, entry.zipEntry()); - } - - <T> List<T> mapZipEntries(File zipFile, Function<ReadableZipEntry, T> mappingFunction) { - try (ZipFile zip = new ZipFile(zipFile)) { - var index = new AtomicInteger(); - var mappedElements = new ArrayList<T>(); - zip.stream().forEach(element -> { - if (index.getAndIncrement() >= ZIP_MAX_ENTRIES) { - throw new TechnicalException("Expect zip files to have at most %d entries!".formatted(ZIP_MAX_ENTRIES)); - } - mappedElements.add( - mappingFunction.apply( - ReadableZipEntry.builder() - .parentZip(zip) - .zipEntry(element) - .build() - ) - ); - }); - return mappedElements; - } catch (IOException e) { - throw new TechnicalException("Failed reading zip file!", e); - } - } - - IncomingFile createIncomingFile(File file, ZipEntry zipEntry) { - return IncomingFile.builder() - .name(zipEntry.getName()) - .size(zipEntry.getSize()) - .contentType(getContentType(zipEntry.getName())) - .file(file) - .build(); - } - - String getContentType(String name) { - Objects.requireNonNull(name); - return Objects.requireNonNullElse(URLConnection.guessContentTypeFromName(name), MimeTypeUtils.APPLICATION_OCTET_STREAM_VALUE); - } -} diff --git a/xta-adapter/src/main/resources/XTA.wsdl b/xta-adapter/src/main/resources/XTA.wsdl deleted file mode 100644 index d7ca5a36..00000000 --- a/xta-adapter/src/main/resources/XTA.wsdl +++ /dev/null @@ -1,620 +0,0 @@ -<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://xoev.de/transport/xta/211" - xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" - xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" - xmlns:xsd="http://www.w3.org/2001/XMLSchema" - xmlns:wsa="http://www.w3.org/2005/08/addressing" - xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap12/" - xmlns:wspmtom="http://schemas.xmlsoap.org/ws/2004/09/policy/optimizedmimeserialization" - xmlns:osci="http://www.osci.eu/ws/2008/05/transport" - xmlns:wsp="http://www.w3.org/ns/ws-policy" - xmlns:oscimeta="http://www.osci.eu/ws/2014/10/transport" - xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" - xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702" - xmlns:s12="http://www.w3.org/2003/05/soap-envelope" - xmlns:xta="http://xoev.de/transport/xta/211" name="XTA-Webservice"> - <wsp:Policy wsu:Id="osciCommon"> - <!--###### general osci policies ##########--> - <wsp:All> - <wsam:Addressing wsp:Optional="false"> - <wsp:Policy> - <wsam:AnonymousResponses/> - </wsp:Policy> - </wsam:Addressing> - <wspmtom:OptimizedMimeSerialization/> - <sp:Wss11> - <wsp:Policy> - <sp:MustSupportRefKeyIdentifier/> - <sp:MustSupportRefIssuerSerial/> - <sp:MustSupportRefThumbprint/> - <sp:MustSupportRefEncryptedKey/> - <sp:RequireSignatureConfirmation/> - </wsp:Policy> - </sp:Wss11> - <sp:Trust13> - <wsp:Policy> - <sp:MustSupportIssuedTokens/> - <sp:RequireClientEntropy/> - <sp:RequireServerEntropy/> - </wsp:Policy> - </sp:Trust13> - </wsp:All> - </wsp:Policy> - <wsp:Policy wsu:Id="TransportBindingPolicy"> - <wsp:ExactlyOne> - <wsp:All> - <sp:TransportBinding> - <wsp:Policy> - <sp:TransportToken> - <wsp:Policy> - <sp:HttpsToken RequireClientCertificate="true"/> - </wsp:Policy> - </sp:TransportToken> - <sp:AlgorithmSuite> - <wsp:Policy> - <sp:Basic256/> - </wsp:Policy> - </sp:AlgorithmSuite> - <sp:Layout> - <wsp:Policy> - <sp:Lax/> - </wsp:Policy> - </sp:Layout> - <!-- sp:IncludeTimestamp/ --> - </wsp:Policy> - </sp:TransportBinding> - <!-- sp:Wss10> - <wsp:Policy> - <sp:MustSupportRefKeyIdentifier/> - </wsp:Policy> - </sp:Wss10 --> - </wsp:All> - </wsp:ExactlyOne> - </wsp:Policy> - <!--Datenstrukturen --> - <types> - <xsd:schema targetNamespace="http://xoev.de/transport/xta/211"> - <xsd:import namespace="http://www.osci.eu/ws/2014/10/transport" schemaLocation="../xsd/OSCI_MessageMetaData_V2.02.xsd"/> - <xsd:import namespace="http://www.osci.eu/ws/2008/05/transport" schemaLocation="../xsd/OSCI2_02.xsd"/> - <xsd:include schemaLocation="../xsd/XTA-Webservice-Globale-Elemente.xsd"/> - <xsd:include schemaLocation="../xsd/XTA-Webservice-Exceptions.xsd"/> - </xsd:schema> - </types> - <!--Nachrichten --> - <message name="EmptyBody"/> - <message name="XTAHeader"> - <part name="AuthorIdentifier" element="oscimeta:Author"/> - <part name="MessageMetaData" element="oscimeta:MessageMetaData"/> - </message> - <message name="LookupServiceRequest"> - <part name="LookupServiceRequest" element="xta:LookupServiceRequest"/> - </message> - <message name="LookupServiceResponse"> - <part name="LookupServiceResponse" element="xta:LookupServiceResponse"/> - </message> - <message name="GetTransportReportResponse"> - <part name="GetTransportReportResponse" element="xta:TransportReport"/> - </message> - <message name="GenericContainerBody"> - <part name="GenericContainer" element="xta:GenericContentContainer"/> - </message> - <message name="MessageID"> - <part name="MessageID" element="wsa:MessageID"/> - </message> - <message name="OptHeaders"> - <part name="FetchResponseHeader" element="osci:MsgBoxResponse"/> - <part name="X509TokenContainer" element="osci:X509TokenContainer"/> - </message> - <message name="FetchMsgRequest"> - <part name="FetchRequest" element="osci:MsgBoxFetchRequest"/> - </message> - <message name="GetNextRequest"> - <part name="FetchRequest" element="osci:MsgBoxGetNextRequest"/> - </message> - <message name="CloseRequest"> - <part name="FetchRequest" element="osci:MsgBoxCloseRequest"/> - </message> - <message name="FetchListRequest"> - <part name="FetchRequest" element="osci:MsgBoxStatusListRequest"/> - </message> - <message name="FetchListResponse"> - <part name="FetchResponse" element="osci:MsgStatusList"/> - </message> - <message name="GetNextRequest"> - <part name="FetchRequest" element="osci:MsgBoxGetNextListRequest"/> - </message> - <!--Nachrichten - SOAP-Exceptions--> - <message name="PermissionDeniedException"> - <part name="permissionDeniedException" element="xta:PermissionDeniedException"/> - </message> - <message name="XTAWSTechnicalProblemException"> - <part name="xtawsTechnicalProblem" element="xta:XTAWSTechnicalProblemException"/> - </message> - <message name="ParameterIsNotValidException"> - <part name="parameterIsNotValidException" element="xta:ParameterIsNotValidException"/> - </message> - <message name="MessageSchemaViolationException"> - <part name="messageSchemaViolationException" element="xta:MessageSchemaViolationException"/> - </message> - <message name="MessageVirusDetectionException"> - <part name="messageVirusDetectionException" element="xta:MessageVirusDetectionException"/> - </message> - <message name="SyncAsyncException"> - <part name="syncAsyncException" element="xta:SyncAsyncException"/> - </message> - <message name="InvalidMessageIDException"> - <!-- <part name="invalidMessageIDException" element="xta:InvalidMessageIdException"/> ---> - <part name="invalidMessageIDException" element="xta:InvalidMessageIDException"/> - </message> - <message name="CancelDeniedException"> - <part name="cancelDeniedException" element="xta:CancelDeniedException"/> - </message> - <!--Interfaces --> - <portType name="managementPortType"> - <documentation>xta managementPort</documentation> - <operation name="checkAccountActive"> - <input message="xta:EmptyBody" wsam:Action="http://www.xta.de/XTA/CheckAccountActive"/> - <output message="xta:EmptyBody" wsam:Action="http://www.xta.de/XTA/CheckAccountActive"> - <documentation>only for exception handling</documentation> - </output> - <fault name="PermissionDeniedException" message="xta:PermissionDeniedException" wsam:Action="http://www.xta.de/XTA/CheckAccountActive"/> - <fault name="XTAWSTechnicalProblemException" message="xta:XTAWSTechnicalProblemException" wsam:Action="http://www.xta.de/XTA/CheckAccountActive"/> - </operation> - <operation name="lookupService"> - <input message="xta:LookupServiceRequest" wsam:Action="http://www.xta.de/XTA/IsServiceAvailable"/> - <output message="xta:LookupServiceResponse" wsam:Action="http://www.xta.de/XTA/IsServiceAvailable"/> - <fault name="PermissionDeniedException" message="xta:PermissionDeniedException" wsam:Action="http://www.xta.de/XTA/IsServiceAvailable"/> - <fault name="ParameterIsNotValid" message="xta:ParameterIsNotValidException" wsam:Action="http://www.xta.de/XTA/IsServiceAvailable"/> - <fault name="XTAWSTechnicalProblemException" message="xta:XTAWSTechnicalProblemException" wsam:Action="http://www.xta.de/XTA/IsServiceAvailable"/> - </operation> - <operation name="getTransportReport"> - <input message="xta:MessageID" wsam:Action="http://www.xta.de/XTA/GetTransportReport"/> - <output message="xta:GetTransportReportResponse" wsam:Action="http://www.xta.de/XTA/GetTransportReport"/> - <fault name="PermissionDeniedException" message="xta:PermissionDeniedException" wsam:Action="http://www.xta.de/XTA/GetTransportReport"/> - <fault name="XTAWSTechnicalProblemException" message="xta:XTAWSTechnicalProblemException" wsam:Action="http://www.xta.de/XTA/GetTransportReport"/> - <fault name="InvalidMessageIDException" message="xta:InvalidMessageIDException" wsam:Action="http://www.xta.de/XTA/GetTransportReport"/> - </operation> - <operation name="cancelMessage"> - <input message="xta:MessageID" wsam:Action="http://www.xta.de/XTA/CancelMessage"/> - <output message="xta:EmptyBody" wsam:Action="http://www.xta.de/XTA/CancelMessage"> - <documentation>only for exception handling</documentation> - </output> - <fault name="PermissionDeniedException" message="xta:PermissionDeniedException" wsam:Action="http://www.xta.de/XTA/CancelMessage"/> - <fault name="ParameterIsNotValidException" message="xta:ParameterIsNotValidException" wsam:Action="http://www.xta.de/XTA/CancelMessage"/> - <fault name="XTAWSTechnicalProblemException" message="xta:XTAWSTechnicalProblemException" wsam:Action="http://www.xta.de/XTA/CancelMessage"/> - <fault name="CancelDeniedException" message="xta:CancelDeniedException" wsam:Action="http://www.xta.de/XTA/CancelMessage"/> - </operation> - <operation name="createMessageId"> - <input message="xta:EmptyBody" wsam:Action="http://www.xta.de/XTA/CreateMessageID"/> - <output message="xta:MessageID" wsam:Action="http://www.xta.de/XTA/CreateMessageID"/> - <fault name="PermissionDeniedException" message="xta:PermissionDeniedException" wsam:Action="http://www.xta.de/XTA/CreateMessageID"/> - <fault name="XTAWSTechnicalProblemException" message="xta:XTAWSTechnicalProblemException" wsam:Action="http://www.xta.de/XTA/CreateMessageID"/> - </operation> - </portType> - <portType name="sendPortType"> - <documentation>sendPort</documentation> - <operation name="sendMessage"> - <input message="xta:GenericContainerBody" wsam:Action="http://www.xta.de/XTA/SendMessage"/> - <output message="xta:EmptyBody" wsam:Action="http://www.xta.de/XTA/SendMessage"/> - <fault name="PermissionDeniedException" message="xta:PermissionDeniedException" wsam:Action="http://www.xta.de/XTA/SendMessage"/> - <fault name="ParameterIsNotValidException" message="xta:ParameterIsNotValidException" wsam:Action="http://www.xta.de/XTA/SendMessage"/> - <fault name="XTAWSTechnicalProblemException" message="xta:XTAWSTechnicalProblemException" wsam:Action="http://www.xta.de/XTA/SendMessage"/> - <fault name="MessageSchemaViolationException" message="xta:MessageSchemaViolationException" wsam:Action="http://www.xta.de/XTA/SendMessage"/> - <fault name="MessageVirusDetectionException" message="xta:MessageVirusDetectionException" wsam:Action="http://www.xta.de/XTA/SendMessage"/> - <fault name="SyncAsyncException" message="xta:SyncAsyncException" wsam:Action="http://www.xta.de/XTA/SendMessage"/> - </operation> - <operation name="sendMessageSync"> - <input message="xta:GenericContainerBody" wsam:Action="http://www.xta.de/XTA/SendMessageSync"/> - <output message="xta:GenericContainerBody" wsam:Action="http://www.xta.de/XTA/SendMessageSync"/> - <fault name="PermissionDeniedException" message="xta:PermissionDeniedException" wsam:Action="http://www.xta.de/XTA/SendMessageSync"/> - <fault name="ParameterIsNotValidException" message="xta:ParameterIsNotValidException" wsam:Action="http://www.xta.de/XTA/SendMessageSync"/> - <fault name="XTAWSTechnicalProblemException" message="xta:XTAWSTechnicalProblemException" wsam:Action="http://www.xta.de/XTA/SendMessageSync"/> - <fault name="MessageSchemaViolationException" message="xta:MessageSchemaViolationException" wsam:Action="http://www.xta.de/XTA/SendMessageSync"/> - <fault name="MessageVirusDetectionException" message="xta:MessageVirusDetectionException" wsam:Action="http://www.xta.de/XTA/SendMessageSync"/> - <fault name="SyncAsyncException" message="xta:SyncAsyncException" wsam:Action="http://www.xta.de/XTA/SendMessageSync"/> - </operation> - </portType> - <portType name="msgBoxPortType"> - <documentation>msgboxfetchPort</documentation> - <operation name="getMessage"> - <input message="xta:FetchMsgRequest" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxFetchRequest"/> - <output message="xta:GenericContainerBody" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxFetchRequest"/> - <fault name="PermissionDeniedException" message="xta:PermissionDeniedException" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxFetchRequest"/> - <fault name="XTAWSTechnicalProblemException" message="xta:XTAWSTechnicalProblemException" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxFetchRequest"/> - <fault name="InvalidMessageIDException" message="xta:InvalidMessageIDException" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxFetchRequest"/> - </operation> - <operation name="getStatusList"> - <input message="xta:FetchListRequest" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxStatusListRequest"/> - <output message="xta:FetchListResponse" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxStatusListRequest"/> - <fault name="PermissionDeniedException" message="xta:PermissionDeniedException" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxStatusListRequest"/> - <fault name="XTAWSTechnicalProblemException" message="xta:XTAWSTechnicalProblemException" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxStatusListRequest"/> - </operation> - <operation name="getNextMessage"> - <input message="xta:GetNextRequest" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxGetNextMsgRequest"/> - <output message="xta:GenericContainerBody" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxGetNextMsgRequest"/> - <!-- Stand 13.05.2016 Vorgabe fehlt in Abschnitt B1.1.1, Annahme: Es werden - dieselben Exceptions benötigt, wie für getMessage --> - <fault name="PermissionDeniedException" message="xta:PermissionDeniedException" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxGetNextMsgRequest"/> - <fault name="XTAWSTechnicalProblemException" message="xta:XTAWSTechnicalProblemException" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxGetNextMsgRequest"/> - <fault name="InvalidMessageIDException" message="xta:InvalidMessageIDException" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxGetNextMsgRequest"/> - </operation> - <operation name="getNextStatusList"> - <input message="xta:GetNextRequest" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxGetNextListRequest"/> - <output message="xta:FetchListResponse" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxGetNextListRequest"/> - <fault name="PermissionDeniedException" message="xta:PermissionDeniedException" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxGetNextListRequest"/> - <fault name="XTAWSTechnicalProblemException" message="xta:XTAWSTechnicalProblemException" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxGetNextListRequest"/> - </operation> - <operation name="close"> - <input message="xta:CloseRequest" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxCloseRequest"/> - <output message="xta:EmptyBody" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxCloseRequest"> - <documentation>only for exception handling</documentation> - </output> - <fault name="PermissionDeniedException" message="xta:PermissionDeniedException" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxCloseRequest"/> - <fault name="XTAWSTechnicalProblemException" message="xta:XTAWSTechnicalProblemException" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxCloseRequest"/> - <fault name="InvalidMessageIDException" message="xta:InvalidMessageIDException" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxCloseRequest"/> - </operation> - </portType> - <!--Bindung von Protokoll und Interface --> - <binding name="sendXTAHttpsBinding" type="xta:sendPortType"> - <documentation>https binding for the sendPort</documentation> - <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> - <wsp:PolicyReference URI="#TransportBindingPolicy"/> - <wsp:PolicyReference URI="#osciCommon"/> - <operation name="sendMessage"> - <documentation>The sendMessage method delivers a content message to the sending - hub.</documentation> - <soap:operation soapAction="http://www.xta.de/XTA/SendMessage" soapActionRequired="true" style="document"/> - <input> - <documentation>Input Header: MessageMetaData header contains additional information - for the for the given payload. Body: The GenericContainerBody containins the - "xöv" message.</documentation> - <soap:body use="literal"/> - <soap:header message="xta:XTAHeader" part="MessageMetaData" use="literal"/> - <soap:header message="xta:OptHeaders" part="X509TokenContainer" use="literal"/> - </input> - <output> - <documentation>only for exception handling</documentation> - <soap:body use="literal"/> - </output> - <fault name="PermissionDeniedException"> - <soap:fault name="PermissionDeniedException" use="literal"/> - </fault> - <fault name="ParameterIsNotValidException"> - <soap:fault name="ParameterIsNotValidException" use="literal"/> - </fault> - <fault name="XTAWSTechnicalProblemException"> - <soap:fault name="XTAWSTechnicalProblemException" use="literal"/> - </fault> - <fault name="MessageSchemaViolationException"> - <soap:fault name="MessageSchemaViolationException" use="literal"/> - </fault> - <fault name="MessageVirusDetectionException"> - <soap:fault name="MessageVirusDetectionException" use="literal"/> - </fault> - <fault name="SyncAsyncException"> - <soap:fault name="SyncAsyncException" use="literal"/> - </fault> - </operation> - <operation name="sendMessageSync"> - <documentation>The sendMessage method delivers a content message to the sending - hub.</documentation> - <soap:operation soapAction="http://www.xta.de/XTA/SendMessageSync" soapActionRequired="true" style="document"/> - <input> - <documentation>Input Header: MessageMetaData header contains additional information - for the for the given payload. Body: The GenericContainerBody contains the "xöv" - message.</documentation> - <soap:body use="literal"/> - <soap:header message="xta:XTAHeader" part="MessageMetaData" use="literal"/> - <soap:header message="xta:OptHeaders" part="X509TokenContainer" use="literal"/> - </input> - <output> - <documentation>Output body: A GenericContainerBody in the body, containing the - synchronous "xöv" message response.</documentation> - <soap:body use="literal"/> - <soap:header message="xta:XTAHeader" part="MessageMetaData" use="literal"/> - <soap:header message="xta:OptHeaders" part="X509TokenContainer" use="literal"/> - </output> - <fault name="PermissionDeniedException"> - <soap:fault name="PermissionDeniedException" use="literal"/> - </fault> - <fault name="ParameterIsNotValidException"> - <soap:fault name="ParameterIsNotValidException" use="literal"/> - </fault> - <fault name="XTAWSTechnicalProblemException"> - <soap:fault name="XTAWSTechnicalProblemException" use="literal"/> - </fault> - <fault name="MessageSchemaViolationException"> - <soap:fault name="MessageSchemaViolationException" use="literal"/> - </fault> - <fault name="MessageVirusDetectionException"> - <soap:fault name="MessageVirusDetectionException" use="literal"/> - </fault> - <fault name="SyncAsyncException"> - <soap:fault name="SyncAsyncException" use="literal"/> - </fault> - </operation> - </binding> - <binding name="managementHttpsBinding" type="xta:managementPortType"> - <documentation>https binding for the managementPort</documentation> - <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> - <wsp:PolicyReference URI="#TransportBindingPolicy"/> - <wsp:PolicyReference URI="#osciCommon"/> - <operation name="getTransportReport"> - <documentation>Method to get the transport report for the given - MessageID</documentation> - <soap:operation soapAction="http://www.xta.de/XTA/GetTransportReport" soapActionRequired="true" style="document"/> - <input> - <documentation>Input: optional xta:AuthorIdentifier header and the MessageID in the - body part.</documentation> - <soap:body use="literal"/> - <soap:header message="xta:XTAHeader" part="AuthorIdentifier" use="literal"/> - </input> - <output> - <documentation>Output body: The Transport report containing the detailed information - for the related message.</documentation> - <soap:body use="literal"/> - </output> - <fault name="PermissionDeniedException"> - <soap:fault name="PermissionDeniedException" use="literal"/> - </fault> - <fault name="XTAWSTechnicalProblemException"> - <soap:fault name="XTAWSTechnicalProblemException" use="literal"/> - </fault> - <fault name="InvalidMessageIDException"> - <soap:fault name="InvalidMessageIDException" use="literal"/> - </fault> - </operation> - <operation name="cancelMessage"> - <documentation>Method to cancel disptach order (if not yet finalied - successfully)</documentation> - <soap:operation soapAction="http://www.xta.de/XTA/CancelMessage" soapActionRequired="true" style="document"/> - <input> - <documentation>Input: optional xta:AuthorIdentifier header and the MessageID in the - body part.</documentation> - <soap:body use="literal"/> - <soap:header message="xta:XTAHeader" part="AuthorIdentifier" use="literal"/> - </input> - <output> - <documentation>only for exception handling</documentation> - <soap:body use="literal"/> - </output> - <fault name="CancelDeniedException"> - <soap:fault name="CancelDeniedException" use="literal"/> - </fault> - <fault name="PermissionDeniedException"> - <soap:fault name="PermissionDeniedException" use="literal"/> - </fault> - <fault name="ParameterIsNotValidException"> - <soap:fault name="ParameterIsNotValidException" use="literal"/> - </fault> - <fault name="XTAWSTechnicalProblemException"> - <soap:fault name="XTAWSTechnicalProblemException" use="literal"/> - </fault> - </operation> - <operation name="lookupService"> - <documentation>Method to get further information about the given address - information</documentation> - <soap:operation soapAction="http://www.xta.de/XTA/IsServiceAvailable" soapActionRequired="true" style="document"/> - <input> - <documentation>Input: optional xta:AuthorIdentifier header and a list of address - information in the body part</documentation> - <soap:body use="literal"/> - <soap:header message="xta:XTAHeader" part="AuthorIdentifier" use="literal"/> - </input> - <output> - <documentation>Output body: further information for the given address - list.</documentation> - <soap:body use="literal"/> - </output> - <fault name="PermissionDeniedException"> - <soap:fault name="PermissionDeniedException" use="literal"/> - </fault> - <fault name="ParameterIsNotValid"> - <soap:fault name="ParameterIsNotValid" use="literal"/> - </fault> - <fault name="XTAWSTechnicalProblemException"> - <soap:fault name="XTAWSTechnicalProblemException" use="literal"/> - </fault> - </operation> - <operation name="checkAccountActive"> - <documentation>Method to check whether the account is activ</documentation> - <soap:operation soapAction="http://www.xta.de/XTA/CheckAccountActive" soapActionRequired="true" style="document"/> - <input> - <documentation>Input: optional xta:AuthorIdentifier header.</documentation> - <soap:body use="literal"/> - <soap:header message="xta:XTAHeader" part="AuthorIdentifier" use="literal"/> - </input> - <output> - <documentation>only for exception handling</documentation> - <soap:body use="literal"/> - </output> - <fault name="PermissionDeniedException"> - <soap:fault name="PermissionDeniedException" use="literal"/> - </fault> - <fault name="XTAWSTechnicalProblemException"> - <soap:fault name="XTAWSTechnicalProblemException" use="literal"/> - </fault> - </operation> - <operation name="createMessageId"> - <documentation>Method to obtain new created MesMessageID</documentation> - <soap:operation soapAction="http://www.xta.de/XTA/CreateMessageID" soapActionRequired="true" style="document"/> - <input> - <documentation>Input: optional xta:AuthorIdentifier header</documentation> - <soap:body use="literal"/> - <soap:header message="xta:XTAHeader" part="AuthorIdentifier" use="literal"/> - </input> - <output> - <documentation>Output body: The created MesMessageID</documentation> - <soap:body use="literal"/> - </output> - <fault name="PermissionDeniedException"> - <soap:fault name="PermissionDeniedException" use="literal"/> - </fault> - <fault name="XTAWSTechnicalProblemException"> - <soap:fault name="XTAWSTechnicalProblemException" use="literal"/> - </fault> - </operation> - </binding> - <binding name="msgBoxHttpsBinding" type="xta:msgBoxPortType"> - <documentation>https binding for the msgBox</documentation> - <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> - <wsp:PolicyReference URI="#TransportBindingPolicy"/> - <wsp:PolicyReference URI="#osciCommon"/> - <operation name="getMessage"> - <documentation>The getMethode method returns the first message relating to the given - parameter</documentation> - <soap:operation soapAction="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxFetchRequest" soapActionRequired="true"/> - <input> - <documentation>Input: optional xta:AuthorIdentifier header and OSCI 2 - MsgBoxFetchRequest parameter in the body part</documentation> - <soap:body use="literal"/> - <soap:header message="xta:XTAHeader" part="AuthorIdentifier" use="literal"/> - </input> - <output> - <documentation>Output: Header: Optional xta:AuthorIdentifier header or OSCI2 Header - MsgBoxResponse with addional information and related GenericContentContainer in - the body part</documentation> - <soap:header message="xta:XTAHeader" part="MessageMetaData" use="literal"/> - <soap:header message="xta:OptHeaders" part="FetchResponseHeader" use="literal"/> - <soap:body use="literal"/> - </output> - <fault name="PermissionDeniedException"> - <soap:fault name="PermissionDeniedException" use="literal"/> - </fault> - <fault name="XTAWSTechnicalProblemException"> - <soap:fault name="XTAWSTechnicalProblemException" use="literal"/> - </fault> - <fault name="InvalidMessageIDException"> - <soap:fault name="InvalidMessageIDException" use="literal"/> - </fault> - </operation> - <operation name="getStatusList"> - <documentation>getStatusList returns the list of related message - information</documentation> - <soap:operation soapAction="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxStatusListRequest" soapActionRequired="true"/> - <input> - <documentation>Input: optional xta:AuthorIdentifier header and OSCI 2 - MsgStatusListRequest parameter in the body part</documentation> - <soap:body use="literal"/> - <soap:header message="xta:XTAHeader" part="AuthorIdentifier" use="literal"/> - </input> - <output> - <documentation>Output: Header: OSCI2 Header MsgBoxResponse with addional information - and related MsgStatusList in the body part</documentation> - <soap:header message="xta:OptHeaders" part="FetchResponseHeader" use="literal"/> - <soap:body use="literal"/> - </output> - <fault name="PermissionDeniedException"> - <soap:fault name="PermissionDeniedException" use="literal"/> - </fault> - <fault name="XTAWSTechnicalProblemException"> - <soap:fault name="XTAWSTechnicalProblemException" use="literal"/> - </fault> - </operation> - <operation name="getNextMessage"> - <documentation>getNextMessage returns next message relates to fetch - iterator</documentation> - <soap:operation soapAction="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxGetNextMsgRequest" soapActionRequired="true"/> - <input> - <documentation>Input: Optional xta:AuthorIdentifier header and in the body part the - MsgBoxNextRequest element conatining the fetch iterator</documentation> - <soap:body use="literal"/> - <soap:header message="xta:XTAHeader" part="AuthorIdentifier" use="literal"/> - </input> - <output> - <documentation>Output: Header: Optional xta:AuthorIdentifier header or OSCI2 Header - MsgBoxResponse with addional information and related MsgStatusList in the body - part</documentation> - <soap:header message="xta:XTAHeader" part="MessageMetaData" use="literal"/> - <soap:header message="xta:OptHeaders" part="FetchResponseHeader" use="literal"/> - <soap:body use="literal"/> - </output> - <fault name="PermissionDeniedException"> - <soap:fault name="PermissionDeniedException" use="literal"/> - </fault> - <fault name="XTAWSTechnicalProblemException"> - <soap:fault name="XTAWSTechnicalProblemException" use="literal"/> - </fault> - <fault name="InvalidMessageIDException"> - <soap:fault name="InvalidMessageIDException" use="literal"/> - </fault> - </operation> - <operation name="getNextStatusList"> - <documentation>getNextStatusList returns the next list of related message information - related to the fetch iterator</documentation> - <soap:operation soapAction="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxGetNextListRequest" soapActionRequired="true"/> - <input> - <documentation>Input: optional xta:AuthorIdentifier header and in the body part the - MsgBoxNextRequest element conatining the fetch iterator</documentation> - <soap:body use="literal"/> - <soap:header message="xta:XTAHeader" part="AuthorIdentifier" use="literal"/> - </input> - <output> - <documentation>Output: Header: OSCI2 Header MsgBoxResponse with addional information - and next related MsgStatusList in the body part</documentation> - <soap:header message="xta:OptHeaders" part="FetchResponseHeader" use="literal"/> - <soap:body use="literal"/> - </output> - <fault name="PermissionDeniedException"> - <soap:fault name="PermissionDeniedException" use="literal"/> - </fault> - <fault name="XTAWSTechnicalProblemException"> - <soap:fault name="XTAWSTechnicalProblemException" use="literal"/> - </fault> - </operation> - <operation name="close"> - <documentation>The close method returns close the fetch iterator</documentation> - <soap:operation soapAction="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxCloseRequest" soapActionRequired="true"/> - <input> - <documentation>Input: optional xta:AuthorIdentifier header and the - MsgBoxCloseRequest element conatining the fetch iterator in the body - part</documentation> - <soap:body use="literal"/> - <soap:header message="xta:XTAHeader" part="AuthorIdentifier" use="literal"/> - </input> - <output> - <documentation>only for exception handling</documentation> - <soap:body use="literal"/> - </output> - <fault name="PermissionDeniedException"> - <soap:fault name="PermissionDeniedException" use="literal"/> - </fault> - <fault name="XTAWSTechnicalProblemException"> - <soap:fault name="XTAWSTechnicalProblemException" use="literal"/> - </fault> - <fault name="InvalidMessageIDException"> - <soap:fault name="InvalidMessageIDException" use="literal"/> - </fault> - </operation> - </binding> - <!--Endpoints des Services --> - <service name="XTAService"> - <port name="MsgBoxPort" binding="xta:msgBoxHttpsBinding"> - <soap:address location="REPLACE_WITH_ACTUAL_URL"/> - <wsa:EndpointReference> - <wsa:Address>REPLACE_WITH_ACTUAL_URL</wsa:Address> - <wsa:ReferenceParameters> - <osci:TypeOfBusinessScenario>http://www.xoevxta.de/xta/ws</osci:TypeOfBusinessScenario> - </wsa:ReferenceParameters> - </wsa:EndpointReference> - </port> - <port name="SendXtaPort" binding="xta:sendXTAHttpsBinding"> - <soap:address location="REPLACE_WITH_ACTUAL_URL"/> - <wsa:EndpointReference> - <wsa:Address>REPLACE_WITH_ACTUAL_URL</wsa:Address> - <wsa:ReferenceParameters> - <osci:TypeOfBusinessScenario>http://www.xoevxta.de/xta/ws</osci:TypeOfBusinessScenario> - </wsa:ReferenceParameters> - </wsa:EndpointReference> - </port> - <port name="ManagementPort" binding="xta:managementHttpsBinding"> - <soap:address location="REPLACE_WITH_ACTUAL_URL"/> - <wsa:EndpointReference> - <wsa:Address>REPLACE_WITH_ACTUAL_URL</wsa:Address> - <wsa:ReferenceParameters> - <osci:TypeOfBusinessScenario>http://www.xoevxta.de/xta/ws</osci:TypeOfBusinessScenario> - </wsa:ReferenceParameters> - </wsa:EndpointReference> - </port> - </service> -</definitions> diff --git a/xta-adapter/src/main/resources/application-local.yml b/xta-adapter/src/main/resources/application-local.yml deleted file mode 100644 index 592ce755..00000000 --- a/xta-adapter/src/main/resources/application-local.yml +++ /dev/null @@ -1,18 +0,0 @@ -ozgcloud: - xta: - identifiers: - - gae:noreply@ozg-sh.de - server: - address: localhost:3000 - name: LI33-0005 - protocol: https - adapter: - targetVorgangManagerName: local - fallbackStrategy: DENY - routingStrategy: SINGLE - -grpc: - client: - vorgang-manager-local: - address: static://127.0.0.1:9090 - negotiationType: PLAINTEXT diff --git a/xta-adapter/src/main/resources/application.yml b/xta-adapter/src/main/resources/application.yml deleted file mode 100644 index fd1f7298..00000000 --- a/xta-adapter/src/main/resources/application.yml +++ /dev/null @@ -1,19 +0,0 @@ -logging: - level: - ROOT: WARN - '[de.ozgcloud]': INFO - '[org.springframework.ws]': WARN - -ozgcloud: - xta: - max-list-elements: 100 - keystore: - type: PKCS12 - actions: - status-list: "http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxStatusListRequest" - fetch-request: "http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxFetchRequest" - close-request: "http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxCloseRequest" - -fim: - schemeLocations: - - fim-s17000652_1.4/S17000652V1.4_xfall.xsd \ No newline at end of file diff --git a/xta-adapter/src/main/wsdl/XTA-synchron.wsdl b/xta-adapter/src/main/wsdl/XTA-synchron.wsdl deleted file mode 100644 index 0f7fa6eb..00000000 --- a/xta-adapter/src/main/wsdl/XTA-synchron.wsdl +++ /dev/null @@ -1,176 +0,0 @@ -<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://xoev.de/transport/xta/211" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://www.w3.org/2005/08/addressing" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:wspmtom="http://schemas.xmlsoap.org/ws/2004/09/policy/optimizedmimeserialization" xmlns:osci="http://www.osci.eu/ws/2008/05/transport" xmlns:oscimeta="http://www.osci.eu/ws/2014/10/transport" xmlns:wsp="http://www.w3.org/ns/ws-policy" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702" xmlns:s12="http://www.w3.org/2003/05/soap-envelope" xmlns:xta="http://xoev.de/transport/xta/211" name="XTA-Webservice"> - <wsp:Policy wsu:Id="osciCommon"> - <!--###### general osci policies ##########--> - <wsp:All> - <wsam:Addressing wsp:Optional="false"> - <wsp:Policy> - <wsam:AnonymousResponses/> - </wsp:Policy> - </wsam:Addressing> - <wspmtom:OptimizedMimeSerialization/> - <sp:Wss11> - <wsp:Policy> - <sp:MustSupportRefKeyIdentifier/> - <sp:MustSupportRefIssuerSerial/> - <sp:MustSupportRefThumbprint/> - <sp:MustSupportRefEncryptedKey/> - <sp:RequireSignatureConfirmation/> - </wsp:Policy> - </sp:Wss11> - <sp:Trust13> - <wsp:Policy> - <sp:MustSupportIssuedTokens/> - <sp:RequireClientEntropy/> - <sp:RequireServerEntropy/> - </wsp:Policy> - </sp:Trust13> - </wsp:All> - </wsp:Policy> - <wsp:Policy wsu:Id="TransportBindingPolicy"> - <wsp:ExactlyOne> - <wsp:All> - <sp:TransportBinding> - <wsp:Policy> - <sp:TransportToken> - <wsp:Policy> - <sp:HttpsToken RequireClientCertificate="true"/> - </wsp:Policy> - </sp:TransportToken> - <sp:AlgorithmSuite> - <wsp:Policy> - <sp:Basic256/> - </wsp:Policy> - </sp:AlgorithmSuite> - <sp:Layout> - <wsp:Policy> - <sp:Lax/> - </wsp:Policy> - </sp:Layout> - <!-- sp:IncludeTimestamp/ --> - </wsp:Policy> - </sp:TransportBinding> - <!-- sp:Wss10> - <wsp:Policy> - <sp:MustSupportRefKeyIdentifier/> - </wsp:Policy> - </sp:Wss10 --> - </wsp:All> - </wsp:ExactlyOne> - </wsp:Policy> - <!--Datenstrukturen --> - <types> - <xsd:schema targetNamespace="http://xoev.de/transport/xta/211"> - <xsd:import namespace="http://www.osci.eu/ws/2014/10/transport" schemaLocation="http://www.osci.eu/ws/2014/10/transport/OSCI_MessageMetaData_V2.02.xsd"/> - <xsd:import namespace="http://www.osci.eu/ws/2008/05/transport" schemaLocation="http://www.osci.eu/ws/2014/10/transport/OSCI2_02.xsd"/> - <xsd:include schemaLocation="http://xoev.de/transport/xta/211/XTA-Webservice-Globale-Elemente.xsd"/> - <xsd:include schemaLocation="http://xoev.de/transport/xta/211/XTA-Webservice-Exceptions.xsd"/> - </xsd:schema> - </types> - <!--Nachrichten --> - <message name="EmptyBody"/> - <message name="XTAHeader"> - <part name="MessageMetaData" element="oscimeta:MessageMetaData"/> - <part name="AuthorIdentifier" element="oscimeta:Author"/> - </message> - <message name="GenericContainerBody"> - <part name="GenericContainer" element="xta:GenericContentContainer"/> - </message> - <message name="OptHeaders"> - <part name="FetchResponseHeader" element="osci:MsgBoxResponse"/> - <part name="X509TokenContainer" element="osci:X509TokenContainer"/> - </message> - <!--Nachrichten - SOAP-Exceptions--> - <message name="PermissionDeniedException"> - <part name="permissionDeniedException" element="xta:PermissionDeniedException"/> - </message> - <message name="XTAWSTechnicalProblemException"> - <part name="xtawsTechnicalProblem" element="xta:XTAWSTechnicalProblemException"/> - </message> - <message name="ParameterIsNotValidException"> - <part name="parameterIsNotValidException" element="xta:ParameterIsNotValidException"/> - </message> - <message name="MessageSchemaViolationException"> - <part name="messageSchemaViolationException" element="xta:MessageSchemaViolationException"/> - </message> - <message name="MessageVirusDetectionException"> - <part name="messageVirusDetectionException" element="xta:MessageVirusDetectionException"/> - </message> - <message name="SyncAsyncException"> - <part name="syncAsyncException" element="xta:SyncAsyncException"/> - </message> - <message name="CancelDeniedException"> - <part name="cancelDeniedException" element="xta:CancelDeniedException"/> - </message> - <message name="InvalidMessageIDException"> - <part name="invalidMessageIDException" element="xta:InvalidMessageIDException"/> - </message> - <!--Interfaces --> - <portType name="sendSynchronPortType"> - <documentation>sendPort</documentation> - <operation name="sendMessageSync"> - <input message="xta:GenericContainerBody" wsam:Action="http://www.xta.de/XTA/SendMessageSync"/> - <output message="xta:GenericContainerBody" wsam:Action="http://www.xta.de/XTA/SendMessageSync"/> - <fault name="PermissionDeniedException" message="xta:PermissionDeniedException" wsam:Action="http://www.xta.de/XTA/SendMessageSync"/> - <fault name="ParameterIsNotValidException" message="xta:ParameterIsNotValidException" wsam:Action="http://www.xta.de/XTA/SendMessageSync"/> - <fault name="XTAWSTechnicalProblemException" message="xta:XTAWSTechnicalProblemException" wsam:Action="http://www.xta.de/XTA/SendMessageSync"/> - <fault name="MessageSchemaViolationException" message="xta:MessageSchemaViolationException" wsam:Action="http://www.xta.de/XTA/SendMessageSync"/> - <fault name="MessageVirusDetectionException" message="xta:MessageVirusDetectionException" wsam:Action="http://www.xta.de/XTA/SendMessageSync"/> - <fault name="SyncAsyncException" message="xta:SyncAsyncException" wsam:Action="http://www.xta.de/XTA/SendMessageSync"/> - </operation> - </portType> - <binding name="sendXTAHttpsBinding" type="xta:sendSynchronPortType"> - <documentation>https binding for the sendPort</documentation> - <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> - <wsp:PolicyReference URI="#TransportBindingPolicy"/> - <wsp:PolicyReference URI="#osciCommon"/> - <operation name="sendMessageSync"> - <documentation>The sendMessage method delivers a content message to the sending - hub</documentation> - <soap:operation soapAction="http://www.xta.de/XTA/SendMessageSync" soapActionRequired="true" style="document"/> - <input> - <documentation>Input Header: MessageMetaData header contains additional information - for the for the given payload. Body: The GenericContainerBody contains the "xöv" - message</documentation> - <soap:body use="literal"/> - <soap:header message="xta:XTAHeader" part="MessageMetaData" use="literal"/> - <soap:header message="xta:OptHeaders" part="X509TokenContainer" use="literal"/> - </input> - <output> - <documentation>Output body: A GenericContainerBody in the body, containing the - synchronous "xöv" message response</documentation> - <soap:body use="literal"/> - <soap:header message="xta:XTAHeader" part="MessageMetaData" use="literal"/> - <soap:header message="xta:OptHeaders" part="X509TokenContainer" use="literal"/> - </output> - <fault name="MessageSchemaViolationException"> - <soap:fault name="MessageSchemaViolationException" use="literal"/> - </fault> - <fault name="MessageVirusDetectionException"> - <soap:fault name="MessageVirusDetectionException" use="literal"/> - </fault> - <fault name="ParameterIsNotValidException"> - <soap:fault name="ParameterIsNotValidException" use="literal"/> - </fault> - <fault name="PermissionDeniedException"> - <soap:fault name="PermissionDeniedException" use="literal"/> - </fault> - <fault name="SyncAsyncException"> - <soap:fault name="SyncAsyncException" use="literal"/> - </fault> - <fault name="XTAWSTechnicalProblemException"> - <soap:fault name="XTAWSTechnicalProblemException" use="literal"/> - </fault> - </operation> - </binding> - <service name="XTAServiceSynchron"> - <port name="SendXtaSynchronPort" binding="xta:sendXTAHttpsBinding"> - <soap:address location="REPLACE_WITH_ACTUAL_URL"/> - <wsa:EndpointReference> - <wsa:Address>REPLACE_WITH_ACTUAL_URL</wsa:Address> - <wsa:ReferenceParameters> - <osci:TypeOfBusinessScenario>http://www.xoevxta.de/xta/ws</osci:TypeOfBusinessScenario> - </wsa:ReferenceParameters> - </wsa:EndpointReference> - </port> - </service> -</definitions> diff --git a/xta-adapter/src/main/xsd/OSCI2_02.xsd b/xta-adapter/src/main/xsd/OSCI2_02.xsd deleted file mode 100644 index 244fc7f8..00000000 --- a/xta-adapter/src/main/xsd/OSCI2_02.xsd +++ /dev/null @@ -1,328 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:wsa="http://www.w3.org/2005/08/addressing" xmlns:osci="http://www.osci.eu/ws/2008/05/transport" xmlns:oscimeta="http://www.osci.eu/ws/2014/10/transport" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:s12="http://www.w3.org/2003/05/soap-envelope" xmlns:wsp="http://www.w3.org/ns/ws-policy" targetNamespace="http://www.osci.eu/ws/2008/05/transport" elementFormDefault="qualified" attributeFormDefault="unqualified"> - <!--OSCI Transport Version 2.02 schema - last edited 2015-01-23 --> - <!--OSCI Transport 2.02 schema extended by metadata header for OSCI2.0, according modification for MsgBoxStatusList; MsgBoxFetchRequest attributed for reqeuesting whole envelope, headers of body of original message only--> - <xs:import namespace="http://www.osci.eu/ws/2014/10/transport" schemaLocation="OSCI_MessageMetaData_V2.02.xsd"/> - <xs:import namespace="http://www.w3.org/ns/ws-policy" schemaLocation="ws-policy.xsd"/> - <xs:import namespace="http://www.w3.org/2005/08/addressing" schemaLocation="ws-addr.xsd"/> - <xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="xmldsig-core-schema.xsd"/> - <xs:import namespace="http://www.w3.org/2003/05/soap-envelope" schemaLocation="soap-envelope.xsd"/> - <xs:import namespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" schemaLocation="oasis-200401-wss-wssecurity-utility-1.0.xsd"/> - <!--WSA-Extension: BusinessScenarioType--> - <xs:complexType name="TypeOfBusinessScenarioType"> - <xs:simpleContent> - <xs:extension base="xs:anyURI"> - <xs:attribute ref="wsa:IsReferenceParameter" use="optional"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - <xs:element name="TypeOfBusinessScenario" type="osci:TypeOfBusinessScenarioType"/> - <!--General header-part of OSCI messages: timestamps--> - <xs:complexType name="MsgTimeStampsType"> - <xs:sequence> - <xs:element name="ObsoleteAfter" type="xs:date" minOccurs="0"> - <xs:annotation> - <xs:documentation>Date, when this message is obsolete; may be set by Initiator</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Delivery" type="xs:dateTime" minOccurs="0"> - <xs:annotation> - <xs:documentation>Time of entry in a Recipient MsgBox</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="InitialFetch" type="xs:dateTime" minOccurs="0"> - <xs:annotation> - <xs:documentation>Time of first comitted fetch from MsgBox by the Recipient</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Reception" type="xs:dateTime" minOccurs="0"> - <xs:annotation> - <xs:documentation>Reception Time set by the Recipient</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - </xs:complexType> - <xs:element name="MsgTimeStamps" type="osci:MsgTimeStampsType"/> - <!--Types and Elements for MsgBox request/responses--> - <xs:annotation> - <xs:documentation>Template for MsgBox-Requests</xs:documentation> - </xs:annotation> - <xs:complexType name="MsgBoxRequestType"> - <xs:sequence> - <xs:element ref="osci:MsgSelector" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="MsgBoxReasonEnum"> - <xs:restriction base="xs:anyURI"> - <xs:enumeration value="http://www.osci.eu/ws/2008/05/transport/MsgBox/reasons/NoMatch"/> - <xs:enumeration value="http://www.osci.eu/ws/2008/05/transport/MsgBox/reasons/SearchArgsInvalid"/> - <xs:enumeration value="http://www.osci.eu/ws/2008/05/transport/MsgBox/reasons/RequestIdInvalid"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="MsgBoxReasonOpenEnum"> - <xs:union memberTypes="osci:MsgBoxReasonEnum xs:anyURI"/> - </xs:simpleType> - <xs:complexType name="MsgBoxResponseType"> - <xs:choice> - <xs:element name="NoMessageAvailable"> - <xs:complexType> - <xs:attribute name="reason" type="osci:MsgBoxReasonOpenEnum" use="required"/> - </xs:complexType> - </xs:element> - <xs:element name="ItemsPending" type="xs:nonNegativeInteger"/> - </xs:choice> - <xs:attribute name="MsgBoxRequestID" type="xs:anyURI" use="required"/> - </xs:complexType> - <xs:complexType name="MsgAttributeListType"> - <xs:sequence> - <xs:element ref="wsa:MessageID"/> - <xs:element ref="wsa:RelatesTo" minOccurs="0" maxOccurs="unbounded"/> - <xs:element ref="wsa:From" minOccurs="0"/> - <xs:element ref="osci:TypeOfBusinessScenario"/> - <xs:element name="MsgSize" type="xs:int"/> - <!--xs:element ref="osci:MsgTimeStamps"/--> - <xs:element name="ObsoleteAfterDate" type="xs:date" minOccurs="0"/> - <xs:element name="DeliveryTime" type="xs:dateTime"/> - <xs:element name="InitialFetchedTime" type="xs:dateTime" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:attribute name="MsgBoxRequestID" type="xs:anyURI"/> - <xs:element name="MsgSelector"> - <xs:complexType> - <xs:sequence minOccurs="0"> - <xs:element ref="wsa:MessageID" minOccurs="0" maxOccurs="unbounded"/> - <xs:element ref="wsa:RelatesTo" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="MsgBoxEntryTimeFrom" type="xs:dateTime" minOccurs="0"/> - <xs:element name="MsgBoxEntryTimeTo" type="xs:dateTime" minOccurs="0"/> - <xs:element name="Extension" type="xs:anyType" minOccurs="0"/> - </xs:sequence> - <xs:attribute name="newEntry" type="xs:boolean"/> - </xs:complexType> - </xs:element> - <xs:element name="MsgStatusList" type="osci:MsgStatusListType"/> - <xs:complexType name="MsgStatusListType"> - <xs:sequence> - <xs:element name="MsgAttributes" type="osci:MsgAttributeListType" minOccurs="0" maxOccurs="unbounded"/> - <xs:element ref="oscimeta:MessageMetaData" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:element name="MsgBoxFetchRequest"> - <xs:complexType> - <xs:complexContent> - <xs:extension base="osci:MsgBoxRequestType"> - <xs:attribute name="MsgPart" default="Envelope"> - <xs:simpleType> - <xs:restriction base="xs:NMTOKEN"> - <xs:enumeration value="Envelope"/> - <xs:enumeration value="Header"/> - <xs:enumeration value="Body"/> - </xs:restriction> - </xs:simpleType> - </xs:attribute> - </xs:extension> - </xs:complexContent> - </xs:complexType> - </xs:element> - <xs:element name="MsgBoxStatusListRequest" type="osci:MsgBoxStatusListRequestType"/> - <xs:complexType name="MsgBoxStatusListRequestType"> - <xs:complexContent> - <xs:extension base="osci:MsgBoxRequestType"> - <xs:attribute name="maxListItems" type="xs:positiveInteger"/> - <xs:attribute name="ListForm"> - <xs:simpleType> - <xs:restriction base="xs:NMTOKEN"> - <xs:enumeration value="MsgAtrributes"/> - <xs:enumeration value="MessageMetaData"/> - </xs:restriction> - </xs:simpleType> - </xs:attribute> - </xs:extension> - </xs:complexContent> - </xs:complexType> - <xs:element name="MsgBoxResponse" type="osci:MsgBoxResponseType"/> - <xs:element name="MsgBoxGetNextRequest" type="osci:MsgBoxGetNextRequestType"/> - <xs:complexType name="MsgBoxGetNextRequestType"> - <xs:sequence minOccurs="0"> - <xs:element name="LastMsgReceived" type="wsa:AttributedURIType" maxOccurs="unbounded"/> - </xs:sequence> - <xs:attribute name="MsgBoxRequestID" type="xs:anyURI" use="required"/> - </xs:complexType> - <xs:element name="MsgBoxCloseRequest" type="osci:MsgBoxCloseRequestType"/> - <xs:complexType name="MsgBoxCloseRequestType"> - <xs:sequence minOccurs="0"> - <xs:element name="LastMsgReceived" type="wsa:AttributedURIType" maxOccurs="unbounded"/> - </xs:sequence> - <xs:attribute name="MsgBoxRequestID" type="xs:anyURI" use="required"/> - </xs:complexType> - <!--Types and Elements for Receipt- and Notification Handling--> - <xs:attribute name="qualTSPForReceipt" type="xs:boolean" default="false"/> - <xs:attribute name="echoRequest" type="xs:boolean" default="false"/> - <xs:complexType name="ReceiptDemandType"> - <xs:sequence> - <xs:element ref="wsa:ReplyTo"/> - </xs:sequence> - <xs:attribute name="qualTSPForReceipt" type="xs:boolean" default="false"/> - <xs:attribute name="echoRequest" type="xs:boolean" default="false"/> - </xs:complexType> - <xs:element name="DeliveryReceiptDemand" type="osci:DeliveryReceiptDemandType"/> - <xs:element name="ReceptionReceiptDemand" type="osci:ReceptionReceiptDemandType"/> - <xs:element name="ReceiptInfo" type="osci:ReceiptInfoType"/> - <xs:complexType name="ReceiptInfoType"> - <xs:sequence> - <xs:element ref="wsa:MessageID"/> - <xs:element ref="osci:MsgTimeStamps"/> - <xs:element ref="wsa:RelatesTo" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="To" type="wsa:EndpointReferenceType"/> - <xs:element ref="wsa:From" minOccurs="0"/> - <xs:element ref="wsa:ReplyTo"/> - <xs:element name="RequestEcho" type="xs:base64Binary" minOccurs="0"/> - <xs:element ref="oscimeta:MessageMetaData" minOccurs="0"/> - </xs:sequence> - <xs:attribute name="Id" type="xs:ID" use="required"/> - <xs:attribute name="ReceiptIssuerRole" use="optional"> - <xs:simpleType> - <xs:restriction base="xs:anyURI"> - <xs:enumeration value="http://www.osci.eu/ws/2008/05/transport/role/MsgBox"/> - <xs:enumeration value="http://www.osci.eu/ws/2008/05/transport/role/Recipient"/> - <xs:enumeration value="http://www.osci.eu/ws/2008/05/transport/role/Sender -"/> - <xs:enumeration value="http://www.osci.eu/ws/2008/05/transport/role/Relay -"/> - </xs:restriction> - </xs:simpleType> - </xs:attribute> - </xs:complexType> - <xs:complexType name="DeliveryReceiptDemandType"> - <xs:complexContent> - <xs:restriction base="osci:ReceiptDemandType"> - <xs:sequence> - <xs:element ref="wsa:ReplyTo"/> - </xs:sequence> - </xs:restriction> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="ReceptionReceiptDemandType"> - <xs:complexContent> - <xs:restriction base="osci:ReceiptDemandType"> - <xs:sequence> - <xs:element ref="wsa:ReplyTo"/> - </xs:sequence> - </xs:restriction> - <!-- xs:attribute ref="s12:role" fixed="http://www.w3.org/2003/05/soap-envelope/role/ultimateReceiver"/--> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="DeliveryReceiptType"> - <xs:sequence> - <xs:element ref="osci:ReceiptInfo"/> - <xs:element ref="ds:Signature"/> - </xs:sequence> - </xs:complexType> - <xs:element name="DeliveryReceipt" type="osci:DeliveryReceiptType"/> - <xs:element name="SubmissionReceipt" type="osci:DeliveryReceiptType"/> - <xs:element name="RelayReceipt" type="osci:DeliveryReceiptType"/> - <xs:complexType name="ReceptionReceiptType"> - <xs:sequence> - <xs:element ref="osci:ReceiptInfo"/> - <xs:element ref="ds:Signature"/> - </xs:sequence> - </xs:complexType> - <xs:element name="ReceptionReceipt" type="osci:ReceptionReceiptType"/> - <xs:complexType name="FetchedNotificationDemandType"> - <xs:sequence> - <xs:element ref="wsa:ReplyTo"/> - </xs:sequence> - <xs:attribute ref="s12:role" default="http://www.osci.eu/ws/2008/05/transport/role/MsgBox"/> - </xs:complexType> - <xs:element name="FetchedNotificationDemand" type="osci:FetchedNotificationDemandType"/> - <xs:complexType name="FetchedNotificationType"> - <xs:sequence> - <xs:element name="FetchedTime" type="xs:dateTime"/> - <xs:element ref="wsa:MessageID"/> - <xs:element ref="wsa:To"/> - <xs:element ref="wsa:From"/> - </xs:sequence> - </xs:complexType> - <xs:element name="FetchedNotification" type="osci:FetchedNotificationType"/> - <!--Extentensions for Key usage context--> - <xs:complexType name="X509TokenContainerType"> - <xs:sequence maxOccurs="unbounded"> - <xs:element ref="osci:X509TokenInfo"/> - </xs:sequence> - <xs:attribute name="validateCompleted" type="xs:boolean" default="false"/> - </xs:complexType> - <xs:element name="X509TokenContainer" type="osci:X509TokenContainerType"/> - <xs:element name="X509TokenInfo"> - <xs:complexType> - <xs:sequence> - <xs:element ref="ds:X509Data"/> - <xs:element name="TokenApplication" maxOccurs="unbounded"> - <xs:complexType> - <xs:sequence> - <xs:element name="TimeInstant" type="xs:dateTime"/> - <xs:element name="MsgItemRef" type="xs:IDREF" minOccurs="0"/> - </xs:sequence> - <xs:attribute name="validateResultRef" type="xs:IDREF"/> - <xs:attribute name="ocspNoCache" type="xs:boolean"/> - </xs:complexType> - </xs:element> - </xs:sequence> - <xs:attribute name="validated" type="xs:boolean" default="false"/> - <xs:attribute name="Id" type="xs:ID" use="required"/> - <!-- RFC 3280 for KeyUsage with Extentensions Attribute Certificate and usage for Authentication --> - </xs:complexType> - <!--OSCI Policy Asserstions--> - <!--Policy qualified Timestamp Servcie available--> - </xs:element> - <!--Poliy Assertion carrying Endpoints X509Certificates--> - <xs:element name="X509CertificateAssertion"> - <xs:complexType> - <xs:sequence> - <xs:element ref="wsp:All"/> - </xs:sequence> - </xs:complexType> - </xs:element> - <!--Policy, when qualified TSP service can be requested from this node--> - <xs:element name="QualTspAssertion"> - <xs:complexType> - <xs:attribute name="PolicyRef" type="xs:anyURI"/> - </xs:complexType> - </xs:element> - <!--Policy if and how MsgTimeStamps:OsoleteAfter is handled--> - <xs:element name="ObsoleteAfterAssertion"> - <xs:complexType> - <xs:sequence> - <xs:element name="MsgRetainDays" type="xs:positiveInteger"/> - <xs:element name="WarningBeforeMsgObsolete" type="xs:positiveInteger" minOccurs="0"/> - </xs:sequence> - <xs:attribute name="PolicyRef" type="xs:anyURI"/> - </xs:complexType> - </xs:element> - <!--Poliy for MakeConnection: Response Retention Days--> - <xs:element name="MsgRetainDays" type="xs:positiveInteger"/> - <!--Enumeration for possible X509 Token Usages--> - <xs:attribute name="TokenUsage"> - <xs:simpleType> - <xs:restriction base="xs:anyURI"> - <xs:enumeration value="http://www.osci.eu/common/names/TokenUsage/e2eContentEncryption"/> - <xs:enumeration value="http://www.osci.eu/common/names/TokenUsage/TransportEncryption"/> - <xs:enumeration value="http://www.osci.eu/common/names/TokenUsage/ReceiptSigning"/> - <xs:enumeration value="http://www.osci.eu/common/names/TokenUsage/TSPSigning"/> - </xs:restriction> - </xs:simpleType> - </xs:attribute> - <!--Opaque Body Type - not used--> - <!--Policy maximum accepted Message size and Frequency per hour--> - <xs:element name="AcceptedMsgLimits"> - <xs:complexType> - <xs:sequence> - <xs:element name="MaxSize" type="xs:positiveInteger"/> - <xs:element name="MaxPerHour" type="xs:positiveInteger"/> - </xs:sequence> - </xs:complexType> - </xs:element> - <xs:complexType name="MessageBody"> - <xs:sequence> - <xs:any namespace="##any" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> -</xs:schema> diff --git a/xta-adapter/src/main/xsd/OSCI_MessageMetaData_V2.02.xsd b/xta-adapter/src/main/xsd/OSCI_MessageMetaData_V2.02.xsd deleted file mode 100644 index fd04e3ed..00000000 --- a/xta-adapter/src/main/xsd/OSCI_MessageMetaData_V2.02.xsd +++ /dev/null @@ -1,379 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!--Schema for OSCI Message Meta Data - last edited 2015-02-19 --> -<!-- Change 2015-02-19: MessageType amended by mandatory attribte @payloadSchema --> -<!-- Change 2015-01-23: Alignment with XTA/KoSIT: introduced KeyCodeType, changed PropertyType, BusinessScenarioType, MessageType; ServiceQuality (to #any type), SecurityToken may carry IDREF attribute to token in payload now; usage attribute mandatory now --> -<!-- Change 2014-11-30: xoev basis data type schema version changed from 1_0 to 1_1 --> -<!-- Last recent changes: Codelist for BusinessScenarioTypes defined and imported --> -<!-- Changes: 2.0.2: Adoption of xoev:Codelist type for some elements; eliminating QName typed attributes/elements; PartyType elements now may include optional SecurityTokens (as e.g. used in XVergabe) --> -<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:oscimeta="http://www.osci.eu/ws/2014/10/transport" xmlns:wsa="http://www.w3.org/2005/08/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:xoev-dt="http://xoev.de/schemata/basisdatentypen/1_1" targetNamespace="http://www.osci.eu/ws/2014/10/transport" elementFormDefault="qualified" attributeFormDefault="unqualified"> - <xs:import namespace="http://www.w3.org/2005/08/addressing" schemaLocation="ws-addr.xsd"/> - <xs:import namespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" schemaLocation="oasis-200401-wss-wssecurity-secext-1.0.xsd"/> - <xs:import namespace="http://xoev.de/schemata/basisdatentypen/1_1" schemaLocation="xoev-basisdatentypen.xsd"/> - <xs:simpleType name="NonEmptyStringType"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="NonEmptyURIType"> - <xs:restriction base="xs:anyURI"> - <xs:minLength value="1"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="AnyType" mixed="true"> - <xs:sequence minOccurs="0" maxOccurs="unbounded"> - <xs:any namespace="##any" processContents="lax"/> - </xs:sequence> - <xs:anyAttribute namespace="##any"/> - </xs:complexType> - <!-- End AnyType --> - <xs:complexType name="ReceiptRequestType"> - <xs:sequence> - <xs:element name="Submission" minOccurs="0"> - <xs:annotation> - <xs:documentation>Sending node: Message accepted for delivery and submitted</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Relay" minOccurs="0"> - <xs:annotation> - <xs:documentation>Active node on the delivery route: Message forwarded to next hop</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Delivery" minOccurs="0"> - <xs:annotation> - <xs:documentation>Destination node:Successful delivery to Recipient in synchronous scenarios, to MsgBox if asynchronous</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Fetch" minOccurs="0"> - <xs:annotation> - <xs:documentation>Only MsgBox node: Initial fetch of Message by Recipient from his MsgBox</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Reception" minOccurs="0"> - <xs:annotation> - <xs:documentation>Ultimate Recipient node, after acceptance of message, after successful decryption of payload</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="ReceiptTo" type="wsa:EndpointReferenceType" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="DeliveryAttributesType"> - <xs:annotation> - <xs:documentation>Message delivery time instants, quality and receipts requested</xs:documentation> - </xs:annotation> - <xs:sequence> - <xs:annotation> - <xs:documentation>Timestamps, priority etc.</xs:documentation> - </xs:annotation> - <xs:element name="Origin" type="xs:dateTime" minOccurs="0"> - <xs:annotation> - <xs:documentation>Production of content by Requester respective (response) Provider</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="InitialSend" type="xs:dateTime" minOccurs="0"> - <xs:annotation> - <xs:documentation>Time when delivery was started (submission by Senders node)</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="NotBefore" type="xs:dateTime" minOccurs="0"> - <xs:annotation> - <xs:documentation>Time when sending node should submit message</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="ObsoleteAfter" type="xs:date" minOccurs="0"> - <xs:annotation> - <xs:documentation>Date, when this message is obsolete; may be set by Initiator</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Delivery" type="xs:dateTime" minOccurs="0"> - <xs:annotation> - <xs:documentation>Time of entry in a Recipients MsgBox or reception by Recipient in synchronous case</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="InitialFetch" type="xs:dateTime" minOccurs="0"> - <xs:annotation> - <xs:documentation>Time of first comitted fetch from MsgBox by recipient</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Reception" type="xs:dateTime" minOccurs="0"> - <xs:annotation> - <xs:documentation>Reception time set by the Ultimate Recipient ("Reader", target application)</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="ServiceQuality" type="oscimeta:NonEmptyStringType" minOccurs="0"> - <xs:annotation> - <xs:documentation>Property like priority etc. - XTA here points to "Service Profile"</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="ReceiptRequests" type="oscimeta:ReceiptRequestType" minOccurs="0"> - <xs:annotation> - <xs:documentation>Receipts requested by sender or author</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - </xs:complexType> - <xs:element name="SecurityToken"> - <xs:complexType> - <xs:choice> - <xs:element ref="wsse:BinarySecurityToken"/> - <xs:element ref="wsse:SecurityTokenReference"/> - <xs:element ref="wsse:UsernameToken"/> - </xs:choice> - <xs:attribute name="usage" use="required"> - <xs:simpleType> - <xs:restriction base="xs:NMTOKEN"> - <xs:enumeration value="AUTHENTICATION"/> - <xs:enumeration value="ENCRYPTION"/> - <xs:enumeration value="SIGNATURE"/> - </xs:restriction> - </xs:simpleType> - </xs:attribute> - <xs:attribute name="payloadRef" type="xs:IDREF"/> - </xs:complexType> - </xs:element> - <xs:complexType name="PartyType"> - <xs:annotation> - <xs:documentation>Logical identifier and optional security tokens of that entity (binary, may carry SAML, too) </xs:documentation> - </xs:annotation> - <xs:sequence> - <xs:element name="Identifier" type="oscimeta:PartyIdentifierType"/> - <xs:element ref="oscimeta:SecurityToken" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="PartyIdentifierType"> - <xs:annotation> - <xs:documentation>Value of generic party identifier, as classified by @type attribute, e.g.: Prefix:Kennung</xs:documentation> - </xs:annotation> - <xs:simpleContent> - <xs:extension base="xs:normalizedString"> - <xs:attribute name="type" type="oscimeta:NonEmptyStringType" use="required"> - <xs:annotation> - <xs:documentation>Orientation: ebMS Core: type, how to interpret Party-Id value, e.g.: xöv oder Justiz</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="name" type="oscimeta:NonEmptyStringType"> - <xs:annotation> - <xs:documentation>optional "friendly name" value for displaying in user agents (as e.g. known from eMail)</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="category" type="oscimeta:NonEmptyStringType"> - <xs:annotation> - <xs:documentation>Concrete role of party in business scenario (e.g. "buyer", "Meldehörde", "Standesamt"...)</xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - <xs:element name="Author" type="oscimeta:PartyType"> - <xs:annotation> - <xs:documentation>Requester resp. (response-) Provider</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Reader" type="oscimeta:PartyType"> - <xs:annotation> - <xs:documentation>Destinations of the message</xs:documentation> - </xs:annotation> - </xs:element> - <xs:complexType name="OriginatorsType"> - <xs:sequence> - <xs:element ref="oscimeta:Author"/> - <xs:element ref="oscimeta:Sender" minOccurs="0"/> - <xs:element name="ReplyTo" type="oscimeta:PartyType" minOccurs="0"> - <xs:annotation> - <xs:documentation>If response expected different from value outlined in "From" address</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - </xs:complexType> - <xs:complexType name="DestinationsType"> - <xs:sequence> - <xs:element ref="oscimeta:Reader"> - <xs:annotation> - <xs:documentation>Ultimate target of the message</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element ref="oscimeta:OtherDestinations" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ProcessIdentifierType"> - <xs:annotation> - <xs:documentation>Process ID message is realated to</xs:documentation> - </xs:annotation> - <xs:simpleContent> - <xs:extension base="oscimeta:NonEmptyStringType"> - <xs:attribute name="ProccesName" type="oscimeta:NonEmptyStringType"> - <xs:annotation> - <xs:documentation>Process may have a name, e.g. "order"</xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - <xs:complexType name="MsgIdentificationType"> - <xs:sequence> - <xs:element ref="wsa:MessageID"/> - <xs:element name="In-Reply-To" type="wsa:AttributedURIType" minOccurs="0" maxOccurs="unbounded"> - <xs:annotation> - <xs:documentation>Referenced application level Message-Id(s)</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="ProcessRef" minOccurs="0"> - <xs:annotation> - <xs:documentation>References to business process-id's (like ebMS Conversation-Id, "Aktenzeichen" in Germany)</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element name="Requester" type="oscimeta:ProcessIdentifierType" minOccurs="0"> - <xs:annotation> - <xs:documentation>Ref on requester (Source Application) side</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Responder" type="oscimeta:ProcessIdentifierType" minOccurs="0"> - <xs:annotation> - <xs:documentation>Ref on responder (Target Application) side, if different</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - </xs:sequence> - </xs:complexType> - <xs:complexType name="KeyCodeType"> - <xs:complexContent> - <xs:restriction base="xoev-dt:Code"> - <xs:sequence> - <xs:element name="code" type="xs:token" form="unqualified"/> - <xs:element name="name" type="xs:normalizedString" form="unqualified" minOccurs="0"/> - </xs:sequence> - <xs:attribute name="listURI" type="xs:anyURI" use="required"/> - <xs:attribute name="listVersionID" type="xs:normalizedString" use="required"/> - </xs:restriction> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="PropertyType"> - <xs:sequence> - <xs:element name="Key" type="oscimeta:KeyCodeType"/> - <xs:element name="Value" type="oscimeta:NonEmptyStringType"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="MessagePropertiesType"> - <xs:sequence> - <xs:element name="Property" type="oscimeta:PropertyType" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="QualifierType"> - <xs:sequence> - <xs:element name="Subject" type="xs:string" minOccurs="0"> - <xs:annotation> - <xs:documentation>Message subject text (informational)</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Service" type="xs:anyURI"> - <xs:annotation> - <xs:documentation>Distinct service in a certain business scenario context; in the XÖV context this is the "Dienste URI"</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="BusinessScenario"> - <xs:annotation> - <xs:documentation>Domain qualifier, e.g. Meldewesen, XVergabe...</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:choice> - <xs:element name="Defined" type="oscimeta:KeyCodeType"/> - <xs:element name="Undefined" type="xs:normalizedString"/> - </xs:choice> - </xs:complexType> - </xs:element> - <xs:element name="MessageType"> - <xs:annotation> - <xs:documentation>Payload: Type of document or message. MessageTypes normally bound to specific BusinessScenario</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:complexContent> - <xs:extension base="oscimeta:KeyCodeType"> - <xs:attribute name="payloadSchema" type="oscimeta:NonEmptyURIType" use="required"/> - </xs:extension> - </xs:complexContent> - </xs:complexType> - </xs:element> - </xs:sequence> - </xs:complexType> - <xs:element name="DeliveryAttributes" type="oscimeta:DeliveryAttributesType"> - <xs:annotation> - <xs:documentation>Time stamps, receipts to be generated, service quality</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Originators" type="oscimeta:OriginatorsType"> - <xs:annotation> - <xs:documentation>Message originators and reply address</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Destinations" type="oscimeta:DestinationsType"> - <xs:annotation> - <xs:documentation>Actual and other destinations of Message</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="MsgIdentification" type="oscimeta:MsgIdentificationType"> - <xs:annotation> - <xs:documentation>Message ID and Message relations</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Qualifier" type="oscimeta:QualifierType"> - <xs:annotation> - <xs:documentation>General payload properties, common to all scenarios</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="MessageProperties"> - <xs:annotation> - <xs:documentation>Scenarios specific payload properties, to be agreed upon per scenario</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element name="Property" type="oscimeta:PropertyType" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - </xs:element> - <xs:element name="Sender" type="oscimeta:PartyType"> - <xs:annotation> - <xs:documentation>Sending node, entry may be added by Sender node</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="OtherDestinations"> - <xs:annotation> - <xs:documentation>Other destinations of message - informational, as known from e-mail</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element ref="oscimeta:OtherReaders" maxOccurs="unbounded"/> - <xs:element ref="oscimeta:CcReaders" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - </xs:element> - <xs:element name="OtherReaders" type="oscimeta:PartyIdentifierType"/> - <xs:element name="CcReaders" type="oscimeta:PartyIdentifierType"> - <xs:annotation> - <xs:documentation>Destinations in cc role</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="MessageMetaData"> - <xs:complexType> - <xs:sequence> - <xs:element ref="oscimeta:DeliveryAttributes"/> - <xs:element ref="oscimeta:Originators"/> - <xs:element ref="oscimeta:Destinations"/> - <xs:element ref="oscimeta:MsgIdentification"/> - <xs:element ref="oscimeta:Qualifier"/> - <xs:element ref="oscimeta:MessageProperties" minOccurs="0"/> - <xs:element name="MsgSize" type="xs:positiveInteger" minOccurs="0"> - <xs:annotation> - <xs:documentation>Message size in bytes</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - <xs:attribute name="TestMsg" type="xs:boolean" default="false"> - <xs:annotation> - <xs:documentation>"true", if test-message; defaults to "false"</xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:complexType> - </xs:element> -</xs:schema> diff --git a/xta-adapter/src/main/xsd/XTA-Webservice-Datentypen.xsd b/xta-adapter/src/main/xsd/XTA-Webservice-Datentypen.xsd deleted file mode 100644 index 69902b49..00000000 --- a/xta-adapter/src/main/xsd/XTA-Webservice-Datentypen.xsd +++ /dev/null @@ -1,544 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xta="http://xoev.de/transport/xta/211" xmlns:oscimeta="http://www.osci.eu/ws/2014/10/transport" xmlns:xoev-dt="http://xoev.de/schemata/basisdatentypen/1_1" targetNamespace="http://xoev.de/transport/xta/211" elementFormDefault="qualified" attributeFormDefault="unqualified" version="2.1.1"> - <xs:annotation> - <xs:documentation>Hier wird die Sammlung von Typen dargestellt, welche innerhalb des Standards XTA definiert und verwendet werden.</xs:documentation> - </xs:annotation> - <xs:import namespace="http://xoev.de/schemata/basisdatentypen/1_1" schemaLocation="xoev-basisdatentypen.xsd"/> - <xs:import namespace="http://www.osci.eu/ws/2014/10/transport" schemaLocation="OSCI_MessageMetaData_V2.02.xsd"/> - <xs:complexType name="AdditionalReportListType"> - <xs:annotation> - <xs:documentation>Dieser Typ gestattet das Ablegen weiterer Prüfberichte, welche das XTA-Protokoll (TransportReport) ergänzen sollen.</xs:documentation> - </xs:annotation> - <xs:sequence> - <xs:element name="Report" maxOccurs="unbounded"> - <xs:annotation> - <xs:documentation>In diesem Element ist ein zusätzlicher Report abgelegt, der das XTA-Protokoll (TransportReport) ergänzt. Die Art des Reports (z. B. OSCI Process Card) und der Inhalt des Reports werden bzw. sind in separaten Bereichen dieses Containers eingetragen.</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element name="Key" type="xta:Code.ReportType"> - <xs:annotation> - <xs:documentation>Dieses Element benennt den Typ des Reports, um dem Leser die Interpretation der Reportdaten zu ermöglichen. Die Benennung des Typs des Reports geschieht auf der Basis einer Codeliste.</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Data" type="xs:base64Binary"> - <xs:annotation> - <xs:documentation>Hier wird der zusätzliche Report in einem technisch neutralen Format eingetragen.</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - </xs:sequence> - </xs:complexType> - <xs:complexType name="Code.Fehlernummer"> - <xs:annotation> - <xs:appinfo> - <listAgencyName>Koordinierungsstelle für IT-Standards (KoSIT)</listAgencyName> - <listName>XTA-WS Fehlernummer</listName> - </xs:appinfo> - <xs:documentation>Diese Codeliste gibt eine Übersicht über die in XTA-WS zu verwendenden Fehlernummern (ErrorCodes) und ordnet sie den Exceptions zu, in deren Kontext sie auftreten können.</xs:documentation> - </xs:annotation> - <xs:complexContent> - <xs:restriction base="xoev-dt:Code"> - <xs:sequence> - <xs:element name="code" type="xs:token" form="unqualified"/> - <xs:element name="name" type="xs:normalizedString" form="unqualified"/> - </xs:sequence> - <xs:attribute name="listURI" type="xs:anyURI" use="optional" fixed="urn:de:xta:webservice:codeliste:fehlernummer"/> - <xs:attribute name="listVersionID" type="xs:normalizedString" use="optional" fixed="1.0"/> - </xs:restriction> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="Code.RecordType"> - <xs:annotation> - <xs:appinfo> - <listAgencyName>N.N.</listAgencyName> - <listName>Record Type</listName> - </xs:appinfo> - <xs:documentation>In diesen Typ ist eine auszuwählende bzw. selbst zu definierende Codeliste einzubinden, die Arten von Meldungen benennt, welche in das Protokoll zur Abarbeitung eines Transportauftrags (TransportReport) eingetragen werden. Dort können die Meldungen als Fehler-, Warn- oder Informationseinträge eingeordnet sein. -In die Attribute des vorliegenden Typs sind die Codelisten-URI und die Nummer der Version der ausgewählten Codeliste einzutragen. - -Die KoSIT hat die Absicht, für den Standard XTA eine passende Codeliste zu definieren und als einheitliches Angebot zur Einbindung für diesen Typ bereitzustellen. Diese Codeliste ist, wenn die Bereitstellung erfolgt ist, im XRepository (www.xrepository.de) unter der Codelisten-URI urn:de:xta:codeliste:record.type auffindbar und kann von dort im XML-Format OASIS Genericode abgerufen werden.</xs:documentation> - </xs:annotation> - <xs:complexContent> - <xs:restriction base="xoev-dt:Code"> - <xs:sequence> - <xs:element name="code" type="xs:token" form="unqualified"> - <xs:annotation> - <xs:documentation>In diesem Element ist ein Schlüssel aus der referenzierten Codeliste einzutragen.</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - <xs:attribute name="listURI" type="xs:anyURI" use="required"> - <xs:annotation> - <xs:documentation>Hier wird die URI einer Codeliste eingetragen, die dadurch hier eingebunden ist. Es ist die Codeliste dafür auszuwählen, auf deren Basis der übermittelte Schlüssel durch den Leser der Nachricht interpretiert werden soll.</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="listVersionID" type="xs:normalizedString" use="required"> - <xs:annotation> - <xs:documentation>Die Version der Codeliste, welche der Interpretation des übermittelten Schlüssels zu Grunde gelegt werden soll.</xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:restriction> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="Code.ReportType"> - <xs:annotation> - <xs:appinfo> - <listAgencyName>N.N.</listAgencyName> - <listName>Report Type</listName> - </xs:appinfo> - <xs:documentation>Dieser Typ gestattet die Kennzeichnung der Art eines zusätzlichen Reports. Es wird eine zu wählende Codeliste eingebunden, die mögliche Arten von Reports nennt (spezielles Format, innerhalb oder außerhalb von XTA definiert), die in das XTA-Protokoll (TransportReport) eingefügt werden können. -Die KoSIT gibt für den Standard XTA eine Codeliste heraus, welche Einträge für einschlägige Arten von Reports auflistet. Diese Codeliste kann auf Antrag erweitert bzw. geändert werden. Sie ist durch XTA-konforme Systeme für übergreifende Prozesse zu verwenden. -Diese Codeliste ist im XRepository (www.xrepository.de) unter Nennung ihrer Codelisten-URI urn:de:xta:codeliste:report.type auffindbar und kann dort im XML-Format OASIS Genericode in der aktuellen Version abgerufen werden (ggf. sind auch frühere Versionen verfügbar). In die Attribute des vorliegenden Typs sind entsprechend ihre Codelisten-URI und die Nummer der ausgewählten Version einzutragen. -Für lokale Zwecke können XTA-Kommunikationspartner auch eigene Codelisten definieren (welche bilateral abgestimmte Reportformate benennen) und an dieser Stelle einbinden. In die Attribute des vorliegenden Typs werden dann Codelisten-URI und Versionsnummer der selbstdefinierten Codeliste eingetragen.</xs:documentation> - </xs:annotation> - <xs:complexContent> - <xs:restriction base="xoev-dt:Code"> - <xs:sequence> - <xs:element name="code" type="xs:token" form="unqualified"> - <xs:annotation> - <xs:documentation>In diesem Element ist ein Schlüssel aus der referenzierten Codeliste einzutragen.</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - <xs:attribute name="listURI" type="xs:anyURI" use="required"> - <xs:annotation> - <xs:documentation>Hier wird die URI einer Codeliste eingetragen, die dadurch hier eingebunden ist. Es ist die Codeliste dafür auszuwählen, auf deren Basis der übermittelte Schlüssel durch den Leser der Nachricht interpretiert werden soll.</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="listVersionID" type="xs:normalizedString" use="required"> - <xs:annotation> - <xs:documentation>Die Version der Codeliste, welche der Interpretation des übermittelten Schlüssel zu Grunde gelegt werden soll.</xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:restriction> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="Code.ServiceParameterType"> - <xs:annotation> - <xs:appinfo> - <listAgencyName>N.N.</listAgencyName> - <listName>Service Parameter Type</listName> - </xs:appinfo> - <xs:documentation>Dieser Typ gestattet die Kennzeichnung der Art eines Parameters für die technische Erreichbarkeit des Dienstes, der adressiert werden soll. -Hier wird eine zu wählende Codeliste eingebunden, die mögliche Parameterarten nennt. -Die KoSIT gibt für den Standard XTA eine Codeliste heraus, welche einschlägige solcher Parameterarten auflistet. Diese Codeliste kann auf Antrag erweitert bzw. geändert werden. Sie ist durch XTA-konforme Systeme für übergreifende Prozesse zu verwenden. -Diese Codeliste ist im XRepository (www.xrepository.de) unter Nennung ihrer Codelisten-URI urn:de:xta:codeliste:service.parameter.type auffindbar und kann dort im XML-Format OASIS Genericode in der aktuellen Version abgerufen werden (ggf. sind auch frühere Versionen verfügbar). In die Attribute des vorliegenden Typs sind entsprechend ihre Codelisten-URI und die Nummer der ausgewählten Version einzutragen. -Für lokale Zwecke können XTA-Kommunikationspartner auch eigene Codelisten definieren (welche bilateral abgestimmte Parameterarten benennen) und an dieser Stelle einbinden. In die Attribute des vorliegenden Typs werden dann Codelisten-URI und Versionsnummer der selbstdefinierten Codeliste eingetragen.</xs:documentation> - </xs:annotation> - <xs:complexContent> - <xs:restriction base="xoev-dt:Code"> - <xs:sequence> - <xs:element name="code" type="xs:token" form="unqualified"> - <xs:annotation> - <xs:documentation>In diesem Element ist ein Schlüssel aus der referenzierten Codeliste einzutragen.</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - <xs:attribute name="listURI" type="xs:anyURI" use="required"> - <xs:annotation> - <xs:documentation>Hier wird die URI einer Codeliste eingetragen, die dadurch hier eingebunden ist. Es ist die Codeliste dafür auszuwählen, auf deren Basis der übermittelte Schlüssel durch den Leser der Nachricht interpretiert werden soll.</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="listVersionID" type="xs:normalizedString" use="required"> - <xs:annotation> - <xs:documentation>Die Version der Codeliste, welche der Interpretation des übermittelten Schlüssel zu Grunde gelegt werden soll.</xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:restriction> - </xs:complexContent> - </xs:complexType> - <xs:simpleType name="Codelist.Fehlernummer"> - <xs:annotation/> - <xs:restriction base="xs:token"> - <xs:enumeration value="9000"> - <xs:annotation> - <xs:appinfo> - <codeName>Unspezifizierter Fehler, als Freitext beschrieben</codeName> - </xs:appinfo> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="9010"> - <xs:annotation> - <xs:appinfo> - <codeName>Authentisierung/Zertifikat ist abgelaufen.</codeName> - </xs:appinfo> - <xs:documentation>PermissiondeniedException</xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="9011"> - <xs:annotation> - <xs:appinfo> - <codeName>Account ist gesperrt.</codeName> - </xs:appinfo> - <xs:documentation>PermissiondeniedException</xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="9012"> - <xs:annotation> - <xs:appinfo> - <codeName>Account nicht vorhanden.</codeName> - </xs:appinfo> - <xs:documentation>PermissiondeniedException</xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="9013"> - <xs:annotation> - <xs:appinfo> - <codeName>Dienst ist nicht gebucht.</codeName> - </xs:appinfo> - <xs:documentation>PermissiondeniedException</xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="9014"> - <xs:annotation> - <xs:appinfo> - <codeName>Authentisierung/Zertifikat passt nicht zur Absenderkennung.</codeName> - </xs:appinfo> - <xs:documentation>PermissiondeniedException</xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="9020"> - <xs:annotation> - <xs:appinfo> - <codeName>Keine Parameter vorhanden</codeName> - </xs:appinfo> - <xs:documentation>ParameterIsNotValidExeption</xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="9021"> - <xs:annotation> - <xs:appinfo> - <codeName>Keine gültige URI</codeName> - </xs:appinfo> - <xs:documentation>ParameterIsNotValidExeption</xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="9022"> - <xs:annotation> - <xs:appinfo> - <codeName>Ungültige Parameterkombination</codeName> - </xs:appinfo> - <xs:documentation>ParameterIsNotValidException</xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="9023"> - <xs:annotation> - <xs:appinfo> - <codeName>Die Nachricht überschreitet die Größenbeschränkung.</codeName> - </xs:appinfo> - <xs:documentation>ParameterIsNotValidException</xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="9024"> - <xs:annotation> - <xs:appinfo> - <codeName>MessageID ist bereits vergeben.</codeName> - </xs:appinfo> - <xs:documentation>ParameterIsNotValidException</xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="9030"> - <xs:annotation> - <xs:appinfo> - <codeName>Interner Fehler beim XTA-Server bzw. XTA-Dienstleister</codeName> - </xs:appinfo> - <xs:documentation>XTAWSTechnicalProblemException</xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="9031"> - <xs:annotation> - <xs:appinfo> - <codeName>Fehler beim externen Verzeichnisdienst</codeName> - </xs:appinfo> - <xs:documentation>XTAWSTechnicalProblemException</xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="9032"> - <xs:annotation> - <xs:appinfo> - <codeName>Fehler bei der Zustellung</codeName> - </xs:appinfo> - <xs:documentation>XTAWSTechnicalProblemException</xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="9050"> - <xs:annotation> - <xs:appinfo> - <codeName>Fachnachricht ist nicht schemakonform</codeName> - </xs:appinfo> - <xs:documentation>MessageSchemaViolationException</xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="9051"> - <xs:annotation> - <xs:appinfo> - <codeName>Fachnachricht trägt ein falsches Encoding.</codeName> - </xs:appinfo> - <xs:documentation>MessageSchemaViolationException</xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="9052"> - <xs:annotation> - <xs:appinfo> - <codeName>Nachricht verletzt das entsprechende Service Profil.</codeName> - </xs:appinfo> - <xs:documentation>MessageSchemaViolationException</xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="9060"> - <xs:annotation> - <xs:appinfo> - <codeName>Es wurde schadhafter Code ermittelt.</codeName> - </xs:appinfo> - <xs:documentation>MessageVirusDetectionException</xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="9070"> - <xs:annotation> - <xs:appinfo> - <codeName>MessageID für den Account nicht bekannt.</codeName> - </xs:appinfo> - <xs:documentation>InvalidMessageIDException</xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="9080"> - <xs:annotation> - <xs:appinfo> - <codeName>Der Dienst wird nur asynchron angeboten.</codeName> - </xs:appinfo> - <xs:documentation>SyncAsyncException</xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="9081"> - <xs:annotation> - <xs:appinfo> - <codeName>Der Dienst wird nur synchron angeboten.</codeName> - </xs:appinfo> - <xs:documentation>SyncAsyncException</xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="9100"> - <xs:annotation> - <xs:appinfo> - <codeName>Der durch den Schalter NotBefore gesetzte Termin ist -verstrichen.</codeName> - </xs:appinfo> - <xs:documentation>CancelDeniedException</xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="9101"> - <xs:annotation> - <xs:appinfo> - <codeName>Der Schalter NotBefore wurde nicht gesetzt.</codeName> - </xs:appinfo> - <xs:documentation>CancelDeniedException</xs:documentation> - </xs:annotation> - </xs:enumeration> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="ContentType"> - <xs:annotation> - <xs:documentation>Typ für die technisch neutrale (base64-kodierte) Darstellung von Information. Enthält den base64-kodierten Inhalt (Fachnachricht), der zwischen WebService-Client und XTA-Server transportiert wird. Die Attribute sind der MIME-Spezifikation (RFC 2183) entnommen. -Die Belegung der Attribute ist für verschiedene Fachlichkeiten unterschiedlich und ist durch den Fachstandard festzulegen, der für die Fachnachricht verantwortlich ist.</xs:documentation> - </xs:annotation> - <xs:simpleContent> - <xs:extension base="xs:base64Binary"> - <xs:attribute name="contentDescription" type="oscimeta:NonEmptyStringType" use="optional"> - <xs:annotation> - <xs:documentation>Beschreibung des fachlichen Inhalts, z.B. 'Angebot' oder 'Rechnung'.</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="contentType" type="oscimeta:NonEmptyStringType" use="required"> - <xs:annotation> - <xs:documentation>Dieses Attribut nennt den MIME-Typ des enthaltenen Inhalts, hat also Einträge wie text/xml, text/plain, application/gzip oder application/pdf. Mandatorisch, weil besonders wichtige Information (wird in E-Mail analog gehandhabt).</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="encoding" type="oscimeta:NonEmptyStringType" use="optional"> - <xs:annotation> - <xs:documentation>Der Zeichensatz, der der Kodierung des Inhalts zugrunde gelegen hat.</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="filename" type="oscimeta:NonEmptyStringType" use="optional"> - <xs:annotation> - <xs:documentation>Der Dateiname der Datenquelle, falls der Inhalt einer Datei entnommen worden ist. Bsp.: Für die Übermittlung von xdomea-Nachrichten ist dieses Attribut Pflicht.</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="id" type="xs:ID" use="optional"> - <xs:annotation> - <xs:documentation>Bietet die Möglichkeit, den Inhalt über z.B. eine laufende Nummer zu referenzieren.</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="lang" type="xs:language" use="optional"> - <xs:annotation> - <xs:documentation>Sprache, in der der Inhalt formuliert ist.</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="size" type="xs:positiveInteger" use="optional"> - <xs:annotation> - <xs:documentation>Die Größe des Inhalts in Bytes.</xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - <xs:complexType name="IsServiceAvailableValueType"> - <xs:annotation> - <xs:documentation>Das Feld enthält die benötigten Attribute zum Ergebnis der Dienstanfrage: ob der Dienst angeboten wird oder nicht, oder ob diese Information generell nicht bekannt ist.</xs:documentation> - </xs:annotation> - <xs:choice> - <xs:element name="ServiceIsAvailable" type="xs:boolean"> - <xs:annotation> - <xs:documentation>Der Dienst wird angeboten (true) oder nicht angeboten (false).</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="ServiceIsAvailableUnknown" type="xs:boolean" fixed="true"> - <xs:annotation> - <xs:documentation>Es ist nicht bekannt, ob der Dienst angeboten wird oder nicht.</xs:documentation> - </xs:annotation> - </xs:element> - </xs:choice> - </xs:complexType> - <xs:complexType name="LookupServiceResultType"> - <xs:annotation> - <xs:documentation>Das Ergebnis zu einer Dienstanfrage, das die Information enthält, ob der Dienst angeboten wird. Außerdem sind die nötigen technischen Paramter für die Erreichbarkeit vorhanden.</xs:documentation> - </xs:annotation> - <xs:complexContent> - <xs:extension base="xta:LookupServiceType"> - <xs:sequence> - <xs:element name="IsServiceAvailableValue" type="xta:IsServiceAvailableValueType"> - <xs:annotation> - <xs:documentation>Enthält das Ergebnis der Dienstanfrage: ob der Dienst angeboten wird oder nicht oder ob diese Information generell nicht bekannt ist.</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="ServiceParameter" minOccurs="0" maxOccurs="unbounded"> - <xs:annotation> - <xs:documentation>Dieses Element enthält im Erfolgsfall die benötigten technischen Parameter für die elektronische Kommunikation mit dem Leser, z.B. das öffentliche Zertifikat des Lesers zur Inhaltsdatenverschlüsselung. Das Feld ist zu füllen, falls der angefragte Dienst angeboten und in diesem Kontext der Parameter benötigt wird. -Vom Fachszenario ist zu beschreiben, welche Parameter für die Erreichbarkeit der Dienste in diesem Fachszenario anzuwenden sind.</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element name="ParameterType" type="xta:Code.ServiceParameterType"> - <xs:annotation> - <xs:documentation>Dieses Element steht für die Art des Parameters, welche ins passende Kindelement einzutragen bzw. eingetragen ist. Die vorgesehenen Parameterarten werden auf der Basis einer Codeliste interpretiert, welche durch die Attribute listURI und listVersionID referenziert ist.</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Resource" type="xs:base64Binary"> - <xs:annotation> - <xs:documentation>Hier ist der Parameter enthalten bzw. einnzutragen in technisch neutraler Darstellung.</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - </xs:sequence> - </xs:extension> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="LookupServiceType"> - <xs:annotation> - <xs:documentation>Dies ist die Struktur einer Service-Anfrage: Sie enthält die Daten über den Diensteanbieter (Leser) und den Dienst des Lesers, den der Autor in Anspruch nehmen will. Diese Anfrage dient dazu, zu ermitteln, ob der Dienst von diesem Anbieter angeboten wird und über welche technischen Parameter er angesprochen werden kann.</xs:documentation> - </xs:annotation> - <xs:sequence> - <xs:element ref="oscimeta:Reader"> - <xs:annotation> - <xs:documentation>Dies ist die fachliche Identifizierung des Lesers. Der Wert entspricht z.B. dem DVDV-Behördenschlüssel.</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="ServiceType" type="xs:anyURI"> - <xs:annotation> - <xs:documentation>Dies ist die Bezeichnung des anzufordernden Dienstes. Sie wird im Format einer URL übergeben, was den Vorteil hat, dass damit auch eine Versionsnummer eingeschlossen ist. Beispiel für Dienstebezeichnungen, wie sie im DVDV verwendet werden: http://www.osci.de/xmeld181/xmeld181Rueckmeldung.wsdl - - -Abgrenzung: "Dienst" ist das, was gemäß Diensteeinteilung der Fachdomäne im Verzeichnisdienst als Service (im Sinne eines Web Service) eingetragen ist. Dadurch ist die Dienstebezeichnung weniger differenziert als der Nachrichtentyp. Typischerweise sind im Verzeichnisdienst mehrere Nachrichtentypen in einer Service-WSDL zusammengefasst.</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - </xs:complexType> - <xs:complexType name="MessageStatusType"> - <xs:annotation> - <xs:documentation>Gibt die Struktur für die Meldungen (Logging-Informationen) über den Transportverlauf vor. Er sieht Meldungszeilen für Infos, Warnungen und Fehler vor.</xs:documentation> - </xs:annotation> - <xs:sequence> - <xs:element name="Status" type="xs:integer"> - <xs:annotation> - <xs:documentation>Wird durch Sender bzw. Empfänger fortgeschrieben. Wird der TransportReport noch fortgeschrieben, wird er hier mit 0=offen markiert. Nach Abschluss des TransportReports wird nach dem Max-Prinzip der höchste Ampelstatus aus den Elementen ErrorList, WarnList, InfoList hier numerisch dargestellt. - - - - -0=offen: Die Nachricht befindet sich noch in der Verarbeitung. -1=grün: Es sind keine Fehler oder Warnungen aufgetreten. -2=gelb: Es sind Warnungen, aber keine kritischen Fehler aufgetreten. -3=rot: Es sind kritische Fehler aufgetreten.</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="ErrorList" minOccurs="0"> - <xs:annotation> - <xs:documentation>Liste der Fehlermeldungen.</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element name="Error" type="xta:RecordType" minOccurs="0" maxOccurs="unbounded"> - <xs:annotation> - <xs:documentation>Hier wird die Fehlermeldung mit ihren Parametern eingetragen.</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - <xs:element name="WarnList" minOccurs="0"> - <xs:annotation> - <xs:documentation>Liste der Warnungen.</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element name="Warning" type="xta:RecordType" minOccurs="0" maxOccurs="unbounded"> - <xs:annotation> - <xs:documentation>Hier wird die Warnung mit ihren Paramtern eingetragen.</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - <xs:element name="InfoList" minOccurs="0"> - <xs:annotation> - <xs:documentation>Liste der Informationsmeldungen.</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element name="Info" type="xta:RecordType" minOccurs="0" maxOccurs="unbounded"> - <xs:annotation> - <xs:documentation>Hier wird die Informationsmeldung mit ihren Parametern eingetragen.</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - </xs:sequence> - </xs:complexType> - <xs:complexType name="RecordType"> - <xs:annotation> - <xs:documentation>Der Typ zur Kennzeichnung und Erläuterung einer Meldung (anwendbar auf Info-, Fehlermeldungen und Warnungen).</xs:documentation> - </xs:annotation> - <xs:sequence> - <xs:element name="Timestamp" type="xs:dateTime"> - <xs:annotation> - <xs:documentation>Zeitstempel für den Zeitpunkt der Aufzeichnung der Meldung.</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Code" type="xta:Code.RecordType"> - <xs:annotation> - <xs:documentation>Schlüssel, der die Bedeutung der Meldung kodiert. Dieser Schlüssel muss aus einer eingebundenen Codeliste stammen.</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Reason" type="xs:string"> - <xs:annotation> - <xs:documentation>Hier wird zur weiteren Erläuterung der Grund der Meldung als Freitext eingetragen.</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - </xs:complexType> -</xs:schema> diff --git a/xta-adapter/src/main/xsd/XTA-Webservice-Exceptions.xsd b/xta-adapter/src/main/xsd/XTA-Webservice-Exceptions.xsd deleted file mode 100644 index 65ab844a..00000000 --- a/xta-adapter/src/main/xsd/XTA-Webservice-Exceptions.xsd +++ /dev/null @@ -1,133 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xta="http://xoev.de/transport/xta/211" targetNamespace="http://xoev.de/transport/xta/211" version="2.1.1" elementFormDefault="qualified" attributeFormDefault="unqualified"> - <xs:annotation> - <xs:documentation>Hier wird die Sammlung von Typen dargestellt, welche innerhalb des Standards XTA verwendet werden, um SOAP Exceptions zu definieren und zu verwenden.</xs:documentation> - </xs:annotation> - <xs:include schemaLocation="XTA-Webservice-Datentypen.xsd" /> - <xs:complexType name="CancelDeniedExceptionType"> - <xs:annotation> - <xs:documentation>Dieser abgeleitete Typ wird vom zugehörigen Exception-Objeikt verwendet.</xs:documentation> - </xs:annotation> - <xs:complexContent> - <xs:extension base="xta:ExceptionType" /> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="ExceptionType"> - <xs:annotation> - <xs:documentation>Dieser Datentyp legt die grundlegende Struktur einer Exception im Rahmen des XTA Webservice fest. Sie kapselt Information zu Identität und Bedeutung eines aufgetretenen Fehlers.</xs:documentation> - </xs:annotation> - <xs:sequence> - <xs:element name="errorCode" type="xta:Code.Fehlernummer"> - <xs:annotation> - <xs:documentation>In diesem Element werden Fehlernummer und Fehlertext übermittelt, die einen Fehler näher beschreiben (gemäß verlinkter Codeliste). -In das Unterelement code ist die Fehlernummer einzutragen, ins Unterelement name die entsprechende textuelle Repräsentation.</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - </xs:complexType> - <xs:complexType name="InvalidMessageIDExceptionType"> - <xs:annotation> - <xs:documentation>Dieser abgeleitete Typ wird vom zugehörigen Exception-Objekt verwendet.</xs:documentation> - </xs:annotation> - <xs:complexContent> - <xs:extension base="xta:ExceptionType" /> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="MessageSchemaViolationExceptionType"> - <xs:annotation> - <xs:documentation>Dieser abgeleitete Typ wird vom zugehörigen Exception-Objekt verwendet.</xs:documentation> - </xs:annotation> - <xs:complexContent> - <xs:extension base="xta:ExceptionType" /> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="MessageVirusDetectionExceptionType"> - <xs:annotation> - <xs:documentation>Dieser abgeleitete Typ wird vom zugehörigen Exception-Objekt verwendet.</xs:documentation> - </xs:annotation> - <xs:complexContent> - <xs:extension base="xta:ExceptionType" /> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="ParameterIsNotValidExceptionType"> - <xs:annotation> - <xs:documentation>Dieser abgeleitete Typ wird vom zugehörigen Exception-Objekt verwendet.</xs:documentation> - </xs:annotation> - <xs:complexContent> - <xs:extension base="xta:ExceptionType" /> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="PermissionDeniedExceptionType"> - <xs:annotation> - <xs:documentation>Dieser abgeleitete Typ wird vom zugehörigen Exception-Objekt verwendet.</xs:documentation> - </xs:annotation> - <xs:complexContent> - <xs:extension base="xta:ExceptionType" /> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="SyncAsyncExceptionType"> - <xs:annotation> - <xs:documentation>Dieser abgeleitete Typ wird vom zugehörigen Exception-Objekt verwendet.</xs:documentation> - </xs:annotation> - <xs:complexContent> - <xs:extension base="xta:ExceptionType" /> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="XTAWSTechnicalProblemExceptionType"> - <xs:annotation> - <xs:documentation>Dieser abgeleitete Typ wird vom zugehörigen Exception-Objekt verwendet.</xs:documentation> - </xs:annotation> - <xs:complexContent> - <xs:extension base="xta:ExceptionType" /> - </xs:complexContent> - </xs:complexType> - <xs:element name="CancelDeniedException" type="xta:CancelDeniedExceptionType"> - <xs:annotation> - <xs:documentation>Diese Exception wird geworfen, falls die Methode cancelMessage aufgerufen wurde, aber der Transportauftrag aus einem der folgenden Gründe nicht zurückgezogen werden kann: - - Der bei Erteilung des Transportauftrags über den Schalter NotBefore gesetzte Termin ist erreicht. - -Der Schalter NotBefore wurde bei Erteilung des Transportauftrags nicht gesetzt.</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="InvalidMessageIDException" type="xta:InvalidMessageIDExceptionType"> - <xs:annotation> - <xs:documentation>Diese Exception wird geworfen, wenn in einem gegebenen Kontext die anhand der ID bezeichnete Nachricht nicht bekannt ist, also beispielsweise nicht geliefert werden kann.</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="MessageSchemaViolationException" type="xta:MessageSchemaViolationExceptionType"> - <xs:annotation> - <xs:documentation>Diese Exception wird geworfen, wenn eine Fachnachricht nicht der jeweiligen Schema-Definition entspricht.</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="MessageVirusDetectionException" type="xta:MessageVirusDetectionExceptionType"> - <xs:annotation> - <xs:documentation>Diese Exception wird geworfen, wenn schadhafter Code in einem der übergebenen Container ermittelt wurde.</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="ParameterIsNotValidException" type="xta:ParameterIsNotValidExceptionType"> - <xs:annotation> - <xs:documentation>Diese Fehlermeldung wird geworfen, wenn ein Parameter nicht korrekt an die Methode übergeben wurde.</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="PermissionDeniedException" type="xta:PermissionDeniedExceptionType"> - <xs:annotation> - <xs:documentation>Diese Exception wird geworfen, wenn der Account gesperrt oder nicht vorhanden ist.</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="SyncAsyncException" type="xta:SyncAsyncExceptionType"> - <xs:annotation> - <xs:documentation>Diese Exception wird geworfen falls dem XTA-Webservice - - eine Nachricht, die nur für die synchrone Weiterleitung gültig ist, für die asynchrone Weiterleitung übergeben wurde oder - -eine Nachricht für die synchrone Weiterleitung übergeben wurde, die nur für die asynchrone Weiterleitung gültig ist.</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="XTAWSTechnicalProblemException" type="xta:XTAWSTechnicalProblemExceptionType"> - <xs:annotation> - <xs:documentation>Diese Exception wird allgemein geworfen, wenn ein technisches Problem im XTA-WS aufgetreten ist. Sie kann z. B. durch ein Problem beim Zugriff auf die interne Datenbank des XTA-Servers ausgelöst worden sein.</xs:documentation> - </xs:annotation> - </xs:element> -</xs:schema> - diff --git a/xta-adapter/src/main/xsd/XTA-Webservice-Globale-Elemente.xsd b/xta-adapter/src/main/xsd/XTA-Webservice-Globale-Elemente.xsd deleted file mode 100644 index 96d58300..00000000 --- a/xta-adapter/src/main/xsd/XTA-Webservice-Globale-Elemente.xsd +++ /dev/null @@ -1,137 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xta="http://xoev.de/transport/xta/211" xmlns:oscimeta="http://www.osci.eu/ws/2014/10/transport" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" targetNamespace="http://xoev.de/transport/xta/211" elementFormDefault="qualified" attributeFormDefault="unqualified" version="2.1.1"> - <xs:annotation> - <xs:documentation>Dies ist die Liste der globalen Elemente, welche durch die Operationen des XTA-WS verwendet werden .</xs:documentation> - </xs:annotation> - <xs:include schemaLocation="XTA-Webservice-Datentypen.xsd"/> - <xs:import namespace="http://www.w3.org/2001/04/xmlenc#" schemaLocation="xenc-schema.xsd"/> - <xs:import namespace="http://www.osci.eu/ws/2014/10/transport" schemaLocation="OSCI_MessageMetaData_V2.02.xsd"/> - <xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="xmldsig-core-schema.xsd"/> - <xs:element name="GenericContentContainer"> - <xs:annotation> - <xs:documentation>Der GenericContentContainer nimmt den zu transportierenden oder abzuliefernden Inhalt auf, z.B. eine XÖV-Nachricht mit ihren Anlagen. Diese Inhalte können unverschlüsselt (Element ContentContainer) oder auch verschlüsselt (Element xenc:EncryptedData) hinterlegt werden. Die Verschlüsselung an dieser Stelle eignet sich für Ende-zu-Ende-Verschlüsselung durch den Autor, wenn dieses Objekt durch den Autor erstellt wird.</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:choice> - <xs:element ref="xenc:EncryptedData"> - <xs:annotation> - <xs:documentation>Dieses Objekt ist dafür vorgesehen, den Container-Inhalt verschlüsselt zu hinterlegen. Im entschlüsselten Zustand müssen die Daten dem Schwester-Element ContentContainer entsprechen.</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="ContentContainer"> - <xs:annotation> - <xs:documentation>Der ContentContainer enthält genau eine Nachricht (Element Message) und null bis beliebig viele Anlagen, die alle in technisch neutraler Darstellung (base64-kodiert) eingefügt werden (Element Attachment). Die Gesamtgröße des Containers darf 40 MB nicht überschreiten.</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element name="Message" type="xta:ContentType"> - <xs:annotation> - <xs:documentation>Enthält den base64-kodierten Inhalt, der zwischen WebService-Client und XTA-Server transportiert wird. Die Attribute sind der MIME-Spezifikation (RFC 2183) entnommen. -Die zu übermittelnde Nachricht als primärer Inhalt dieses Containers ist optional durch Anhänge (Element Attachment) zu ergänzen. -In die Attribute wird je nach Kontext Metainformation zur Nachricht eingetragen.</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Attachment" type="xta:ContentType" minOccurs="0" maxOccurs="unbounded"> - <xs:annotation> - <xs:documentation>Hier können optional ergänzende Anhänge zur übermittelnden Nachricht eingefügt werden. -Die Attribute transportieren je nach Kontext Metainformation zum enthaltenen Anhang.</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - </xs:choice> - </xs:complexType> - </xs:element> - <xs:element name="LookupServiceRequest"> - <xs:annotation> - <xs:documentation>Dies ist eine Liste von Dienstanfragen. -Jede Anfrage dient dazu, zu ermitteln, ob der Dienst von diesem Anbieter angeboten wird, und über welche technischen Parameter er angesprochen werden kann.</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element name="LookupServiceRequestList" maxOccurs="unbounded"> - <xs:annotation> - <xs:documentation>Dies ist die Struktur für eine Liste von Dienstanfragen.</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element name="LookupService" type="xta:LookupServiceType"> - <xs:annotation> - <xs:documentation>Dies ist eine Service-Anfrage. Sie enthält Daten zum potentiellen Diensteanbieter (Leser) und dem Dienst, der angefragt werden soll. Diese Anfrage dient dazu, zu ermitteln, ob der Dienst von diesem Anbieter angeboten wird, und über welche technischen Parameter er angesprochen werden kann.</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - <xs:element name="LookupServiceResponse"> - <xs:annotation> - <xs:documentation>Dies ist das Ergebnis zu einer Liste von Dienstanfragen, also eine Liste von Dienstanfrageergebnissen. Die Anfrage wird jeweils zitiert und das zugehörige Ergebnis ausgegeben.</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element name="LookupServiceResultList"> - <xs:annotation> - <xs:documentation>Die Struktur einer Liste von Dienstanfrageergebnissen.</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element name="LookupServiceResult" type="xta:LookupServiceResultType" nillable="true" maxOccurs="unbounded"> - <xs:annotation> - <xs:documentation>Dies ist die Struktur der Liste von Ergebnissen zur Liste von Diensteanfragen.</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - <xs:element name="TransportReport"> - <xs:annotation> - <xs:documentation>Der TransportReport ist die Struktur des durch XTA standardisierten Transportprotokolls. Neben den übermittelten Nachrichten ruft das Fachverfahren (in den Rollen Autor und Leser) über den Webservice-Client Zusatzinformationen über den Transportauftrag und die Transportereignisse vom XTA-WS ab. - - Um Autor und Leser die Möglichkeit zu geben, die Abarbeitung ihrer Transportaufträge zu überwachen, erstellen Sender und Empfänger Transportprotokolle, die in einer XML-Struktur des Typs TransportReport dargestellt und für Abruf und Auswertung bereit liegen. - -Die Datenstruktur aggregiert die Information zum erteilten Transportauftrag, zum Verlauf des sich anschließenden Transports einschließlich Zertifikatsüberprüfungen mit Ergebnissen.</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element ref="oscimeta:MessageMetaData"> - <xs:annotation> - <xs:documentation>Dieser Container umfasst alle Daten des Transportauftrags, auf dessen Ausführung sich der TransportReport bezieht. Zu den Informationen gehören die Identifizierung von Absender und (einem oder mehreren) Empfängern, Metainformation zu Inhalt und Identität der zu transportierenden Fachnachricht (Payload) sowie weitere Attribute, die Auslieferung, Quittungen und Service Qualität betreffen. -Weitere Informationen zu diesem Objekt sind in zu finden.</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="ReportTime" type="xs:dateTime"> - <xs:annotation> - <xs:documentation>Zeitpunkt der letzten Aktualisierung des Protokolls. Ist bei Fortschreibung des Protokolls zu überschreiben.</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="XTAServerIdentity" type="xs:token"> - <xs:annotation> - <xs:documentation>Hier protokolliert der den TransportReport erstellende Prozess seine Identität als Software-Instanz, indem er z.B. die Server-IP-Adresse oder die URI seines XTA-WS einträgt.</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="MessageStatus" type="xta:MessageStatusType"> - <xs:annotation> - <xs:documentation>Enthält Information über den Veraluf des Transports. Es werden hier Listen mit aufgetretenen Fehler-, Warnungs- und Informationsmeldungen geführt. Außerdem ist nach Schließung des Transportauftrags im Feld Status eine "Schnell-Info" verfügbar.</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="AdditionalReports" type="xta:AdditionalReportListType" minOccurs="0"> - <xs:annotation> - <xs:documentation>Hier sind weitere Prüfberichte abgelegt bzw. abzulegen, welche das XTA-Protokoll (TransportReport) ergänzen sollen.</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element ref="ds:Signature" minOccurs="0"> - <xs:annotation> - <xs:documentation>Falls der TransportReport signiert ist, findet sich hier die Signatur.</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> -</xs:schema> diff --git a/xta-adapter/src/main/xsd/oasis-200401-wss-wssecurity-secext-1.0.xsd b/xta-adapter/src/main/xsd/oasis-200401-wss-wssecurity-secext-1.0.xsd deleted file mode 100644 index 1794066f..00000000 --- a/xta-adapter/src/main/xsd/oasis-200401-wss-wssecurity-secext-1.0.xsd +++ /dev/null @@ -1,195 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- -OASIS takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on OASIS's procedures with respect to rights in OASIS specifications can be found at the OASIS website. Copies of claims of rights made available for publication and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementors or users of this specification, can be obtained from the OASIS Executive Director. -OASIS invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights which may cover technology that may be required to implement this specification. Please address the information to the OASIS Executive Director. -Copyright © OASIS Open 2002-2004. All Rights Reserved. -This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself does not be modified in any way, such as by removing the copyright notice or references to OASIS, except as needed for the purpose of developing OASIS specifications, in which case the procedures for copyrights defined in the OASIS Intellectual Property Rights document must be followed, or as required to translate it into languages other than English. -The limited permissions granted above are perpetual and will not be revoked by OASIS or its successors or assigns. -This document and the information contained herein is provided on an “AS IS” basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. ---> -<xsd:schema targetNamespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope" xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" elementFormDefault="qualified" attributeFormDefault="unqualified" blockDefault="#all" version="0.2"> - <xsd:import namespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" schemaLocation="oasis-200401-wss-wssecurity-utility-1.0.xsd"/> - <xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/> - <xsd:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="xmldsig-core-schema.xsd"/> - <xsd:complexType name="AttributedString"> - <xsd:annotation> - <xsd:documentation>This type represents an element with arbitrary attributes.</xsd:documentation> - </xsd:annotation> - <xsd:simpleContent> - <xsd:extension base="xsd:string"> - <xsd:attribute ref="wsu:Id"/> - <xsd:anyAttribute namespace="##other" processContents="lax"/> - </xsd:extension> - </xsd:simpleContent> - </xsd:complexType> - <xsd:complexType name="PasswordString"> - <xsd:annotation> - <xsd:documentation>This type is used for password elements per Section 4.1.</xsd:documentation> - </xsd:annotation> - <xsd:simpleContent> - <xsd:extension base="wsse:AttributedString"> - <xsd:attribute name="Type" type="xsd:anyURI"/> - </xsd:extension> - </xsd:simpleContent> - </xsd:complexType> - <xsd:complexType name="EncodedString"> - <xsd:annotation> - <xsd:documentation>This type is used for elements containing stringified binary data.</xsd:documentation> - </xsd:annotation> - <xsd:simpleContent> - <xsd:extension base="wsse:AttributedString"> - <xsd:attribute name="EncodingType" type="xsd:anyURI"/> - </xsd:extension> - </xsd:simpleContent> - </xsd:complexType> - <xsd:complexType name="UsernameTokenType"> - <xsd:annotation> - <xsd:documentation>This type represents a username token per Section 4.1</xsd:documentation> - </xsd:annotation> - <xsd:sequence> - <xsd:element name="Username" type="wsse:AttributedString"/> - <xsd:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - </xsd:sequence> - <xsd:attribute ref="wsu:Id"/> - <xsd:anyAttribute namespace="##other" processContents="lax"/> - </xsd:complexType> - <xsd:complexType name="BinarySecurityTokenType"> - <xsd:annotation> - <xsd:documentation>A security token that is encoded in binary</xsd:documentation> - </xsd:annotation> - <xsd:simpleContent> - <xsd:extension base="wsse:EncodedString"> - <xsd:attribute name="ValueType" type="xsd:anyURI"/> - </xsd:extension> - </xsd:simpleContent> - </xsd:complexType> - <xsd:complexType name="KeyIdentifierType"> - <xsd:annotation> - <xsd:documentation>A security token key identifier</xsd:documentation> - </xsd:annotation> - <xsd:simpleContent> - <xsd:extension base="wsse:EncodedString"> - <xsd:attribute name="ValueType" type="xsd:anyURI"/> - </xsd:extension> - </xsd:simpleContent> - </xsd:complexType> - <xsd:simpleType name="tUsage"> - <xsd:annotation> - <xsd:documentation>Typedef to allow a list of usages (as URIs).</xsd:documentation> - </xsd:annotation> - <xsd:list itemType="xsd:anyURI"/> - </xsd:simpleType> - <xsd:attribute name="Usage" type="tUsage"> - <xsd:annotation> - <xsd:documentation>This global attribute is used to indicate the usage of a referenced or indicated token within the containing context</xsd:documentation> - </xsd:annotation> - </xsd:attribute> - <xsd:complexType name="ReferenceType"> - <xsd:annotation> - <xsd:documentation>This type represents a reference to an external security token.</xsd:documentation> - </xsd:annotation> - <xsd:attribute name="URI" type="xsd:anyURI"/> - <xsd:attribute name="ValueType" type="xsd:anyURI"/> - <xsd:anyAttribute namespace="##other" processContents="lax"/> - </xsd:complexType> - <xsd:complexType name="EmbeddedType"> - <xsd:annotation> - <xsd:documentation>This type represents a reference to an embedded security token.</xsd:documentation> - </xsd:annotation> - <xsd:choice minOccurs="0" maxOccurs="unbounded"> - <xsd:any processContents="lax"/> - </xsd:choice> - <xsd:attribute name="ValueType" type="xsd:anyURI"/> - <xsd:anyAttribute namespace="##other" processContents="lax"/> - </xsd:complexType> - <xsd:complexType name="SecurityTokenReferenceType"> - <xsd:annotation> - <xsd:documentation>This type is used reference a security token.</xsd:documentation> - </xsd:annotation> - <xsd:choice minOccurs="0" maxOccurs="unbounded"> - <xsd:any processContents="lax"/> - </xsd:choice> - <xsd:attribute ref="wsu:Id"/> - <xsd:attribute ref="wsse:Usage"/> - <xsd:anyAttribute namespace="##other" processContents="lax"/> - </xsd:complexType> - <xsd:complexType name="SecurityHeaderType"> - <xsd:annotation> - <xsd:documentation>This complexType defines header block to use for security-relevant data directed at a specific SOAP actor.</xsd:documentation> - </xsd:annotation> - <xsd:sequence> - <xsd:any processContents="lax" minOccurs="0" maxOccurs="unbounded"> - <xsd:annotation> - <xsd:documentation>The use of "any" is to allow extensibility and different forms of security data.</xsd:documentation> - </xsd:annotation> - </xsd:any> - </xsd:sequence> - <xsd:anyAttribute namespace="##other" processContents="lax"/> - </xsd:complexType> - <xsd:complexType name="TransformationParametersType"> - <xsd:annotation> - <xsd:documentation>This complexType defines a container for elements to be specified from any namespace as properties/parameters of a DSIG transformation.</xsd:documentation> - </xsd:annotation> - <xsd:sequence> - <xsd:any processContents="lax" minOccurs="0" maxOccurs="unbounded"> - <xsd:annotation> - <xsd:documentation>The use of "any" is to allow extensibility from any namespace.</xsd:documentation> - </xsd:annotation> - </xsd:any> - </xsd:sequence> - <xsd:anyAttribute namespace="##other" processContents="lax"/> - </xsd:complexType> - <xsd:element name="UsernameToken" type="wsse:UsernameTokenType"> - <xsd:annotation> - <xsd:documentation>This element defines the wsse:UsernameToken element per Section 4.1.</xsd:documentation> - </xsd:annotation> - </xsd:element> - <xsd:element name="BinarySecurityToken" type="wsse:BinarySecurityTokenType"> - <xsd:annotation> - <xsd:documentation>This element defines the wsse:BinarySecurityToken element per Section 4.2.</xsd:documentation> - </xsd:annotation> - </xsd:element> - <xsd:element name="Reference" type="wsse:ReferenceType"> - <xsd:annotation> - <xsd:documentation>This element defines a security token reference</xsd:documentation> - </xsd:annotation> - </xsd:element> - <xsd:element name="Embedded" type="wsse:EmbeddedType"> - <xsd:annotation> - <xsd:documentation>This element defines a security token embedded reference</xsd:documentation> - </xsd:annotation> - </xsd:element> - <xsd:element name="KeyIdentifier" type="wsse:KeyIdentifierType"> - <xsd:annotation> - <xsd:documentation>This element defines a key identifier reference</xsd:documentation> - </xsd:annotation> - </xsd:element> - <xsd:element name="SecurityTokenReference" type="wsse:SecurityTokenReferenceType"> - <xsd:annotation> - <xsd:documentation>This element defines the wsse:SecurityTokenReference per Section 4.3.</xsd:documentation> - </xsd:annotation> - </xsd:element> - <xsd:element name="Security" type="wsse:SecurityHeaderType"> - <xsd:annotation> - <xsd:documentation>This element defines the wsse:Security SOAP header element per Section 4.</xsd:documentation> - </xsd:annotation> - </xsd:element> - <xsd:element name="TransformationParameters" type="wsse:TransformationParametersType"> - <xsd:annotation> - <xsd:documentation>This element contains properties for transformations from any namespace, including DSIG.</xsd:documentation> - </xsd:annotation> - </xsd:element> - <xsd:element name="Password" type="wsse:PasswordString"/> - <xsd:element name="Nonce" type="wsse:EncodedString"/> - <xsd:simpleType name="FaultcodeEnum"> - <xsd:restriction base="xsd:QName"> - <xsd:enumeration value="wsse:UnsupportedSecurityToken"/> - <xsd:enumeration value="wsse:UnsupportedAlgorithm"/> - <xsd:enumeration value="wsse:InvalidSecurity"/> - <xsd:enumeration value="wsse:InvalidSecurityToken"/> - <xsd:enumeration value="wsse:FailedAuthentication"/> - <xsd:enumeration value="wsse:FailedCheck"/> - <xsd:enumeration value="wsse:SecurityTokenUnavailable"/> - </xsd:restriction> - </xsd:simpleType> -</xsd:schema> diff --git a/xta-adapter/src/main/xsd/oasis-200401-wss-wssecurity-utility-1.0.xsd b/xta-adapter/src/main/xsd/oasis-200401-wss-wssecurity-utility-1.0.xsd deleted file mode 100644 index c213dd06..00000000 --- a/xta-adapter/src/main/xsd/oasis-200401-wss-wssecurity-utility-1.0.xsd +++ /dev/null @@ -1,108 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- -OASIS takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on OASIS's procedures with respect to rights in OASIS specifications can be found at the OASIS website. Copies of claims of rights made available for publication and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementors or users of this specification, can be obtained from the OASIS Executive Director. -OASIS invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights which may cover technology that may be required to implement this specification. Please address the information to the OASIS Executive Director. -Copyright © OASIS Open 2002-2004. All Rights Reserved. -This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself does not be modified in any way, such as by removing the copyright notice or references to OASIS, except as needed for the purpose of developing OASIS specifications, in which case the procedures for copyrights defined in the OASIS Intellectual Property Rights document must be followed, or as required to translate it into languages other than English. -The limited permissions granted above are perpetual and will not be revoked by OASIS or its successors or assigns. -This document and the information contained herein is provided on an “AS IS” basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. ---> -<xsd:schema targetNamespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" - - - -xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" -elementFormDefault="qualified" attributeFormDefault="unqualified" version="0.1"> - <!-- // Fault Codes /////////////////////////////////////////// --> - <xsd:simpleType name="tTimestampFault"> - <xsd:annotation> - <xsd:documentation> -This type defines the fault code value for Timestamp message expiration. - </xsd:documentation> - </xsd:annotation> - <xsd:restriction base="xsd:QName"> - <xsd:enumeration value="wsu:MessageExpired"/> - </xsd:restriction> - </xsd:simpleType> - <!-- // Global attributes //////////////////////////////////// --> - <xsd:attribute name="Id" type="xsd:ID"> - <xsd:annotation> - <xsd:documentation> -This global attribute supports annotating arbitrary elements with an ID. - </xsd:documentation> - </xsd:annotation> - </xsd:attribute> - <xsd:attributeGroup name="commonAtts"> - <xsd:annotation> - <xsd:documentation> -Convenience attribute group used to simplify this schema. - </xsd:documentation> - </xsd:annotation> - <xsd:attribute ref="wsu:Id" use="optional"/> - <xsd:anyAttribute namespace="##other" processContents="lax"/> - </xsd:attributeGroup> - <!-- // Utility types //////////////////////////////////////// --> - <xsd:complexType name="AttributedDateTime"> - <xsd:annotation> - <xsd:documentation> -This type is for elements whose [children] is a psuedo-dateTime and can have arbitrary attributes. - </xsd:documentation> - </xsd:annotation> - <xsd:simpleContent> - <xsd:extension base="xsd:string"> - <xsd:attributeGroup ref="wsu:commonAtts"/> - </xsd:extension> - </xsd:simpleContent> - </xsd:complexType> - <xsd:complexType name="AttributedURI"> - <xsd:annotation> - <xsd:documentation> -This type is for elements whose [children] is an anyURI and can have arbitrary attributes. - </xsd:documentation> - </xsd:annotation> - <xsd:simpleContent> - <xsd:extension base="xsd:anyURI"> - <xsd:attributeGroup ref="wsu:commonAtts"/> - </xsd:extension> - </xsd:simpleContent> - </xsd:complexType> - <!-- // Timestamp header components /////////////////////////// --> - <xsd:complexType name="TimestampType"> - <xsd:annotation> - <xsd:documentation> -This complex type ties together the timestamp related elements into a composite type. - </xsd:documentation> - </xsd:annotation> - <xsd:sequence> - <xsd:element ref="wsu:Created" minOccurs="0"/> - <xsd:element ref="wsu:Expires" minOccurs="0"/> - <xsd:choice minOccurs="0" maxOccurs="unbounded"> - <xsd:any namespace="##other" processContents="lax"/> - </xsd:choice> - </xsd:sequence> - <xsd:attributeGroup ref="wsu:commonAtts"/> - </xsd:complexType> - <xsd:element name="Timestamp" type="wsu:TimestampType"> - <xsd:annotation> - <xsd:documentation> -This element allows Timestamps to be applied anywhere element wildcards are present, -including as a SOAP header. - </xsd:documentation> - </xsd:annotation> - </xsd:element> - <!-- global element decls to allow individual elements to appear anywhere --> - <xsd:element name="Expires" type="wsu:AttributedDateTime"> - <xsd:annotation> - <xsd:documentation> -This element allows an expiration time to be applied anywhere element wildcards are present. - </xsd:documentation> - </xsd:annotation> - </xsd:element> - <xsd:element name="Created" type="wsu:AttributedDateTime"> - <xsd:annotation> - <xsd:documentation> -This element allows a creation time to be applied anywhere element wildcards are present. - </xsd:documentation> - </xsd:annotation> - </xsd:element> -</xsd:schema> diff --git a/xta-adapter/src/main/xsd/soap-envelope.xsd b/xta-adapter/src/main/xsd/soap-envelope.xsd deleted file mode 100644 index d181431d..00000000 --- a/xta-adapter/src/main/xsd/soap-envelope.xsd +++ /dev/null @@ -1,127 +0,0 @@ -<!-- Schema defined in the SOAP Version 1.2 Part 1 specification - Recommendation: - http://www.w3.org/TR/2003/REC-soap12-part1-20030624/ - $Id: soap-envelope.xsd,v 1.1 2013/01/22 15:18:58 lindemann Exp $ - - Copyright (C)2003 W3C(R) (MIT, ERCIM, Keio), All Rights Reserved. - W3C viability, trademark, document use and software licensing rules - apply. - http://www.w3.org/Consortium/Legal/ - - This document is governed by the W3C Software License [1] as - described in the FAQ [2]. - - [1] http://www.w3.org/Consortium/Legal/copyright-software-19980720 - [2] http://www.w3.org/Consortium/Legal/IPR-FAQ-20000620.html#DTD ---> -<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.w3.org/2003/05/soap-envelope" xmlns:xml="http://www.w3.org/XML/1998/namespace" targetNamespace="http://www.w3.org/2003/05/soap-envelope" elementFormDefault="qualified"> - <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/> - <!-- Envelope, header and body --> - <xs:element name="Envelope" type="tns:Envelope"/> - <xs:complexType name="Envelope"> - <xs:sequence> - <xs:element ref="tns:Header" minOccurs="0"/> - <xs:element ref="tns:Body"/> - </xs:sequence> - <xs:anyAttribute namespace="##other" processContents="lax"/> - </xs:complexType> - <xs:element name="Header" type="tns:Header"/> - <xs:complexType name="Header"> - <xs:annotation> - <xs:documentation> - Elements replacing the wildcard MUST be namespace qualified, but can be in the targetNamespace - </xs:documentation> - </xs:annotation> - <xs:sequence> - <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - <xs:anyAttribute namespace="##other" processContents="lax"/> - </xs:complexType> - <xs:element name="Body" type="tns:Body"/> - <xs:complexType name="Body"> - <xs:sequence> - <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - <xs:anyAttribute namespace="##other" processContents="lax"/> - </xs:complexType> - <!-- Global Attributes. The following attributes are intended to be - usable via qualified attribute names on any complex type referencing - them. --> - <xs:attribute name="mustUnderstand" type="xs:boolean" default="0"/> - <xs:attribute name="relay" type="xs:boolean" default="0"/> - <xs:attribute name="role" type="xs:anyURI"/> - <!-- 'encodingStyle' indicates any canonicalization conventions - followed in the contents of the containing element. For example, the - value 'http://www.w3.org/2003/05/soap-encoding' indicates the pattern - described in the SOAP Version 1.2 Part 2: Adjuncts Recommendation --> - <xs:attribute name="encodingStyle" type="xs:anyURI"/> - <xs:element name="Fault" type="tns:Fault"/> - <xs:complexType name="Fault" final="extension"> - <xs:annotation> - <xs:documentation> - Fault reporting structure - </xs:documentation> - </xs:annotation> - <xs:sequence> - <xs:element name="Code" type="tns:faultcode"/> - <xs:element name="Reason" type="tns:faultreason"/> - <xs:element name="Node" type="xs:anyURI" minOccurs="0"/> - <xs:element name="Role" type="xs:anyURI" minOccurs="0"/> - <xs:element name="Detail" type="tns:detail" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="faultreason"> - <xs:sequence> - <xs:element name="Text" type="tns:reasontext" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="reasontext"> - <xs:simpleContent> - <xs:extension base="xs:string"> - <xs:attribute ref="xml:lang" use="required"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - <xs:complexType name="faultcode"> - <xs:sequence> - <xs:element name="Value" type="tns:faultcodeEnum"/> - <xs:element name="Subcode" type="tns:subcode" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="faultcodeEnum"> - <xs:restriction base="xs:QName"> - <xs:enumeration value="tns:DataEncodingUnknown"/> - <xs:enumeration value="tns:MustUnderstand"/> - <xs:enumeration value="tns:Receiver"/> - <xs:enumeration value="tns:Sender"/> - <xs:enumeration value="tns:VersionMismatch"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="subcode"> - <xs:sequence> - <xs:element name="Value" type="xs:QName"/> - <xs:element name="Subcode" type="tns:subcode" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="detail"> - <xs:sequence> - <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - <xs:anyAttribute namespace="##other" processContents="lax"/> - </xs:complexType> - <!-- Global element declaration and complex type definition for header entry returned due to a mustUnderstand fault --> - <xs:element name="NotUnderstood" type="tns:NotUnderstoodType"/> - <xs:complexType name="NotUnderstoodType"> - <xs:attribute name="qname" type="xs:QName" use="required"/> - </xs:complexType> - <!-- Global element and associated types for managing version transition as described in Appendix A of the SOAP Version 1.2 Part 1 Recommendation --> - <xs:complexType name="SupportedEnvType"> - <xs:attribute name="qname" type="xs:QName" use="required"/> - </xs:complexType> - <xs:element name="Upgrade" type="tns:UpgradeType"/> - <xs:complexType name="UpgradeType"> - <xs:sequence> - <xs:element name="SupportedEnvelope" type="tns:SupportedEnvType" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> -</xs:schema> diff --git a/xta-adapter/src/main/xsd/ws-addr-wsdl.xsd b/xta-adapter/src/main/xsd/ws-addr-wsdl.xsd deleted file mode 100644 index 949b0119..00000000 --- a/xta-adapter/src/main/xsd/ws-addr-wsdl.xsd +++ /dev/null @@ -1,60 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!--<!DOCTYPE xs:schema PUBLIC "-//W3C//DTD XMLSCHEMA 200102//EN" "http://www.w3.org/2001/XMLSchema.dtd">--> -<!-- - W3C XML Schema defined in the Web Services Addressing 1.0 - - WSDL Binding specification - http://www.w3.org/TR/ws-addr-core - - Copyright © 2006 World Wide Web Consortium, - - (Massachusetts Institute of Technology, European Research Consortium for - Informatics and Mathematics, Keio University). All Rights Reserved. This - work is distributed under the W3C® Software License [1] in the hope that - it will be useful, but WITHOUT ANY WARRANTY; without even the implied - warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - - [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231 - - $Id: ws-addr-wsdl.xsd,v 1.2 2006/05/12 09:46:04 hugo Exp $ ---> -<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.w3.org/2006/05/addressing/wsdl" targetNamespace="http://www.w3.org/2006/05/addressing/wsdl" elementFormDefault="qualified" blockDefault="#all"> - <xs:element name="ServiceName" type="tns:ServiceNameType"/> - <xs:complexType name="ServiceNameType"> - <xs:simpleContent> - <xs:extension base="xs:QName"> - <xs:attribute name="EndpointName" type="xs:NCName" use="optional"/> - <xs:anyAttribute namespace="##other" processContents="lax"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - <xs:element name="InterfaceName" type="tns:AttributedQNameType"/> - <xs:complexType name="AttributedQNameType"> - <xs:simpleContent> - <xs:extension base="xs:QName"> - <xs:anyAttribute namespace="##other" processContents="lax"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - <xs:attribute name="Action" type="xs:anyURI"/> - <xs:element name="UsingAddressing"> - <xs:complexType> - <xs:anyAttribute namespace="##other" processContents="lax"/> - </xs:complexType> - </xs:element> - <xs:simpleType name="AnonymousType"> - <xs:restriction base="xs:token"> - <xs:enumeration value="optional"/> - <xs:enumeration value="required"/> - <xs:enumeration value="prohibited"/> - </xs:restriction> - </xs:simpleType> - <xs:element name="Anonymous"> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="tns:AnonymousType"> - <xs:anyAttribute namespace="##other" processContents="lax"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - </xs:element> -</xs:schema> diff --git a/xta-adapter/src/main/xsd/ws-addr.xsd b/xta-adapter/src/main/xsd/ws-addr.xsd deleted file mode 100644 index e9a5bde8..00000000 --- a/xta-adapter/src/main/xsd/ws-addr.xsd +++ /dev/null @@ -1,126 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!--!DOCTYPE xs:schema PUBLIC "-//W3C//DTD XMLSCHEMA 200102//EN" "http://www.w3.org/2001/XMLSchema.dtd">--> -<!-- - W3C XML Schema defined in the Web Services Addressing 1.0 specification - http://www.w3.org/TR/ws-addr-core - - Copyright © 2005 World Wide Web Consortium, - - (Massachusetts Institute of Technology, European Research Consortium for - Informatics and Mathematics, Keio University). All Rights Reserved. This - work is distributed under the W3C® Software License [1] in the hope that - it will be useful, but WITHOUT ANY WARRANTY; without even the implied - warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - - [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231 - - $Id: ws-addr.xsd,v 1.2 2013/01/22 15:18:58 lindemann Exp $ ---> -<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.w3.org/2005/08/addressing" targetNamespace="http://www.w3.org/2005/08/addressing" elementFormDefault="qualified" attributeFormDefault="unqualified" blockDefault="#all"> - <!-- Constructs from the WS-Addressing Core --> - <xs:element name="EndpointReference" type="tns:EndpointReferenceType"/> - <xs:complexType name="EndpointReferenceType" mixed="false"> - <xs:sequence> - <xs:element name="Address" type="tns:AttributedURIType"/> - <xs:element name="ReferenceParameters" type="tns:ReferenceParametersType" minOccurs="0"/> - <xs:element ref="tns:Metadata" minOccurs="0"/> - <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - <xs:anyAttribute namespace="##other" processContents="lax"/> - </xs:complexType> - <xs:complexType name="ReferenceParametersType" mixed="false"> - <xs:sequence> - <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - <xs:anyAttribute namespace="##other" processContents="lax"/> - </xs:complexType> - <xs:element name="Metadata" type="tns:MetadataType"/> - <xs:complexType name="MetadataType" mixed="false"> - <xs:sequence> - <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - <xs:anyAttribute namespace="##other" processContents="lax"/> - </xs:complexType> - <xs:element name="MessageID" type="tns:AttributedURIType"/> - <xs:element name="RelatesTo" type="tns:RelatesToType"/> - <xs:complexType name="RelatesToType" mixed="false"> - <xs:simpleContent> - <xs:extension base="xs:anyURI"> - <xs:attribute name="RelationshipType" type="tns:RelationshipTypeOpenEnum" use="optional" default="http://www.w3.org/2005/08/addressing/reply"/> - <xs:anyAttribute namespace="##other" processContents="lax"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - <xs:simpleType name="RelationshipTypeOpenEnum"> - <xs:union memberTypes="tns:RelationshipType xs:anyURI"/> - </xs:simpleType> - <xs:simpleType name="RelationshipType"> - <xs:restriction base="xs:anyURI"> - <xs:enumeration value="http://www.w3.org/2005/08/addressing/reply"/> - </xs:restriction> - </xs:simpleType> - <xs:element name="ReplyTo" type="tns:EndpointReferenceType"/> - <xs:element name="From" type="tns:EndpointReferenceType"/> - <xs:element name="FaultTo" type="tns:EndpointReferenceType"/> - <xs:element name="To" type="tns:AttributedURIType"/> - <xs:element name="Action" type="tns:AttributedURIType"/> - <xs:complexType name="AttributedURIType" mixed="false"> - <xs:simpleContent> - <xs:extension base="xs:anyURI"> - <xs:anyAttribute namespace="##other" processContents="lax"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - <!-- Constructs from the WS-Addressing SOAP binding --> - <xs:attribute name="IsReferenceParameter" type="xs:boolean"/> - <xs:simpleType name="FaultCodesOpenEnumType"> - <xs:union memberTypes="tns:FaultCodesType xs:QName"/> - </xs:simpleType> - <xs:simpleType name="FaultCodesType"> - <xs:restriction base="xs:QName"> - <xs:enumeration value="tns:InvalidAddressingHeader"/> - <xs:enumeration value="tns:InvalidAddress"/> - <xs:enumeration value="tns:InvalidEPR"/> - <xs:enumeration value="tns:InvalidCardinality"/> - <xs:enumeration value="tns:MissingAddressInEPR"/> - <xs:enumeration value="tns:DuplicateMessageID"/> - <xs:enumeration value="tns:ActionMismatch"/> - <xs:enumeration value="tns:MessageAddressingHeaderRequired"/> - <xs:enumeration value="tns:DestinationUnreachable"/> - <xs:enumeration value="tns:ActionNotSupported"/> - <xs:enumeration value="tns:EndpointUnavailable"/> - </xs:restriction> - </xs:simpleType> - <xs:element name="RetryAfter" type="tns:AttributedUnsignedLongType"/> - <xs:complexType name="AttributedUnsignedLongType" mixed="false"> - <xs:simpleContent> - <xs:extension base="xs:unsignedLong"> - <xs:anyAttribute namespace="##other" processContents="lax"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - <xs:element name="ProblemHeaderQName" type="tns:AttributedQNameType"/> - <xs:complexType name="AttributedQNameType" mixed="false"> - <xs:simpleContent> - <xs:extension base="xs:QName"> - <xs:anyAttribute namespace="##other" processContents="lax"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - <xs:element name="ProblemHeader" type="tns:AttributedAnyType"/> - <xs:complexType name="AttributedAnyType" mixed="false"> - <xs:sequence> - <xs:any namespace="##any" processContents="lax"/> - </xs:sequence> - <xs:anyAttribute namespace="##other" processContents="lax"/> - </xs:complexType> - <xs:element name="ProblemIRI" type="tns:AttributedURIType"/> - <xs:element name="ProblemAction" type="tns:ProblemActionType"/> - <xs:complexType name="ProblemActionType" mixed="false"> - <xs:sequence> - <xs:element ref="tns:Action" minOccurs="0"/> - <xs:element name="SoapAction" type="xs:anyURI" minOccurs="0"/> - </xs:sequence> - <xs:anyAttribute namespace="##other" processContents="lax"/> - </xs:complexType> -</xs:schema> diff --git a/xta-adapter/src/main/xsd/ws-policy.xsd b/xta-adapter/src/main/xsd/ws-policy.xsd deleted file mode 100644 index 7f0b7bb3..00000000 --- a/xta-adapter/src/main/xsd/ws-policy.xsd +++ /dev/null @@ -1,141 +0,0 @@ -<?xml version='1.0' encoding='utf-8' ?> -<!-- - - W3C XML Schema defined in the Web Services Policy 1.5 - Framework specification - - http://www.w3.org/TR/ws-policy-framework - - Copyright © 2006 World Wide Web Consortium, - - (Massachusetts Institute of Technology, European Research Consortium for - Informatics and Mathematics, Keio University). All Rights Reserved. This - work is distributed under the W3C® Software License [1] in the hope that - it will be useful, but WITHOUT ANY WARRANTY; without even the implied - warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - - [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231 - - $Id: ws-policy.xsd,v 1.2 2013/01/22 15:18:58 lindemann Exp $ ---> -<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" - xmlns:tns="http://www.w3.org/ns/ws-policy" - xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" - xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" - targetNamespace="http://www.w3.org/ns/ws-policy" blockDefault="#all" - elementFormDefault="qualified"> - - <xs:import - namespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" - schemaLocation="oasis-200401-wss-wssecurity-secext-1.0.xsd" /> - - <xs:import - namespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" - schemaLocation="oasis-200401-wss-wssecurity-utility-1.0.xsd" /> - - <xs:import - namespace="http://www.w3.org/XML/1998/namespace" - schemaLocation="xml.xsd" /> - - <!-- Constructs from the Web Services Policy 1.5 Framework --> - - <xs:element name="Policy" > - <xs:complexType> - - <xs:complexContent> - <xs:extension base="tns:OperatorContentType" > - <xs:attribute name="Name" type="xs:anyURI" /> - <xs:anyAttribute namespace="##any" processContents="lax" /> - </xs:extension> - </xs:complexContent> - </xs:complexType> - </xs:element> - - <xs:element name="All" type="tns:OperatorContentType" /> - <xs:element name="ExactlyOne" type="tns:OperatorContentType" /> - - <xs:complexType name="OperatorContentType" > - <xs:sequence> - <xs:choice minOccurs="0" maxOccurs="unbounded" > - <xs:element ref="tns:Policy" /> - <xs:element ref="tns:All" /> - <xs:element ref="tns:ExactlyOne" /> - - <xs:element ref="tns:PolicyReference" /> - <xs:any namespace="##other" processContents="lax" /> - </xs:choice> - </xs:sequence> - </xs:complexType> - - <xs:element name="PolicyReference" > - <xs:complexType> - <xs:sequence> - <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - <xs:attribute name="URI" type="xs:anyURI" use="required" /> - - <xs:attribute name="Digest" type="xs:base64Binary" /> - <xs:attribute name="DigestAlgorithm" - type="xs:anyURI" - default="http://www.w3.org/ns/ws-policy/Sha1Exc" - /> - <xs:anyAttribute namespace="##any" processContents="lax" /> - </xs:complexType> - </xs:element> - - <xs:attribute name="Optional" type="xs:boolean" default="false" /> - <xs:attribute name="Ignorable" type="xs:boolean" default="false" /> - - <!-- Constructs from the Web Services Policy 1.5 Attachment --> - - <xs:attribute name="PolicyURIs" > - <xs:simpleType> - <xs:list itemType="xs:anyURI" /> - </xs:simpleType> - </xs:attribute> - - <xs:element name="PolicyAttachment" > - <xs:complexType> - <xs:sequence> - - <xs:element ref="tns:AppliesTo" /> - <xs:choice maxOccurs="unbounded" > - <xs:element ref="tns:Policy" /> - <xs:element ref="tns:PolicyReference" /> - </xs:choice> - <!-- omitted only because it causes the content model to be non-determistic - <xs:element ref="wsse:Security" minOccurs="0" /> ---> - <xs:any namespace="##other" - processContents="lax" - minOccurs="0" - maxOccurs="unbounded" /> - </xs:sequence> - <xs:anyAttribute namespace="##any" processContents="lax" /> - - </xs:complexType> - </xs:element> - - <xs:element name="AppliesTo" > - <xs:complexType> - <xs:sequence> - <xs:any namespace="##any" - processContents="lax" - maxOccurs="unbounded" /> - </xs:sequence> - <xs:anyAttribute namespace="##any" processContents="lax" /> - - </xs:complexType> - </xs:element> - - <xs:element name="URI"> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="xs:anyURI"> - <xs:anyAttribute namespace="##any" processContents="lax" /> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - </xs:element> - -</xs:schema> diff --git a/xta-adapter/src/main/xsd/xenc-schema.xsd b/xta-adapter/src/main/xsd/xenc-schema.xsd deleted file mode 100644 index 3f0b4bf0..00000000 --- a/xta-adapter/src/main/xsd/xenc-schema.xsd +++ /dev/null @@ -1,126 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" targetNamespace="http://www.w3.org/2001/04/xmlenc#" elementFormDefault="qualified" version="1.0"> - <import namespace='http://www.w3.org/2000/09/xmldsig#' schemaLocation='xmldsig-core-schema.xsd'/> - <complexType name="EncryptedType" abstract="true"> - <sequence> - <element name="EncryptionMethod" type="xenc:EncryptionMethodType" minOccurs="0"/> - <element ref="ds:KeyInfo" minOccurs="0"/> - <element ref="xenc:CipherData"/> - <element ref="xenc:EncryptionProperties" minOccurs="0"/> - </sequence> - <attribute name="Id" type="ID" use="optional"/> - <attribute name="Type" type="anyURI" use="optional"/> - <attribute name="MimeType" type="string" use="optional"/> - <attribute name="Encoding" type="anyURI" use="optional"/> - </complexType> - <complexType name="EncryptionMethodType" mixed="true"> - <sequence> - <element name="KeySize" type="xenc:KeySizeType" minOccurs="0"/> - <element name="OAEPparams" type="base64Binary" minOccurs="0"/> - <!-- note that optional xenc11:MGF element may be used here for - RSA-OAEP, when appropriate --> - <any namespace="##other" minOccurs="0" maxOccurs="unbounded"/> - </sequence> - <attribute name="Algorithm" type="anyURI" use="required"/> - </complexType> - <simpleType name="KeySizeType"> - <restriction base="integer"/> - </simpleType> - <element name="CipherData" type="xenc:CipherDataType"/> - <complexType name="CipherDataType"> - <choice> - <element name="CipherValue" type="base64Binary"/> - <element ref="xenc:CipherReference"/> - </choice> - </complexType> - <element name="CipherReference" type="xenc:CipherReferenceType"/> - <complexType name="CipherReferenceType"> - <choice> - <element name="Transforms" type="xenc:TransformsType" minOccurs="0"/> - </choice> - <attribute name="URI" type="anyURI" use="required"/> - </complexType> - <complexType name="TransformsType"> - <sequence> - <element ref="ds:Transform" maxOccurs="unbounded"/> - </sequence> - </complexType> - <element name="EncryptedData" type="xenc:EncryptedDataType"/> - <complexType name="EncryptedDataType"> - <complexContent> - <extension base="xenc:EncryptedType"/> - </complexContent> - </complexType> - <!-- Children of ds:KeyInfo --> - <element name="EncryptedKey" type="xenc:EncryptedKeyType"/> - <complexType name="EncryptedKeyType"> - <complexContent> - <extension base="xenc:EncryptedType"> - <sequence> - <element ref="xenc:ReferenceList" minOccurs="0"/> - <element name="CarriedKeyName" type="string" minOccurs="0"/> - </sequence> - <attribute name="Recipient" type="string" use="optional"/> - </extension> - </complexContent> - </complexType> - <element name="AgreementMethod" type="xenc:AgreementMethodType"/> - <complexType name="AgreementMethodType" mixed="true"> - <sequence> - <element name="KA-Nonce" type="base64Binary" minOccurs="0"/> - <!-- <element ref="ds:DigestMethod" minOccurs="0"/> --> - <any namespace="##other" minOccurs="0" maxOccurs="unbounded"/> - <element name="OriginatorKeyInfo" type="ds:KeyInfoType" minOccurs="0"/> - <element name="RecipientKeyInfo" type="ds:KeyInfoType" minOccurs="0"/> - </sequence> - <attribute name="Algorithm" type="anyURI" use="required"/> - </complexType> - <!-- End Children of ds:KeyInfo --> - <element name="ReferenceList"> - <complexType> - <choice maxOccurs="unbounded"> - <element name="DataReference" type="xenc:ReferenceType"/> - <element name="KeyReference" type="xenc:ReferenceType"/> - </choice> - </complexType> - </element> - <complexType name="ReferenceType"> - <sequence> - <any namespace="##other" minOccurs="0" maxOccurs="unbounded"/> - </sequence> - <attribute name="URI" type="anyURI" use="required"/> - </complexType> - <element name="EncryptionProperties" type="xenc:EncryptionPropertiesType"/> - <complexType name="EncryptionPropertiesType"> - <sequence> - <element ref="xenc:EncryptionProperty" maxOccurs="unbounded"/> - </sequence> - <attribute name="Id" type="ID" use="optional"/> - </complexType> - <element name="EncryptionProperty" type="xenc:EncryptionPropertyType"/> - <complexType name="EncryptionPropertyType" mixed="true"> - <choice maxOccurs="unbounded"> - <any namespace="##other" processContents="lax"/> - </choice> - <attribute name="Target" type="anyURI" use="optional"/> - <attribute name="Id" type="ID" use="optional"/> - <anyAttribute namespace="http://www.w3.org/XML/1998/namespace"/> - </complexType> - <!-- Children of ds:KeyValue --> - <element name="DHKeyValue" type="xenc:DHKeyValueType"/> - <complexType name="DHKeyValueType"> - <sequence> - <sequence minOccurs="0"> - <element name="P" type="ds:CryptoBinary"/> - <element name="Q" type="ds:CryptoBinary"/> - <element name="Generator" type="ds:CryptoBinary"/> - </sequence> - <element name="Public" type="ds:CryptoBinary"/> - <sequence minOccurs="0"> - <element name="seed" type="ds:CryptoBinary"/> - <element name="pgenCounter" type="ds:CryptoBinary"/> - </sequence> - </sequence> - </complexType> - <!-- End Children of ds:KeyValue --> -</schema> diff --git a/xta-adapter/src/main/xsd/xml.xsd b/xta-adapter/src/main/xsd/xml.xsd deleted file mode 100644 index 77bfc7af..00000000 --- a/xta-adapter/src/main/xsd/xml.xsd +++ /dev/null @@ -1,145 +0,0 @@ -<?xml version='1.0'?> -<xs:schema targetNamespace="http://www.w3.org/XML/1998/namespace" xmlns:xs="http://www.w3.org/2001/XMLSchema" xml:lang="en"> - - <xs:annotation> - <xs:documentation> - See http://www.w3.org/XML/1998/namespace.html and - http://www.w3.org/TR/REC-xml for information about this namespace. - - This schema document describes the XML namespace, in a form - suitable for import by other schema documents. - - Note that local names in this namespace are intended to be defined - only by the World Wide Web Consortium or its subgroups. The - following names are currently defined in this namespace and should - not be used with conflicting semantics by any Working Group, - specification, or document instance: - - base (as an attribute name): denotes an attribute whose value - provides a URI to be used as the base for interpreting any - relative URIs in the scope of the element on which it - appears; its value is inherited. This name is reserved - by virtue of its definition in the XML Base specification. - - id (as an attribute name): denotes an attribute whose value - should be interpreted as if declared to be of type ID. - This name is reserved by virtue of its definition in the - xml:id specification. - - lang (as an attribute name): denotes an attribute whose value - is a language code for the natural language of the content of - any element; its value is inherited. This name is reserved - by virtue of its definition in the XML specification. - - space (as an attribute name): denotes an attribute whose - value is a keyword indicating what whitespace processing - discipline is intended for the content of the element; its - value is inherited. This name is reserved by virtue of its - definition in the XML specification. - - Father (in any context at all): denotes Jon Bosak, the chair of - the original XML Working Group. This name is reserved by - the following decision of the W3C XML Plenary and - XML Coordination groups: - - In appreciation for his vision, leadership and dedication - the W3C XML Plenary on this 10th day of February, 2000 - reserves for Jon Bosak in perpetuity the XML name - xml:Father - </xs:documentation> - </xs:annotation> - - <xs:annotation> - <xs:documentation>This schema defines attributes and an attribute group - suitable for use by - schemas wishing to allow xml:base, xml:lang, xml:space or xml:id - attributes on elements they define. - - To enable this, such a schema must import this schema - for the XML namespace, e.g. as follows: - <schema . . .> - . . . - <import namespace="http://www.w3.org/XML/1998/namespace" - schemaLocation="http://www.w3.org/2001/xml.xsd"/> - - Subsequently, qualified reference to any of the attributes - or the group defined below will have the desired effect, e.g. - - <type . . .> - . . . - <attributeGroup ref="xml:specialAttrs"/> - - will define a type which will schema-validate an instance - element with any of those attributes</xs:documentation> - </xs:annotation> - - <xs:annotation> - <xs:documentation>In keeping with the XML Schema WG's standard versioning - policy, this schema document will persist at - http://www.w3.org/2007/08/xml.xsd. - At the date of issue it can also be found at - http://www.w3.org/2001/xml.xsd. - The schema document at that URI may however change in the future, - in order to remain compatible with the latest version of XML Schema - itself, or with the XML namespace itself. In other words, if the XML - Schema or XML namespaces change, the version of this document at - http://www.w3.org/2001/xml.xsd will change - accordingly; the version at - http://www.w3.org/2007/08/xml.xsd will not change. - </xs:documentation> - </xs:annotation> - - <xs:attribute name="lang"> - <xs:annotation> - <xs:documentation>Attempting to install the relevant ISO 2- and 3-letter - codes as the enumerated possible values is probably never - going to be a realistic possibility. See - RFC 3066 at http://www.ietf.org/rfc/rfc3066.txt and the IANA registry - at http://www.iana.org/assignments/lang-tag-apps.htm for - further information. - - The union allows for the 'un-declaration' of xml:lang with - the empty string.</xs:documentation> - </xs:annotation> - <xs:simpleType> - <xs:union memberTypes="xs:language"> - <xs:simpleType> - <xs:restriction base="xs:string"> - <xs:enumeration value=""/> - </xs:restriction> - </xs:simpleType> - </xs:union> - </xs:simpleType> - </xs:attribute> - - <xs:attribute name="space"> - <xs:simpleType> - <xs:restriction base="xs:NCName"> - <xs:enumeration value="default"/> - <xs:enumeration value="preserve"/> - </xs:restriction> - </xs:simpleType> - </xs:attribute> - - <xs:attribute name="base" type="xs:anyURI"> - <xs:annotation> - <xs:documentation>See http://www.w3.org/TR/xmlbase/ for - information about this attribute.</xs:documentation> - </xs:annotation> - </xs:attribute> - - <xs:attribute name="id" type="xs:ID"> - <xs:annotation> - <xs:documentation>See http://www.w3.org/TR/xml-id/ for - information about this attribute.</xs:documentation> - </xs:annotation> - </xs:attribute> - - <xs:attributeGroup name="specialAttrs"> - <xs:attribute ref="xml:base"/> - <xs:attribute ref="xml:lang"/> - <xs:attribute ref="xml:space"/> - <xs:attribute ref="xml:id"/> - </xs:attributeGroup> - -</xs:schema> diff --git a/xta-adapter/src/main/xsd/xmldsig-core-schema.xsd b/xta-adapter/src/main/xsd/xmldsig-core-schema.xsd deleted file mode 100644 index e0ce6d13..00000000 --- a/xta-adapter/src/main/xsd/xmldsig-core-schema.xsd +++ /dev/null @@ -1,308 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Schema for XML Signatures - http://www.w3.org/2000/09/xmldsig# - $Revision: 1.2 $ on $Date: 2013/01/22 15:18:58 $ by $Author: lindemann $ - - Copyright 2001 The Internet Society and W3C (Massachusetts Institute - of Technology, Institut National de Recherche en Informatique et en - Automatique, Keio University). All Rights Reserved. - http://www.w3.org/Consortium/Legal/ - - This document is governed by the W3C Software License [1] as described - in the FAQ [2]. - - [1] http://www.w3.org/Consortium/Legal/copyright-software-19980720 - [2] http://www.w3.org/Consortium/Legal/IPR-FAQ-20000620.html#DTD ---> - - -<schema xmlns="http://www.w3.org/2001/XMLSchema" - xmlns:ds="http://www.w3.org/2000/09/xmldsig#" - targetNamespace="http://www.w3.org/2000/09/xmldsig#" - version="0.1" elementFormDefault="qualified"> - -<!-- Basic Types Defined for Signatures --> - -<simpleType name="CryptoBinary"> - <restriction base="base64Binary"> - </restriction> -</simpleType> - -<!-- Start Signature --> - -<element name="Signature" type="ds:SignatureType"/> -<complexType name="SignatureType"> - <sequence> - <element ref="ds:SignedInfo"/> - <element ref="ds:SignatureValue"/> - <element ref="ds:KeyInfo" minOccurs="0"/> - <element ref="ds:Object" minOccurs="0" maxOccurs="unbounded"/> - </sequence> - <attribute name="Id" type="ID" use="optional"/> -</complexType> - - <element name="SignatureValue" type="ds:SignatureValueType"/> - <complexType name="SignatureValueType"> - <simpleContent> - <extension base="base64Binary"> - <attribute name="Id" type="ID" use="optional"/> - </extension> - </simpleContent> - </complexType> - -<!-- Start SignedInfo --> - -<element name="SignedInfo" type="ds:SignedInfoType"/> -<complexType name="SignedInfoType"> - <sequence> - <element ref="ds:CanonicalizationMethod"/> - <element ref="ds:SignatureMethod"/> - <element ref="ds:Reference" maxOccurs="unbounded"/> - </sequence> - <attribute name="Id" type="ID" use="optional"/> -</complexType> - - <element name="CanonicalizationMethod" type="ds:CanonicalizationMethodType"/> - <complexType name="CanonicalizationMethodType" mixed="true"> - <sequence> - <any namespace="##any" minOccurs="0" maxOccurs="unbounded"/> - <!-- (0,unbounded) elements from (1,1) namespace --> - </sequence> - <attribute name="Algorithm" type="anyURI" use="required"/> - </complexType> - - <element name="SignatureMethod" type="ds:SignatureMethodType"/> - <complexType name="SignatureMethodType" mixed="true"> - <sequence> - <element name="HMACOutputLength" minOccurs="0" type="ds:HMACOutputLengthType"/> - <any namespace="##other" minOccurs="0" maxOccurs="unbounded"/> - <!-- (0,unbounded) elements from (1,1) external namespace --> - </sequence> - <attribute name="Algorithm" type="anyURI" use="required"/> - </complexType> - -<!-- Start Reference --> - -<element name="Reference" type="ds:ReferenceType"/> -<complexType name="ReferenceType"> - <sequence> - <element ref="ds:Transforms" minOccurs="0"/> - <element ref="ds:DigestMethod"/> - <element ref="ds:DigestValue"/> - </sequence> - <attribute name="Id" type="ID" use="optional"/> - <attribute name="URI" type="anyURI" use="optional"/> - <attribute name="Type" type="anyURI" use="optional"/> -</complexType> - - <element name="Transforms" type="ds:TransformsType"/> - <complexType name="TransformsType"> - <sequence> - <element ref="ds:Transform" maxOccurs="unbounded"/> - </sequence> - </complexType> - - <element name="Transform" type="ds:TransformType"/> - <complexType name="TransformType" mixed="true"> - <choice minOccurs="0" maxOccurs="unbounded"> - <any namespace="##other" processContents="lax"/> - <!-- (1,1) elements from (0,unbounded) namespaces --> - <element name="XPath" type="string"/> - </choice> - <attribute name="Algorithm" type="anyURI" use="required"/> - </complexType> - -<!-- End Reference --> - -<element name="DigestMethod" type="ds:DigestMethodType"/> -<complexType name="DigestMethodType" mixed="true"> - <sequence> - <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - </sequence> - <attribute name="Algorithm" type="anyURI" use="required"/> -</complexType> - -<element name="DigestValue" type="ds:DigestValueType"/> -<simpleType name="DigestValueType"> - <restriction base="base64Binary"/> -</simpleType> - -<!-- End SignedInfo --> - -<!-- Start KeyInfo --> - -<element name="KeyInfo" type="ds:KeyInfoType"/> -<complexType name="KeyInfoType" mixed="true"> - <choice maxOccurs="unbounded"> - <element ref="ds:KeyName"/> - <element ref="ds:KeyValue"/> - <element ref="ds:RetrievalMethod"/> - <element ref="ds:X509Data"/> - <element ref="ds:PGPData"/> - <element ref="ds:SPKIData"/> - <element ref="ds:MgmtData"/> - <any processContents="lax" namespace="##other"/> - <!-- (1,1) elements from (0,unbounded) namespaces --> - </choice> - <attribute name="Id" type="ID" use="optional"/> -</complexType> - - <element name="KeyName" type="string"/> - <element name="MgmtData" type="string"/> - - <element name="KeyValue" type="ds:KeyValueType"/> - <complexType name="KeyValueType" mixed="true"> - <choice> - <element ref="ds:DSAKeyValue"/> - <element ref="ds:RSAKeyValue"/> - <any namespace="##other" processContents="lax"/> - </choice> - </complexType> - - <element name="RetrievalMethod" type="ds:RetrievalMethodType"/> - <complexType name="RetrievalMethodType"> - <sequence> - <element ref="ds:Transforms" minOccurs="0"/> - </sequence> - <attribute name="URI" type="anyURI"/> - <attribute name="Type" type="anyURI" use="optional"/> - </complexType> - -<!-- Start X509Data --> - -<element name="X509Data" type="ds:X509DataType"/> -<complexType name="X509DataType"> - <sequence maxOccurs="unbounded"> - <choice> - <element name="X509IssuerSerial" type="ds:X509IssuerSerialType"/> - <element name="X509SKI" type="base64Binary"/> - <element name="X509SubjectName" type="string"/> - <element name="X509Certificate" type="base64Binary"/> - <element name="X509CRL" type="base64Binary"/> - <any namespace="##other" processContents="lax"/> - </choice> - </sequence> -</complexType> - -<complexType name="X509IssuerSerialType"> - <sequence> - <element name="X509IssuerName" type="string"/> - <element name="X509SerialNumber" type="integer"/> - </sequence> -</complexType> - -<!-- End X509Data --> - -<!-- Begin PGPData --> - -<element name="PGPData" type="ds:PGPDataType"/> -<complexType name="PGPDataType"> - <choice> - <sequence> - <element name="PGPKeyID" type="base64Binary"/> - <element name="PGPKeyPacket" type="base64Binary" minOccurs="0"/> - <any namespace="##other" processContents="lax" minOccurs="0" - maxOccurs="unbounded"/> - </sequence> - <sequence> - <element name="PGPKeyPacket" type="base64Binary"/> - <any namespace="##other" processContents="lax" minOccurs="0" - maxOccurs="unbounded"/> - </sequence> - </choice> -</complexType> - -<!-- End PGPData --> - -<!-- Begin SPKIData --> - -<element name="SPKIData" type="ds:SPKIDataType"/> -<complexType name="SPKIDataType"> - <sequence maxOccurs="unbounded"> - <element name="SPKISexp" type="base64Binary"/> - <any namespace="##other" processContents="lax" minOccurs="0"/> - </sequence> -</complexType> - -<!-- End SPKIData --> - -<!-- End KeyInfo --> - -<!-- Start Object (Manifest, SignatureProperty) --> - -<element name="Object" type="ds:ObjectType"/> -<complexType name="ObjectType" mixed="true"> - <sequence minOccurs="0" maxOccurs="unbounded"> - <any namespace="##any" processContents="lax"/> - </sequence> - <attribute name="Id" type="ID" use="optional"/> - <attribute name="MimeType" type="string" use="optional"/> <!-- add a grep facet --> - <attribute name="Encoding" type="anyURI" use="optional"/> -</complexType> - -<element name="Manifest" type="ds:ManifestType"/> -<complexType name="ManifestType"> - <sequence> - <element ref="ds:Reference" maxOccurs="unbounded"/> - </sequence> - <attribute name="Id" type="ID" use="optional"/> -</complexType> - -<element name="SignatureProperties" type="ds:SignaturePropertiesType"/> -<complexType name="SignaturePropertiesType"> - <sequence> - <element ref="ds:SignatureProperty" maxOccurs="unbounded"/> - </sequence> - <attribute name="Id" type="ID" use="optional"/> -</complexType> - - <element name="SignatureProperty" type="ds:SignaturePropertyType"/> - <complexType name="SignaturePropertyType" mixed="true"> - <choice maxOccurs="unbounded"> - <any namespace="##other" processContents="lax"/> - <!-- (1,1) elements from (1,unbounded) namespaces --> - </choice> - <attribute name="Target" type="anyURI" use="required"/> - <attribute name="Id" type="ID" use="optional"/> - </complexType> - -<!-- End Object (Manifest, SignatureProperty) --> - -<!-- Start Algorithm Parameters --> - -<simpleType name="HMACOutputLengthType"> - <restriction base="integer"/> -</simpleType> - -<!-- Start KeyValue Element-types --> - -<element name="DSAKeyValue" type="ds:DSAKeyValueType"/> -<complexType name="DSAKeyValueType"> - <sequence> - <sequence minOccurs="0"> - <element name="P" type="ds:CryptoBinary"/> - <element name="Q" type="ds:CryptoBinary"/> - </sequence> - <element name="G" type="ds:CryptoBinary" minOccurs="0"/> - <element name="Y" type="ds:CryptoBinary"/> - <element name="J" type="ds:CryptoBinary" minOccurs="0"/> - <sequence minOccurs="0"> - <element name="Seed" type="ds:CryptoBinary"/> - <element name="PgenCounter" type="ds:CryptoBinary"/> - </sequence> - </sequence> -</complexType> - -<element name="RSAKeyValue" type="ds:RSAKeyValueType"/> -<complexType name="RSAKeyValueType"> - <sequence> - <element name="Modulus" type="ds:CryptoBinary"/> - <element name="Exponent" type="ds:CryptoBinary"/> - </sequence> -</complexType> - -<!-- End KeyValue Element-types --> - -<!-- End Signature --> - -</schema> diff --git a/xta-adapter/src/main/xsd/xmlmime.xsd b/xta-adapter/src/main/xsd/xmlmime.xsd deleted file mode 100644 index d78ec72d..00000000 --- a/xta-adapter/src/main/xsd/xmlmime.xsd +++ /dev/null @@ -1,49 +0,0 @@ -<?xml version="1.0" ?> -<!-- - W3C XML Schema defined in the Describing Media Content of Binary Data in XML - specification - http://www.w3.org/TR/xml-media-types - - Copyright © 2005 World Wide Web Consortium, - - (Massachusetts Institute of Technology, European Research Consortium for - Informatics and Mathematics, Keio University). All Rights Reserved. This - work is distributed under the W3C® Software License [1] in the hope that - it will be useful, but WITHOUT ANY WARRANTY; without even the implied - warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - - [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231 - - $Id: xmlmime.xsd,v 1.1 2013/02/15 22:16:35 lindemann Exp $ ---> -<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" - xmlns:xmime="http://www.w3.org/2005/05/xmlmime" - targetNamespace="http://www.w3.org/2005/05/xmlmime" > - - <xs:attribute name="contentType"> - <xs:simpleType> - <xs:restriction base="xs:string" > - <xs:minLength value="3" /> - </xs:restriction> - </xs:simpleType> - </xs:attribute> - - <xs:attribute name="expectedContentTypes" type="xs:string" /> - - <xs:complexType name="base64Binary" > - <xs:simpleContent> - <xs:extension base="xs:base64Binary" > - <xs:attribute ref="xmime:contentType" /> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - - <xs:complexType name="hexBinary" > - <xs:simpleContent> - <xs:extension base="xs:hexBinary" > - <xs:attribute ref="xmime:contentType" /> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - -</xs:schema> \ No newline at end of file diff --git a/xta-adapter/src/main/xsd/xoev-basisdatentypen.xsd b/xta-adapter/src/main/xsd/xoev-basisdatentypen.xsd deleted file mode 100644 index 4da4268b..00000000 --- a/xta-adapter/src/main/xsd/xoev-basisdatentypen.xsd +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xoev-dt="http://xoev.de/schemata/basisdatentypen/1_1" targetNamespace="http://xoev.de/schemata/basisdatentypen/1_1" version="1.1" elementFormDefault="qualified" attributeFormDefault="unqualified"> - <xs:complexType name="Code"> - <xs:annotation> - <xs:appinfo> - <title>Datentyp für die Übermittlung von Codes</title> - </xs:appinfo> - <xs:documentation>Datentyp für die Übermittlung von Codes (vgl. XÖV-Handbuch).</xs:documentation> - </xs:annotation> - <xs:sequence> - <xs:element name="code" type="xs:token" form="unqualified" /> - <xs:element name="name" minOccurs="0" type="xs:normalizedString" form="unqualified" /> - </xs:sequence> - <xs:attribute name="listURI" type="xs:anyURI" use="optional" /> - <xs:attribute name="listVersionID" type="xs:normalizedString" use="optional" /> - </xs:complexType> -</xs:schema> - diff --git a/xta-adapter/src/main/xsd/xoev1_0-basisdatentypen.xsd b/xta-adapter/src/main/xsd/xoev1_0-basisdatentypen.xsd deleted file mode 100644 index 9e3cee80..00000000 --- a/xta-adapter/src/main/xsd/xoev1_0-basisdatentypen.xsd +++ /dev/null @@ -1,32 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<xs:schema targetNamespace="http://xoev.de/schemata/basisdatentypen/1_0" version="1.0" elementFormDefault="qualified" attributeFormDefault="unqualified" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xoev-dt="http://xoev.de/schemata/basisdatentypen/1_0"> - <xs:complexType name="Code"> - <xs:annotation> - <xs:appinfo> - <title>Datentyp für die Übermittlung von Codes</title> - </xs:appinfo> - <xs:documentation>Datentyp für die Übermittlung von Codes (vgl. XÖV-Handbuch).</xs:documentation> - </xs:annotation> - <xs:sequence> - <xs:element name="code" type="xs:token" form="unqualified"> - </xs:element> - <xs:element name="name" minOccurs="0" type="xs:normalizedString" form="unqualified"> - </xs:element> - </xs:sequence> - <xs:attribute name="listURI" type="xs:anyURI" use="optional"> - </xs:attribute> - <xs:attribute name="listVersionID" type="xs:normalizedString" use="optional"> - </xs:attribute> - </xs:complexType> - <xs:simpleType name="String.Latin"> - <xs:annotation> - <xs:appinfo> - <title>Datentyp für lateinische Zeichen in Unicode</title> - </xs:appinfo> - <xs:documentation>Einschränkung auf alle lateinischen Zeichen innerhalb Unicode (vgl. XÖV-Handbuch).</xs:documentation> - </xs:annotation> - <xs:restriction base="xs:normalizedString"> - <xs:pattern value="[	-

 -~¡-¬®-ıĴ-ſƇ-ƈƏƠ-ơƯ-ưƷƿǍ-ǔǞ-ǟǢ-ǯǴ-ǵǷǺ-ȟȪ-ȳəʒḂ-ḃḊ-ḋḐ-ḑḞ-ḡḤ-ḧḰ-ḱṀ-ṁṄ-ṅṖ-ṗṠ-ṣṪ-ṫẀ-ẅẌ-ẓẛẞẠ-ạẪ-ẬẽỄ-ễỊ-ỏỖ-ỗỤ-ụỲ-ỳỸ-ỹ€]*"/> - </xs:restriction> - </xs:simpleType> -</xs:schema> diff --git a/xta-adapter/src/test/helm-linter-values.yaml b/xta-adapter/src/test/helm-linter-values.yaml deleted file mode 100644 index 2c2f51b5..00000000 --- a/xta-adapter/src/test/helm-linter-values.yaml +++ /dev/null @@ -1,33 +0,0 @@ -# -# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -ozgcloud: - environment: test - bezeichner: helm - bundesland: by - - -networkPolicy: - dnsServerNamespace: test-dns-server-namespace -imagePullSecret: image-pull-secret \ No newline at end of file diff --git a/xta-adapter/src/test/helm/network_policy_test.yaml b/xta-adapter/src/test/helm/network_policy_test.yaml deleted file mode 100644 index 863e8c70..00000000 --- a/xta-adapter/src/test/helm/network_policy_test.yaml +++ /dev/null @@ -1,239 +0,0 @@ -# -# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -suite: network policy test -release: - namespace: by-helm-test -templates: - - templates/network_policy.yaml - -tests: - - it: should match apiVersion - set: - networkPolicy: - dnsServerNamespace: test-dns-namespace - asserts: - - isAPIVersion: - of: networking.k8s.io/v1 - - it: should match kind - set: - networkPolicy: - dnsServerNamespace: test-dns-namespace - asserts: - - isKind: - of: NetworkPolicy - - it: validate metadata - set: - networkPolicy: - dnsServerNamespace: test-dns-namespace - asserts: - - equal: - path: metadata - value: - name: network-policy-xta-adapter - namespace: by-helm-test - - it: validate spec - set: - networkPolicy: - dnsServerNamespace: test-dns-namespace - asserts: - - equal: - path: spec - value: - podSelector: - matchLabels: - ozg-component: xta-adapter - policyTypes: - - Egress - egress: - - to: - - podSelector: - matchLabels: - component: vorgang-manager - ports: - - port: 9090 - protocol: TCP - - to: - - namespaceSelector: - matchLabels: - kubernetes.io/metadata.name: test-dns-namespace - ports: - - port: 53 - protocol: UDP - - port: 53 - protocol: TCP - - port: 5353 - protocol: UDP - - port: 5353 - protocol: TCP - - to: - - namespaceSelector: - matchLabels: - kubernetes.io/metadata.name: ssh-port-forward - ports: - - port: 443 - protocol: TCP - - port: 80 - protocol: TCP - - port: 9000 - protocol: TCP - - - it: add egress rules by values local - set: - networkPolicy: - ssoPublicIp: 51.89.117.53/32 - dnsServerNamespace: test-dns-namespace - additionalEgressConfigLocal: - - to: - - ipBlock: - cidr: 1.2.3.4/32 - asserts: - - contains: - path: spec.egress - content: - to: - - ipBlock: - cidr: 1.2.3.4/32 - - it: add egress rules by values global - set: - networkPolicy: - ssoPublicIp: 51.89.117.53/32 - dnsServerNamespace: test-dns-namespace - additionalEgressConfigGlobal: - - to: - - ipBlock: - cidr: 1.2.3.4/32 - asserts: - - contains: - path: spec.egress - content: - to: - - ipBlock: - cidr: 1.2.3.4/32 - - - it: test network policy disabled - set: - networkPolicy: - disabled: true - asserts: - - hasDocuments: - count: 0 - - - it: test network policy unset should be disabled - set: - networkPolicy: - disabled: false - dnsServerNamespace: test-dns-namespace - asserts: - - hasDocuments: - count: 1 - - it: test network policy dnsServerNamespace must be set message - set: - networkPolicy: - disabled: false - asserts: - - failedTemplate: - errorMessage: networkPolicy.dnsServerNamespace must be set - - - it: test network policy should be enabled by default - set: - networkPolicy: - dnsServerNamespace: test-dns-server-namespace - asserts: - - hasDocuments: - count: 1 - - - it: should add zufi rules when zufi-routing is enabled - set: - networkPolicy: - dnsServerNamespace: test-dns-server-namespace - routing: - routingStrategy: ZUFI - zufiManager: - namespace: zufi-namespace - asserts: - - contains: - path: spec.egress - content: - to: - - namespaceSelector: - matchLabels: - kubernetes.io/metadata.name: zufi-namespace - podSelector: - matchLabels: - component: zufi-server - ports: - - port: 9090 - protocol: TCP - - contains: - path: spec.egress - content: - to: - - namespaceSelector: {} - podSelector: - matchLabels: - component: vorgang-manager - ports: - - port: 9090 - protocol: TCP - - - it: should throw error when zufi is enabled but zufi namespace not set - set: - networkPolicy: - dnsServerNamespace: test-dns-server-namespace - routing: - routingStrategy: ZUFI - asserts: - - failedTemplate: - errorMessage: routing.zufiManager.namespace must be set if routingStrategy=ZUFI - - - it: should not add zufi rule when zufi-routing is disabled - set: - networkPolicy: - dnsServerNamespace: test-dns-server-namespace - routing: - zufiManager: - namespace: zufi-namespace - asserts: - - notContains: - path: spec.egress - content: - to: - - namespaceSelector: - matchLabels: - kubernetes.io/metadata.name: zufi-namespace - podSelector: - matchLabels: - component: zufi-server - - notContains: - path: spec.egress - content: - to: - - namespaceSelector: {} - podSelector: - matchLabels: - component: vorgang-manager - ports: - - port: 9090 - protocol: TCP diff --git a/xta-adapter/src/test/helm/service_account_test.yaml b/xta-adapter/src/test/helm/service_account_test.yaml deleted file mode 100644 index 1027bebb..00000000 --- a/xta-adapter/src/test/helm/service_account_test.yaml +++ /dev/null @@ -1,66 +0,0 @@ -# -# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -suite: test service account -release: - name: xta-adapter - namespace: sh-helm-test -templates: - - templates/service_account.yaml -tests: - - it: should create service account with default name - set: - serviceAccount: - create: true - asserts: - - isKind: - of: ServiceAccount - - isAPIVersion: - of: v1 - - equal: - path: metadata.name - value: xta-adapter-service-account - - equal: - path: metadata.namespace - value: sh-helm-test - - it: should create service account with name - set: - serviceAccount: - create: true - name: helm-service-account - asserts: - - isKind: - of: ServiceAccount - - isAPIVersion: - of: v1 - - equal: - path: metadata.name - value: helm-service-account - - equal: - path: metadata.namespace - value: sh-helm-test - - it: should not create service account - asserts: - - hasDocuments: - count: 0 \ No newline at end of file diff --git a/xta-adapter/src/test/helm/xta_adapter_63_chars_test.yaml b/xta-adapter/src/test/helm/xta_adapter_63_chars_test.yaml deleted file mode 100644 index 94188354..00000000 --- a/xta-adapter/src/test/helm/xta_adapter_63_chars_test.yaml +++ /dev/null @@ -1,56 +0,0 @@ -# -# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -suite: test less than 63 chars -release: - name: xta-adapter - namespace: sh-helm-test -set: - ozgcloud.environment: test - imagePullSecret: image-pull-secret -chart: - name: xta-adapter - -templates: - - templates/xta_adapter_cronjob.yaml - -tests: - - it: should fail on .Release.Namespace length longer than 63 characters - release: - namespace: test1234567890123123456789012345678901234567890123456789012345678901234567890123456789012345678904567890 - asserts: - - failedTemplate: - errorMessage: .Release.Namespace test1234567890123123456789012345678901234567890123456789012345678901234567890123456789012345678904567890 ist zu lang (max. 63 Zeichen) - - it: should not fail on .Release.Namespace length less than 63 characters - asserts: - - notFailedTemplate: {} - - it: should fail on .Chart.Name-.Chart.Version length longer than 63 characters - chart: - version: 1.0-test1234567890123123456789012345678901234567890123456789012345678901234567890123456789012345678904567890 - asserts: - - failedTemplate: - errorMessage: .Chart.Name-.Chart.Version xta-adapter-1.0-test1234567890123123456789012345678901234567890123456789012345678901234567890123456789012345678904567890 ist zu lang (max. 63 Zeichen) - - it: should not fail on .Chart.Name-.Chart.Version length less than 63 characters - asserts: - - notFailedTemplate: {} \ No newline at end of file diff --git a/xta-adapter/src/test/helm/xta_adapter_cronjob_basic_test.yaml b/xta-adapter/src/test/helm/xta_adapter_cronjob_basic_test.yaml deleted file mode 100644 index 7eac13e8..00000000 --- a/xta-adapter/src/test/helm/xta_adapter_cronjob_basic_test.yaml +++ /dev/null @@ -1,148 +0,0 @@ -# -# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -suite: test xta adapter cronjob basics -templates: - - templates/xta_adapter_cronjob.yaml -release: - name: xta-adapter - namespace: helm-test -set: - ozgcloud.environment: dev - imagePullSecret: image-pull-secret - -tests: - - it: validate basic data - set: - image.name: xta-adapter - asserts: - - containsDocument: - kind: CronJob - apiVersion: batch/v1 - - equal: - path: metadata.name - value: xta-adapter - - equal: - path: metadata.namespace - value: helm-test - - equal: - path: spec.successfulJobsHistoryLimit - value: 3 - - equal: - path: spec.failedJobsHistoryLimit - value: 3 - - equal: - path: spec.concurrencyPolicy - value: Forbid - - it: check set schedule - set: - image.name: xta-adapter - xta: - schedule: "1 1 * * * *" - identifiers: - - gae:test@ozg-sh.de - server: - address: 1.2.3.4 - name: test - asserts: - - equal: - path: spec.schedule - value: "1 1 * * * *" - - it: check dev schedule - set: - image.name: xta-adapter - asserts: - - equal: - path: spec.schedule - value: "*/15 * * * *" - - it: check container image - set: - image.name: xta-adapter - asserts: - - equal: - path: spec.jobTemplate.spec.template.spec.containers[0].image - value: "docker.ozg-sh.de/xta-adapter:9.9.99" - - - it: check securityContext - asserts: - - equal: - path: spec.jobTemplate.spec.template.spec.containers[0].securityContext.allowPrivilegeEscalation - value: false - - equal: - path: spec.jobTemplate.spec.template.spec.containers[0].securityContext.privileged - value: false - - equal: - path: spec.jobTemplate.spec.template.spec.containers[0].securityContext.readOnlyRootFilesystem - value: false - - equal: - path: spec.jobTemplate.spec.template.spec.containers[0].securityContext.runAsNonRoot - value: true - - isNull: - path: spec.jobTemplate.spec.template.spec.containers[0].securityContext.runAsUser - - isNull: - path: spec.jobTemplate.spec.template.spec.containers[0].securityContext.runAsGroup - - isNull: - path: spec.jobTemplate.spec.template.spec.securityContext.fsGroup - - isNull: - path: spec.jobTemplate.spec.template.spec.containers[0].securityContext.capabilities - - it: check runAsUser - set: - securityContext.runAsUser: 1000 - asserts: - - equal: - path: spec.jobTemplate.spec.template.spec.containers[0].securityContext.runAsUser - value: 1000 - - it: check runAsGroup - set: - securityContext.runAsGroup: 1000 - asserts: - - equal: - path: spec.jobTemplate.spec.template.spec.containers[0].securityContext.runAsGroup - value: 1000 - - it: check pod labels - asserts: - - equal: - path: spec.jobTemplate.spec.template.metadata.labels - value: - ozg-component: xta-adapter - workload: xta-adapter-cronjob - - it: check fsGroup - set: - podSecurityContext.fsGroup: 1000 - asserts: - - equal: - path: spec.jobTemplate.spec.template.spec.securityContext.fsGroup - value: 1000 - - it: check capabilities - set: - securityContext: - capabilities: - drop: - - ALL - asserts: - - equal: - path: spec.jobTemplate.spec.template.spec.containers[0].securityContext.capabilities - value: - drop: - - ALL diff --git a/xta-adapter/src/test/helm/xta_adapter_cronjob_bindings_test.yaml b/xta-adapter/src/test/helm/xta_adapter_cronjob_bindings_test.yaml deleted file mode 100644 index 9305d2d9..00000000 --- a/xta-adapter/src/test/helm/xta_adapter_cronjob_bindings_test.yaml +++ /dev/null @@ -1,47 +0,0 @@ -# -# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -suite: xta-adapter bindings -templates: - - templates/xta_adapter_cronjob.yaml -set: - ozgcloud.environment: test - imagePullSecret: image-pull-secret -tests: - - it: should have temp-dir volume - asserts: - - contains: - path: spec.jobTemplate.spec.template.spec.containers[0].volumeMounts - content: - name: temp-dir - mountPath: "/tmp" - - - it: should have temp-dir volume mount - asserts: - - contains: - path: spec.jobTemplate.spec.template.spec.volumes - content: - name: temp-dir - emptyDir: {} - diff --git a/xta-adapter/src/test/helm/xta_adapter_cronjob_dummy_probes_test.yaml b/xta-adapter/src/test/helm/xta_adapter_cronjob_dummy_probes_test.yaml deleted file mode 100644 index a8cd367d..00000000 --- a/xta-adapter/src/test/helm/xta_adapter_cronjob_dummy_probes_test.yaml +++ /dev/null @@ -1,85 +0,0 @@ -# -# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -suite: test xta adapter cronjob dummy probes -templates: - - templates/xta_adapter_cronjob.yaml -release: - name: xta-adapter - namespace: helm-test -set: - ozgcloud.environment: test - imagePullSecret: image-pull-secret -tests: - - it: check dummy livenessProbe default disabled - asserts: - - notExists: - path: spec.jobTemplate.spec.template.spec.containers[0].livenessProbe - - it: check dummy startupProbe default disabled - asserts: - - notExists: - path: spec.jobTemplate.spec.template.spec.containers[0].startupProbe - - it: check dummy readynessProbe default disabled - asserts: - - notExists: - path: spec.jobTemplate.spec.template.spec.containers[0].readinessProbe - - - it: check dummy livenessProbe disabled - set: - dummyProbesEnabled: false - asserts: - - notExists: - path: spec.jobTemplate.spec.template.spec.containers[0].livenessProbe - - it: check dummy startupProbe disabled - set: - dummyProbesEnabled: false - asserts: - - notExists: - path: spec.jobTemplate.spec.template.spec.containers[0].startupProbe - - it: check dummy readynessProbe disabled - set: - dummyProbesEnabled: false - asserts: - - notExists: - path: spec.jobTemplate.spec.template.spec.containers[0].readinessProbe - - - - it: check dummy livenessProbe enabled - set: - dummyProbesEnabled: true - asserts: - - isNotEmpty: - path: spec.jobTemplate.spec.template.spec.containers[0].livenessProbe - - it: check dummy startupProbe enabled - set: - dummyProbesEnabled: true - asserts: - - isNotEmpty: - path: spec.jobTemplate.spec.template.spec.containers[0].startupProbe - - it: check dummy readynessProbe enabled - set: - dummyProbesEnabled: true - asserts: - - isNotEmpty: - path: spec.jobTemplate.spec.template.spec.containers[0].readinessProbe diff --git a/xta-adapter/src/test/helm/xta_adapter_cronjob_env_test.yaml b/xta-adapter/src/test/helm/xta_adapter_cronjob_env_test.yaml deleted file mode 100644 index e247e20d..00000000 --- a/xta-adapter/src/test/helm/xta_adapter_cronjob_env_test.yaml +++ /dev/null @@ -1,202 +0,0 @@ -# -# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -suite: test xta adapter cronjob env -templates: - - templates/xta_adapter_cronjob.yaml -release: - name: xta-adapter - namespace: helm-test -set: - ozgcloud.environment: test - imagePullSecret: image-pull-secret -tests: - - it: check default env - set: - image.name: xta-adapter - xta: - identifiers: - - gae:test@ozg-sh.de - - afmsh:test@ozg-sh.de - server: - name: test - address: 1.2.3.4 - protocol: https - asserts: - - contains: - path: spec.jobTemplate.spec.template.spec.containers[0].env - content: - name: spring_profiles_active - value: "oc, test" - - contains: - path: spec.jobTemplate.spec.template.spec.containers[0].env - content: - name: SERVICE_BINDING_ROOT - value: "/bindings" - - contains: - path: spec.jobTemplate.spec.template.spec.containers[0].env - content: - name: ozgcloud_xta_server_name - value: "test" - - contains: - path: spec.jobTemplate.spec.template.spec.containers[0].env - content: - name: ozgcloud_xta_server_address - value: "1.2.3.4" - - contains: - path: spec.jobTemplate.spec.template.spec.containers[0].env - content: - name: ozgcloud_xta_server_protocol - value: "https" - - contains: - path: spec.jobTemplate.spec.template.spec.containers[0].env - content: - name: ozgcloud_xta_identifiers - value: "gae:test@ozg-sh.de,afmsh:test@ozg-sh.de" - - contains: - path: spec.jobTemplate.spec.template.spec.containers[0].env - content: - name: ozgcloud_xta_keystore_file - value: "keystore/xta-keystore.p12" - - contains: - path: spec.jobTemplate.spec.template.spec.containers[0].env - content: - name: ozgcloud_xta_keystore_password - valueFrom: - secretKeyRef: - name: "xta-keystore" - key: password - optional: false - - contains: - path: spec.jobTemplate.spec.template.spec.containers[0].env - content: - name: ozgcloud_adapter_fallbackStrategy - value: "DENY" - - contains: - path: spec.jobTemplate.spec.template.spec.containers[0].env - content: - name: ozgcloud_adapter_routingStrategy - value: "SINGLE" - - contains: - path: spec.jobTemplate.spec.template.spec.containers[0].env - content: - name: ozgcloud_adapter_targetVorgangManagerName - value: "vorgang-manager" - - contains: - path: spec.jobTemplate.spec.template.spec.containers[0].env - content: - name: grpc_client_vorgang-manager-vorgang-manager_address - value: 'dns:///vorgang-manager.helm-test:9090' - - contains: - path: spec.jobTemplate.spec.template.spec.containers[0].env - content: - name: grpc_client_vorgang-manager-vorgang-manager_negotiationType - value: "PLAINTEXT" - - it: check set env values - set: - image.name: xta-adapter - env.overrideSpringProfiles: local - xta: - identifiers: - - gae:test@ozg-sh.de - server: - name: test - address: 1.2.3.4 - routing: - routingStrategy: MULTI - fallbackStrategy: FUNDSTELLE - negotiationType: TLS - asserts: - - contains: - path: spec.jobTemplate.spec.template.spec.containers[0].env - content: - name: spring_profiles_active - value: "local" - - contains: - path: spec.jobTemplate.spec.template.spec.containers[0].env - content: - name: ozgcloud_adapter_fallbackStrategy - value: "FUNDSTELLE" - - contains: - path: spec.jobTemplate.spec.template.spec.containers[0].env - content: - name: ozgcloud_adapter_routingStrategy - value: "MULTI" - - contains: - path: spec.jobTemplate.spec.template.spec.containers[0].env - content: - name: ozgcloud_adapter_targetVorgangManagerName - value: "vorgang-manager" - - contains: - path: spec.jobTemplate.spec.template.spec.containers[0].env - content: - name: grpc_client_vorgang-manager-vorgang-manager_address - value: 'dns:///vorgang-manager.helm-test:9090' - - contains: - path: spec.jobTemplate.spec.template.spec.containers[0].env - content: - name: grpc_client_vorgang-manager-vorgang-manager_negotiationType - value: "TLS" - - it: check customList as list - set: - env.customList: - - name: my_test_environment_name - value: "A test value" - - name: test_environment - value: "B test value" - asserts: - - contains: - path: spec.jobTemplate.spec.template.spec.containers[0].env - content: - name: my_test_environment_name - value: "A test value" - - contains: - path: spec.jobTemplate.spec.template.spec.containers[0].env - content: - name: test_environment - value: "B test value" - - it: check customList as dict - set: - env.customList: - my_test_environment_name: "A test value" - test_environment: "B test value" - asserts: - - contains: - path: spec.jobTemplate.spec.template.spec.containers[0].env - content: - name: my_test_environment_name - value: "A test value" - - contains: - path: spec.jobTemplate.spec.template.spec.containers[0].env - content: - name: test_environment - value: "B test value" - - - it: check customList test value is not set by default - asserts: - - notContains: - path: spec.jobTemplate.spec.template.spec.containers[0].env - content: - name: my_test_environment_name - value: "A test value" diff --git a/xta-adapter/src/test/helm/xta_adapter_cronjob_image_pull_test.yaml b/xta-adapter/src/test/helm/xta_adapter_cronjob_image_pull_test.yaml deleted file mode 100644 index 645b2573..00000000 --- a/xta-adapter/src/test/helm/xta_adapter_cronjob_image_pull_test.yaml +++ /dev/null @@ -1,45 +0,0 @@ -# -# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -suite: test xta adapter imagePull secret -release: - name: xta-adapter - namespace: sh-helm-test -templates: - - templates/xta_adapter_cronjob.yaml -set: - ozgcloud.environment: dev - -tests: - - it: should fail when imagePull secret not set - asserts: - - failedTemplate: - errormessage: imagePullSecret must be set - - it: should set the imagePull secret - set: - imagePullSecret: image-pull-secret - asserts: - - equal: - path: spec.jobTemplate.spec.template.spec.imagePullSecrets[0].name - value: image-pull-secret \ No newline at end of file diff --git a/xta-adapter/src/test/helm/xta_adapter_cronjob_resources_test.yaml b/xta-adapter/src/test/helm/xta_adapter_cronjob_resources_test.yaml deleted file mode 100644 index a2db96cb..00000000 --- a/xta-adapter/src/test/helm/xta_adapter_cronjob_resources_test.yaml +++ /dev/null @@ -1,56 +0,0 @@ -# -# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -suite: test xta adapter cronjob resources -templates: - - templates/xta_adapter_cronjob.yaml -release: - name: xta-adapter - namespace: helm-test -set: - ozgcloud.environment: dev - imagePullSecret: image-pull-secret -tests: - - it: check resources - set: - resources: - limits: - cpu: "11m" - memory: "22Mi" - requests: - cpu: "33m" - memory: "44Mi" - asserts: - - equal: - path: spec.jobTemplate.spec.template.spec.containers[0].resources.limits.cpu - value: "11m" - - equal: - path: spec.jobTemplate.spec.template.spec.containers[0].resources.limits.memory - value: "22Mi" - - equal: - path: spec.jobTemplate.spec.template.spec.containers[0].resources.requests.cpu - value: "33m" - - equal: - path: spec.jobTemplate.spec.template.spec.containers[0].resources.requests.memory - value: "44Mi" diff --git a/xta-adapter/src/test/helm/xta_adapter_cronjob_routing_zufi_test.yaml b/xta-adapter/src/test/helm/xta_adapter_cronjob_routing_zufi_test.yaml deleted file mode 100644 index 1414a4e8..00000000 --- a/xta-adapter/src/test/helm/xta_adapter_cronjob_routing_zufi_test.yaml +++ /dev/null @@ -1,88 +0,0 @@ -# -# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -suite: test deployment zufi routing -release: - name: intelliform-adapter - namespace: sh-helm-test -templates: - - templates/xta_adapter_cronjob.yaml -set: - ozgcloud.environment: test - imagePullSecret: image-pull-secret -tests: - - it: should set zufi routing values when zufi is enabled - set: - routing: - routingStrategy: "ZUFI" - zufiManager: - address: "127.0.0.1" - negotiationType: "TLS" - asserts: - - contains: - path: spec.jobTemplate.spec.template.spec.containers[0].env - content: - name: grpc_client_zufi-manager_address - value: "127.0.0.1" - - contains: - path: spec.jobTemplate.spec.template.spec.containers[0].env - content: - name: grpc_client_zufi-manager_negotiationType - value: "TLS" - - - it: should not set zufi routing values when zufi is disabled - asserts: - - notContains: - path: spec.jobTemplate.spec.template.spec.containers[0].env - content: - name: grpc_client_zufi-manager_address - any: true - - notContains: - path: spec.jobTemplate.spec.template.spec.containers[0].env - content: - name: grpc_client_zufi-manager_negotiationType - any: true - - - it: should throw error if zufi manager address is not set - set: - routing: - routingStrategy: "ZUFI" - zufiManager: - negotiationType: "PLAINTEXT" - asserts: - - failedTemplate: - errorMessage: "routing.zufiManager.address must be set when routingStrategy=ZUFI" - - - it: should set default value for zufi negotiationType - set: - routing: - routingStrategy: "ZUFI" - zufiManager: - address: "127.0.0.1" - asserts: - - contains: - path: spec.jobTemplate.spec.template.spec.containers[0].env - content: - name: grpc_client_zufi-manager_negotiationType - value: "PLAINTEXT" \ No newline at end of file diff --git a/xta-adapter/src/test/helm/xta_adapter_cronjob_service_account_test.yaml b/xta-adapter/src/test/helm/xta_adapter_cronjob_service_account_test.yaml deleted file mode 100644 index 961dbcf2..00000000 --- a/xta-adapter/src/test/helm/xta_adapter_cronjob_service_account_test.yaml +++ /dev/null @@ -1,55 +0,0 @@ -# -# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -suite: test cronjob service account -templates: - - templates/xta_adapter_cronjob.yaml -release: - name: xta-adapter - namespace: helm-test -set: - ozgcloud.environment: test - imagePullSecret: image-pull-secret -tests: - - it: should use service account with default name - set: - serviceAccount: - create: true - asserts: - - equal: - path: spec.jobTemplate.spec.template.spec.serviceAccountName - value: xta-adapter-service-account - - it: should use service account with name - set: - serviceAccount: - create: true - name: helm-service-account - asserts: - - equal: - path: spec.jobTemplate.spec.template.spec.serviceAccountName - value: helm-service-account - - it: should use default service account - asserts: - - isNull: - path: spec.jobTemplate.spec.template.spec.serviceAccountName diff --git a/xta-adapter/src/test/helm/xta_adapter_cronjob_volumes_test.yaml b/xta-adapter/src/test/helm/xta_adapter_cronjob_volumes_test.yaml deleted file mode 100644 index 352f196b..00000000 --- a/xta-adapter/src/test/helm/xta_adapter_cronjob_volumes_test.yaml +++ /dev/null @@ -1,93 +0,0 @@ -# -# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -suite: test xta adapter cronjob volume -templates: - - templates/xta_adapter_cronjob.yaml -release: - name: xta-adapter - namespace: helm-test -set: - ozgcloud.environment: dev - imagePullSecret: image-pull-secret -tests: - - it: check volume mounts - set: - image.name: xta-adapter - xta: - identifiers: - - gae:test@ozg-sh.de - server: - name: test - address: 1.2.3.4 - asserts: - - contains: - path: spec.jobTemplate.spec.template.spec.containers[0].volumeMounts - content: - name: bindings - mountPath: "/bindings/ca-certificates/type" - subPath: type - readOnly: true - - contains: - path: spec.jobTemplate.spec.template.spec.containers[0].volumeMounts - content: - name: xta-root-ca - mountPath: "/bindings/ca-certificates/xta-root-ca.crt" - subPath: ca.crt - readOnly: true - - contains: - path: spec.jobTemplate.spec.template.spec.containers[0].volumeMounts - content: - name: xta-keystore - mountPath: "/workspace/keystore/xta-keystore.p12" - subPath: file - readOnly: true - - it: check volumes - set: - image.name: xta-adapter - xta: - identifiers: - - gae:test@ozg-sh.de - server: - name: test - address: 1.2.3.4 - asserts: - - contains: - path: spec.jobTemplate.spec.template.spec.volumes - content: - name: bindings - configMap: - name: xta-adapter-bindings-type - - contains: - path: spec.jobTemplate.spec.template.spec.volumes - content: - name: xta-root-ca - secret: - secretName: xta-root-ca - - contains: - path: spec.jobTemplate.spec.template.spec.volumes - content: - name: xta-keystore - secret: - secretName: xta-keystore diff --git a/xta-adapter/src/test/helm/xta_bindings_type_test.yaml b/xta-adapter/src/test/helm/xta_bindings_type_test.yaml deleted file mode 100644 index ad369799..00000000 --- a/xta-adapter/src/test/helm/xta_bindings_type_test.yaml +++ /dev/null @@ -1,56 +0,0 @@ -# -# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -suite: test xta bindings type configmap -templates: - - templates/xta_bindings_type_configmap.yaml -release: - name: xta-adapter - namespace: helm-test -tests: - - it: test xta bindings type - set: - image.name: xta-adapter - xta: - rootCa: Z2VoZWltCg== - asserts: - - isKind: - of: ConfigMap - - isAPIVersion: - of: v1 - - equal: - path: metadata.name - value: xta-adapter-bindings-type - - equal: - path: metadata.namespace - value: helm-test - - equal: - path: data.type - value: ca-certificates - - it: should not create config map by default - asserts: - - hasDocuments: - count: 0 - - \ No newline at end of file diff --git a/xta-adapter/src/test/helm/xta_keystore_secret_test.yaml b/xta-adapter/src/test/helm/xta_keystore_secret_test.yaml deleted file mode 100644 index fca872c1..00000000 --- a/xta-adapter/src/test/helm/xta_keystore_secret_test.yaml +++ /dev/null @@ -1,64 +0,0 @@ -# -# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -suite: test xta keystore secret -templates: - - templates/xta_keystore_secret.yaml -release: - name: xta-adapter - namespace: helm-test -tests: - - it: test xta keystore - set: - image.name: xta-adapter - xta: - keystore: - password: <geheim> - file: Z2VoZWltCg== - asserts: - - isKind: - of: Secret - - isAPIVersion: - of: v1 - - equal: - path: type - value: Opaque - - equal: - path: metadata.name - value: xta-keystore - - equal: - path: metadata.namespace - value: helm-test - - equal: - path: stringData.password - value: geheim - - equal: - path: data.file - value: Z2VoZWltCg== - - - it: should not create keystore by default - asserts: - - hasDocuments: - count: 0 - diff --git a/xta-adapter/src/test/helm/xta_root_ca_secret_test.yaml b/xta-adapter/src/test/helm/xta_root_ca_secret_test.yaml deleted file mode 100644 index f65bbcb9..00000000 --- a/xta-adapter/src/test/helm/xta_root_ca_secret_test.yaml +++ /dev/null @@ -1,58 +0,0 @@ -# -# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -suite: test xta root ca secret -templates: - - templates/xta_root_ca_secret.yaml -release: - name: xta-adapter - namespace: helm-test -tests: - - it: test xta root ca - set: - image.name: xta-adapter - xta: - rootCa: Z2VoZWltCg== - asserts: - - isKind: - of: Secret - - isAPIVersion: - of: v1 - - equal: - path: metadata.name - value: xta-root-ca - - equal: - path: type - value: Opaque - - equal: - path: metadata.namespace - value: helm-test - - equal: - path: data["ca.crt"] - value: Z2VoZWltCg== - - - it: should not create ca secret by default - asserts: - - hasDocuments: - count: 0 \ No newline at end of file diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xdomea/XdomeaMessageDataMapperTest.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xdomea/XdomeaMessageDataMapperTest.java deleted file mode 100644 index 11942226..00000000 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xdomea/XdomeaMessageDataMapperTest.java +++ /dev/null @@ -1,217 +0,0 @@ -package de.ozgcloud.eingang.xdomea; - -import static de.ozgcloud.eingang.common.formdata.IncomingFileGroupTestFactory.*; -import static de.ozgcloud.eingang.xdomea.XdomeaMessageDataMapper.*; -import static org.assertj.core.api.Assertions.*; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.Mockito.*; - -import java.util.Collection; -import java.util.List; -import java.util.stream.Stream; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.ValueSource; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.Spy; - -import de.ozgcloud.eingang.common.errorhandling.TechnicalException; -import de.ozgcloud.eingang.common.formdata.IncomingFile; -import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; -import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory; - -class XdomeaMessageDataMapperTest { - - @Spy - @InjectMocks - private XdomeaMessageDataMapper fileClassifier; - - @Mock - private XdomeaXMLValueReader valueReader; - - @DisplayName("map incoming files to representations attachments pair") - @Nested - class TestMapIncomingFilesToRepresentationsAttachmentsPair { - - @Mock - private List<IncomingFile> incomingFileList; - - @DisplayName("should map representations") - @ParameterizedTest - @ValueSource(booleans = { true, false }) - void shouldMapRepresentations(boolean useUuidPrefix) { - mockXdomeaMessageData(useUuidPrefix); - - var pair = fileClassifier.mapIncomingFilesToRepresentationsAttachmentsPair(incomingFileList); - - var representationFilenames = pair.representations().stream().map(IncomingFile::getName).toList(); - assertThat(representationFilenames).containsExactly(XDOMEA_XML_NAME, REPR_XML_NAME, REPR_PDF_NAME); - } - - @DisplayName("should map attachments") - @ParameterizedTest - @ValueSource(booleans = { true, false }) - void shouldMapAttachments(boolean useUuidPrefix) { - mockXdomeaMessageData(useUuidPrefix); - - var pair = fileClassifier.mapIncomingFilesToRepresentationsAttachmentsPair(incomingFileList); - - var attachmentFilenames = pair.attachments().stream() - .map(IncomingFileGroup::getFiles) - .flatMap(Collection::stream) - .map(IncomingFile::getName) - .toList(); - assertThat(attachmentFilenames).containsExactly(ATTATCHMENT_XML_NAME, ATTATCHMENT_PNG_NAME, ATTATCHMENT_PDF_NAME); - } - - private void mockXdomeaMessageData(boolean useUuidPrefix) { - doReturn(XdomeaMessageDataTestFactory.create(useUuidPrefix)).when(fileClassifier).mapIncomingFilesToXdomeaMessageData(incomingFileList); - } - - } - - @DisplayName("find Xdomea XML file") - @Nested - class TestFindXdomeaXmlFile { - - private static final String FILE_NAME_WITHOUT_SUFFIX = "some-file-name.xml"; - private static final String FILE_NAME_WITH_SUFFIX = "some-file-name" + XDOMEA_0201_XML_FILE_NAME_SUFFIX; - - @DisplayName("should throw if not found") - @Test - void shouldThrowIfNotFound() { - var incomingFilesWithout = List.of(IncomingFileTestFactory.createBuilder().name(FILE_NAME_WITHOUT_SUFFIX).build()); - - assertThatThrownBy(() -> fileClassifier.findXdomeaXMLFile(incomingFilesWithout)) - .isInstanceOf(TechnicalException.class); - } - - @DisplayName("should return if found") - @Test - void shouldReturnIfFound() { - var targetIncomingFile = IncomingFileTestFactory.createBuilder().name(FILE_NAME_WITH_SUFFIX).build(); - var incomingFilesWith = List.of( - IncomingFileTestFactory.createBuilder().name(FILE_NAME_WITHOUT_SUFFIX).build(), - targetIncomingFile - ); - - var primaryRepresentation = fileClassifier.findXdomeaXMLFile(incomingFilesWith); - - assertThat(primaryRepresentation).isEqualTo(targetIncomingFile); - } - } - - @DisplayName("find primary representation name") - @Nested - class TestFindPrimaryRepresentationName { - private static final String FILE_NAME_WITHOUT_XML_SUFFIX = "some-file-name.pdf"; - private static final String FILE_NAME_WITHOUT_XML_SUFFIX2 = "some-file-name.xml.pdf"; - private static final String FILE_NAME_WITH_XML_SUFFIX = "some-file-name.xml"; - private static final String FILE_NAME_WITH_XML_SUFFIX2 = "some-file-name.pdf.xml"; - - @DisplayName("should throw if no xml suffix") - @Test - void shouldThrowIfNoXmlSuffix() { - var listWithoutSuffix = List.of(FILE_NAME_WITHOUT_XML_SUFFIX, FILE_NAME_WITHOUT_XML_SUFFIX2); - - assertThrows(TechnicalException.class, () -> fileClassifier.findPrimaryRepresentationName(listWithoutSuffix)); - } - - @DisplayName("should return first with xml suffix") - @Test - void shouldReturnFirstWithXmlSuffix() { - var listWithSuffix = List.of(FILE_NAME_WITHOUT_XML_SUFFIX, FILE_NAME_WITH_XML_SUFFIX, FILE_NAME_WITHOUT_XML_SUFFIX2, - FILE_NAME_WITH_XML_SUFFIX2); - - var fileName = fileClassifier.findPrimaryRepresentationName(listWithSuffix); - - assertThat(fileName).isEqualTo(FILE_NAME_WITH_XML_SUFFIX); - } - } - - @DisplayName("classify attachments and representations") - @Nested - class TestClassifyAttachmentsAndRepresentations { - - @Mock - private IncomingFile xdomeaXMLFile; - - private List<IncomingFile> incomingFileList; - - @BeforeEach - void mock() { - incomingFileList = Stream.of( - XDOMEA_XML_NAME, - REPR_XML_NAME, - REPR_PDF_NAME, - ATTATCHMENT_XML_NAME, - ATTATCHMENT_PNG_NAME, - ATTATCHMENT_PDF_NAME - ) - .map(name -> IncomingFileTestFactory.createBuilder().name(name).build()) - .toList(); - doReturn(xdomeaXMLFile).when(fileClassifier).findXdomeaXMLFile(incomingFileList); - - when(xdomeaXMLFile.getName()).thenReturn(XDOMEA_XML_NAME); - - var representationFileNames = List.of(REPR_PDF_NAME, REPR_XML_NAME); - when(valueReader.readRepresentationFileNames(xdomeaXMLFile)).thenReturn(representationFileNames); - doReturn(REPR_XML_NAME).when(fileClassifier).findPrimaryRepresentationName(representationFileNames); - } - - @DisplayName("should contain xdomea metadata file") - @Test - void shouldContainXdomeaMetadataFile() { - var classification = doClassify(); - - var primaryDocument = classification.metadataFile(); - assertThat(primaryDocument.getName()).isEqualTo(XDOMEA_XML_NAME); - } - - @DisplayName("should contain representations") - @Test - void shouldContainRepresentations() { - var classification = doClassify(); - - var resultRepresentationFileNames = classification.representations().stream() - .map(IncomingFile::getName) - .toList(); - // Expect that the primary representation xml file is moved to the first position - assertThat(resultRepresentationFileNames).isEqualTo(List.of(REPR_XML_NAME, REPR_PDF_NAME)); - } - - @DisplayName("should contain attachments") - @Test - void shouldContainAttachments() { - var classification = doClassify(); - - var resultAttachmentFileNames = classification.attachments() - .getFirst() - .getFiles().stream() - .map(IncomingFile::getName) - .toList(); - assertThat(resultAttachmentFileNames).isEqualTo(List.of(ATTATCHMENT_XML_NAME, ATTATCHMENT_PNG_NAME, ATTATCHMENT_PDF_NAME)); - } - - @DisplayName("should have attachment group name") - @Test - void shouldHaveAttachmentGroupName() { - var classification = doClassify(); - - var resultAttachmentGroupName = classification.attachments() - .getFirst() - .getName(); - assertThat(resultAttachmentGroupName).isEqualTo(ATTACHMENT_GROUP_NAME); - } - - private XdomeaMessageData doClassify() { - return fileClassifier.mapIncomingFilesToXdomeaMessageData(incomingFileList); - } - } - -} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xdomea/XdomeaMessageDataTestFactory.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xdomea/XdomeaMessageDataTestFactory.java deleted file mode 100644 index c9064a93..00000000 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xdomea/XdomeaMessageDataTestFactory.java +++ /dev/null @@ -1,45 +0,0 @@ -package de.ozgcloud.eingang.xdomea; - -import static de.ozgcloud.eingang.common.formdata.IncomingFileGroupTestFactory.*; - -import java.util.UUID; -import java.util.stream.Stream; - -import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; -import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory; - -public class XdomeaMessageDataTestFactory { - public static XdomeaMessageData create(boolean useUuidPrefix) { - return createBuilder(useUuidPrefix).build(); - } - - public static XdomeaMessageData.XdomeaMessageDataBuilder createBuilder(boolean useUuidPrefix) { - var incomingFiles = Stream.of( - XDOMEA_XML_NAME, - REPR_XML_NAME, - REPR_PDF_NAME, - ATTATCHMENT_XML_NAME, - ATTATCHMENT_PNG_NAME, - ATTATCHMENT_PDF_NAME - ) - .map(name -> useUuidPrefix ? withUUIDPrefix(name) : name) - .map(name -> IncomingFileTestFactory.createBuilder().name(name).build()) - .toList(); - - return XdomeaMessageData.builder() - .metadataFile(incomingFiles.getFirst()) - .representations(incomingFiles.subList(1, 3)) - .attachments(incomingFiles.subList(3, 6).stream() - .map(incomingFile -> IncomingFileGroup.builder() - .name("group-name") - .file(incomingFile) - .build()) - .toList() - ); - } - - private static String withUUIDPrefix(String name) { - return UUID.randomUUID() + "_" + name; - } - -} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xdomea/XdomeaXMLValueReaderTest.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xdomea/XdomeaXMLValueReaderTest.java deleted file mode 100644 index 88d7d7cd..00000000 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xdomea/XdomeaXMLValueReaderTest.java +++ /dev/null @@ -1,59 +0,0 @@ -package de.ozgcloud.eingang.xdomea; - -import static org.assertj.core.api.Assertions.*; -import static org.mockito.Mockito.*; - -import java.nio.charset.StandardCharsets; - -import org.apache.commons.io.IOUtils; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.ValueSource; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.Spy; - -import de.ozgcloud.common.test.TestUtils; -import de.ozgcloud.eingang.common.formdata.IncomingFile; -import lombok.SneakyThrows; - -class XdomeaXMLValueReaderTest { - private static final String XML_FILE_NAME = "file.xml"; - private static final String PDF_FILE_NAME = "file.pdf"; - private static final String XML_ATTACHMENT_FILE_NAME = "saml-attachment-file.xml"; - - @Spy - @InjectMocks - private XdomeaXMLValueReader valueReader; - - @DisplayName("read representation file names") - @Nested - class TestReadRepresentationFileNames { - - @Mock - IncomingFile incomingXmlFile; - - @DisplayName("should find 'Dateiname' elements and all XML-files in MSR mantelantrag") - @ParameterizedTest - @ValueSource(strings = { - "xdomea/mantelantrag_Geschaeftsgang.Geschaeftsgang.0201.xml", - "xdomea/dfoerdermittel_Geschaeftsgang.Geschaeftsgang.0201.xml" - }) - @SneakyThrows - void shouldFindDateinameElements(String antragXMLFilename) { - var xmlString = TestUtils.loadTextFile( - antragXMLFilename, - XML_FILE_NAME + "\n", - PDF_FILE_NAME, - "\n" + XML_ATTACHMENT_FILE_NAME + "\n"); - when(incomingXmlFile.getContentStream()).thenReturn(IOUtils.toInputStream(xmlString, StandardCharsets.UTF_8)); - - var names = valueReader.readRepresentationFileNames(incomingXmlFile); - - assertThat(names).containsExactly(XML_FILE_NAME, PDF_FILE_NAME, XML_ATTACHMENT_FILE_NAME); - } - - } - -} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/FormDataTestFactory.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/FormDataTestFactory.java deleted file mode 100644 index 50988098..00000000 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/FormDataTestFactory.java +++ /dev/null @@ -1,17 +0,0 @@ -package de.ozgcloud.eingang.xta; - -import de.ozgcloud.eingang.common.formdata.FormData; - -class FormDataTestFactory { - - static FormData create() { - return createBuilder().build(); - } - - static FormData.FormDataBuilder createBuilder() { - return FormData.builder() - .header(FormHeaderTestFactory.create()) - .numberOfRepresentations(1); - } - -} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/FormHeaderTestFactory.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/FormHeaderTestFactory.java deleted file mode 100644 index be839ff4..00000000 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/FormHeaderTestFactory.java +++ /dev/null @@ -1,27 +0,0 @@ -package de.ozgcloud.eingang.xta; - -import de.ozgcloud.eingang.common.formdata.FormHeader; -import de.ozgcloud.eingang.common.formdata.FormHeader.FormHeaderBuilder; - -public class FormHeaderTestFactory { - - private static final String FORM_NAME = "xdomea"; - static final String VORGANGNUMMER = "vorgangNummer"; - static final String CHANNEL = "XTA"; - static final String FIM_FORM_ENGINE_NAME = "FIM"; - static final String XDOMEA_FORM_ENGINE_NAME = "XDOMEA"; - - static FormHeader create() { - return createBuilder().build(); - } - - static FormHeaderBuilder createBuilder() { - return FormHeader.builder() - .sender("XTA") - .requestId(XtaMessageTestFactory.MESSAGE_ID.toString()) - .vorgangNummer(VORGANGNUMMER) - .formName(FORM_NAME) - .formId(XtaMessageMetaDataTestFactory.MESSAGE_TYPE) - .createdAt(XtaMessageMetaDataTestFactory.ORIGIN); - } -} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/MessageMetaDataTestFactory.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/MessageMetaDataTestFactory.java deleted file mode 100644 index f6faf22a..00000000 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/MessageMetaDataTestFactory.java +++ /dev/null @@ -1,22 +0,0 @@ -package de.ozgcloud.eingang.xta; - -import static de.ozgcloud.eingang.xta.XtaMessageTestFactory.*; - -import org.w3._2005._08.addressing.AttributedURIType; - -import eu.osci.ws._2014._10.transport.MessageMetaData; -import eu.osci.ws._2014._10.transport.MsgIdentificationType; - -class MessageMetaDataTestFactory { - - static MessageMetaData create() { - var result = new MessageMetaData(); - var identification = new MsgIdentificationType(); - var uri = new AttributedURIType(); - uri.setValue(MESSAGE_ID.toString()); - identification.setMessageID(uri); - result.setMsgIdentification(identification); - - return result; - } -} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/MsgStatusListTypeAndHeaderResponseTestFactory.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/MsgStatusListTypeAndHeaderResponseTestFactory.java deleted file mode 100644 index 955fab80..00000000 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/MsgStatusListTypeAndHeaderResponseTestFactory.java +++ /dev/null @@ -1,20 +0,0 @@ -package de.ozgcloud.eingang.xta; - -import java.util.stream.Stream; - -import eu.osci.ws._2014._10.transport.MessageMetaData; - -class MsgStatusListTypeAndHeaderResponseTestFactory { - - public static final MessageMetaData MESSAGE1 = MessageMetaDataTestFactory.create(); - - public static MsgStatusListTypeAndHeaderResponse create() { - return createBuilder().build(); - } - - public static MsgStatusListTypeAndHeaderResponse.MsgStatusListTypeAndHeaderResponseBuilder createBuilder() { - return MsgStatusListTypeAndHeaderResponse.builder() - .msgBoxRequestID(null) - .messages(Stream.of(MESSAGE1)); - } -} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/MsgStatusListTypeTestFactory.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/MsgStatusListTypeTestFactory.java deleted file mode 100644 index 17c8564b..00000000 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/MsgStatusListTypeTestFactory.java +++ /dev/null @@ -1,13 +0,0 @@ -package de.ozgcloud.eingang.xta; - -import eu.osci.ws._2008._05.transport.MsgStatusListType; - -class MsgStatusListTypeTestFactory { - - static MsgStatusListType create() { - var result = new MsgStatusListType(); - result.getMessageMetaData().add(MessageMetaDataTestFactory.create()); - return result; - } - -} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/RepresentationsAttachmentsPairTestFactory.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/RepresentationsAttachmentsPairTestFactory.java deleted file mode 100644 index 735e3d1f..00000000 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/RepresentationsAttachmentsPairTestFactory.java +++ /dev/null @@ -1,31 +0,0 @@ -package de.ozgcloud.eingang.xta; - -import java.util.List; - -import de.ozgcloud.eingang.common.formdata.IncomingFile; -import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; -import de.ozgcloud.eingang.common.formdata.IncomingFileGroupTestFactory; -import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory; - -public class RepresentationsAttachmentsPairTestFactory { - static List<IncomingFile> PAIR_REPRESENTATIONS = List.of( - IncomingFileTestFactory.createBuilder().name("representation1.xml").build(), - IncomingFileTestFactory.createBuilder().name("representation1.pdf").build() - ); - - static List<IncomingFileGroup> PAIR_ATTACHMENTS = List.of( - IncomingFileGroupTestFactory.create(), - IncomingFileGroupTestFactory.create(), - IncomingFileGroupTestFactory.create() - ); - - static RepresentationsAttachmentsPair create() { - return createBuilder().build(); - } - - static RepresentationsAttachmentsPair.RepresentationsAttachmentsPairBuilder createBuilder() { - return RepresentationsAttachmentsPair.builder() - .representations(PAIR_REPRESENTATIONS) - .attachments(PAIR_ATTACHMENTS); - } -} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaApplicationTest.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaApplicationTest.java deleted file mode 100644 index 8e2d830f..00000000 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaApplicationTest.java +++ /dev/null @@ -1,21 +0,0 @@ -package de.ozgcloud.eingang.xta; - -import static org.junit.jupiter.api.Assertions.*; - -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.ActiveProfiles; - -import de.ozgcloud.eingang.Application; - -@ActiveProfiles({ "local", "itcase" }) -@SpringBootTest(classes = Application.class) -class XtaApplicationTest { - - @Test - void startup() { - // should start without exception; - assertTrue(true); - } - -} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaCurrentIdentifierServiceTest.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaCurrentIdentifierServiceTest.java deleted file mode 100644 index 884faf6b..00000000 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaCurrentIdentifierServiceTest.java +++ /dev/null @@ -1,44 +0,0 @@ -package de.ozgcloud.eingang.xta; - -import static org.assertj.core.api.Assertions.*; -import static org.mockito.Mockito.*; - -import java.util.List; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.Spy; - -class XtaCurrentIdentifierServiceTest { - - private static final String IDENTIFIER1 = "identifier1"; - private static final String IDENTIFIER2 = "identifier2"; - private static final List<String> IDENTIFIERS = List.of(IDENTIFIER1, IDENTIFIER2); - - @Spy - @InjectMocks - private XtaCurrentIdentifierService service; - - @Mock - private XtaProperties properties; - - @DisplayName("get identifiers") - @Nested - class TestGetIdentifiers { - @BeforeEach - void mock() { - when(properties.getIdentifiers()).thenReturn(IDENTIFIERS); - } - - @DisplayName("should return") - @Test - void shouldReturn() { - assertThat(service.getIdentifiers()).isEqualTo(IDENTIFIERS); - } - } - -} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaFileTestFactory.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaFileTestFactory.java deleted file mode 100644 index a9491610..00000000 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaFileTestFactory.java +++ /dev/null @@ -1,47 +0,0 @@ -package de.ozgcloud.eingang.xta; - -import java.io.File; -import java.io.InputStream; -import java.math.BigInteger; -import java.nio.charset.StandardCharsets; - -import org.apache.commons.io.FileUtils; - -import lombok.SneakyThrows; - -class XtaFileTestFactory { - - static final String NAME = "Test_File"; - static final String CONTENT = "slkafj3jifsdasx"; - static final String ZIP_CONTENT_TYPE = "application/zip"; - - static XtaFile create() { - return createBuilder().build(); - } - - static XtaFile.XtaFileBuilder createBuilder() { - return XtaFile.builder() - .name(NAME) - .contentType(ZIP_CONTENT_TYPE) - .file(createFile()); - } - - @SneakyThrows - private static File createFile() { - File tFile = File.createTempFile("test", ".zip"); - tFile.deleteOnExit(); - - FileUtils.write(tFile, CONTENT, StandardCharsets.UTF_8); - - return tFile; - } - - @SneakyThrows - static XtaFile withFileContent(InputStream stream, String fileName) { - File tFile = File.createTempFile(fileName, ".zip"); - tFile.deleteOnExit(); - - FileUtils.copyInputStreamToFile(stream, tFile); - return createBuilder().name(fileName).size(BigInteger.valueOf(tFile.length())).file(tFile).build(); - } -} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaITCase.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaITCase.java deleted file mode 100644 index 8ab2ef07..00000000 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaITCase.java +++ /dev/null @@ -1,327 +0,0 @@ -package de.ozgcloud.eingang.xta; - -import static org.assertj.core.api.Assertions.*; -import static org.mockito.ArgumentMatchers.*; -import static org.mockito.Mockito.*; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; -import java.util.List; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.ValueSource; -import org.mockito.ArgumentCaptor; -import org.mockito.Captor; -import org.mockito.Mock; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.boot.test.mock.mockito.SpyBean; -import org.springframework.context.annotation.Bean; -import org.springframework.test.context.ActiveProfiles; - -import de.ozgcloud.eingang.Application; -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.router.ManagableStub; -import de.ozgcloud.eingang.router.VorgangManagerServerResolver; -import de.ozgcloud.eingang.router.VorgangRemoteService; -import de.ozgcloud.vorgang.grpc.binaryFile.BinaryFileServiceGrpc.BinaryFileServiceStub; -import de.ozgcloud.vorgang.vorgang.GrpcEingang; -import de.ozgcloud.vorgang.vorgang.VorgangServiceGrpc.VorgangServiceBlockingStub; -import io.grpc.Channel; - -@SpringBootTest(classes = { - Application.class, - XtaITCase.ActivateXTARunnerConfig.class -}) -@ActiveProfiles({ "itcase" }) -class XtaITCase { - - @SpyBean - private VorgangRemoteService vorgangRemoteService; - @MockBean - private VorgangManagerServerResolver resolver; - - @Mock - private ManagableStub<VorgangServiceBlockingStub> vorgangManageableServiceStub; - @Mock - private VorgangServiceBlockingStub vorgangServiceStub; - @Mock - private ManagableStub<BinaryFileServiceStub> binaryFileManageableServiceStub; - @Mock - private BinaryFileServiceStub binaryFileServiceStub; - - @Mock - private Channel channel; - - @MockBean - private XtaRemoteService xtaRemoteService; - - @Captor - private ArgumentCaptor<FormData> formDataArgumentCaptor; - - @Captor - private ArgumentCaptor<GrpcEingang> eingangArgumentCaptor; - - @Autowired - private XtaRunner runner; - - @BeforeEach - void initTest() { - when(resolver.resolveVorgangServiceBlockingStubByOrganisationseinheitenId(any())).thenReturn(vorgangManageableServiceStub); - when(vorgangManageableServiceStub.get()).thenReturn(vorgangServiceStub); - when(vorgangServiceStub.getChannel()).thenReturn(channel); - when(channel.authority()).thenReturn("authorityDummy"); - - when(resolver.resolveBinaryFileServiceStubByOrganisationsEinheitId(any())).thenReturn(binaryFileManageableServiceStub); - when(binaryFileManageableServiceStub.get()).thenReturn(binaryFileServiceStub); - } - - @DisplayName("run get xta messages") - @Nested - class TestRunGetXtaMessages { - @BeforeEach - void setup() { - doReturn("vorgangId(unused)").when(vorgangRemoteService).createVorgang(any(), any(), any(), any()); - } - - @DisplayName("should have three representations with pdf") - @TestZipFileNamesWithPdf - void shouldHaveThreeRepresentationsWithPdf(String zipFileName) { - mockNachrichtenBroker(zipFileName); - - runner.runGetXtaMessages(); - - var eingang = captureEingang(); - assertThat(eingang.getNumberOfRepresentations()).isEqualTo(3); - } - - @DisplayName("should send two representations without pdf") - @TestZipFileNamesWithoutPdf - void shouldSendTwoXMLRepresentationsWithoutPdf(String zipFileName) { - mockNachrichtenBroker(zipFileName); - - runner.runGetXtaMessages(); - - var eingang = captureEingang(); - assertThat(eingang.getNumberOfRepresentations()).isEqualTo(2); - } - - @DisplayName("should have no attachments") - @TestZipFileNamesWithoutAnlage - void shouldHaveNoAttachments(String zipFileName) { - mockNachrichtenBroker(zipFileName); - - runner.runGetXtaMessages(); - - var eingang = captureEingang(); - assertThat(eingang.getNumberOfAttachments()).isZero(); - } - - @DisplayName("should have one attachment") - @TestZipFileNamesWithAnlage - void shouldHaveOneAttachment(String zipFileName) { - mockNachrichtenBroker(zipFileName); - - runner.runGetXtaMessages(); - - var eingang = captureEingang(); - assertThat(eingang.getNumberOfAttachments()).isEqualTo(1); - } - - @DisplayName("should have postfach id") - @TestZipFileNamesWithServiceKonto - void shouldHavePostfachId(String zipFileName) { - mockNachrichtenBroker(zipFileName); - - runner.runGetXtaMessages(); - - var serviceKonto = captureEingang() - .getHeader() - .getServiceKonto(); - assertThat(serviceKonto).isNotNull(); - var postfachId = serviceKonto - .getPostfachAddresses(0) - .getIdentifier() - .getProperty(0) - .getValue(0); - assertThat(postfachId).isEqualTo("4dd01647-b9d9-4775-1b50-08da3d83800a"); - } - - @DisplayName("should have organistationseinheit ID") - @TestZipFileNames - void shouldHaveOrganistationseinheitId(String zipFileName) { - mockNachrichtenBroker(zipFileName); - - runner.runGetXtaMessages(); - - var organisationseinheitenId = captureEingang() - .getZustaendigeStelle() - .getOrganisationseinheitenId(); - assertThat(organisationseinheitenId).isEqualTo("9795669"); - } - - @DisplayName("should have generated vorgang nummer for dFoerdermittel") - @Test - void shouldHaveVorgangsnummer() { - mockNachrichtenBroker("dfoerdermittel_with_anlage.zip"); - - runner.runGetXtaMessages(); - - var vorgangsNummer = captureEingang() - .getHeader() - .getVorgangNummer(); - assertThat(vorgangsNummer).hasSameSizeAs("4627-TY3X"); - } - - @DisplayName("should have vorgang nummer for AFM") - @TestZipFileNamesFromAFM - void shouldHaveVorgangsnummerForAfm(String zipFileName) { - mockNachrichtenBroker(zipFileName); - - runner.runGetXtaMessages(); - - var vorgangsNummer = captureEingang() - .getHeader() - .getVorgangNummer(); - assertThat(vorgangsNummer).hasSameSizeAs("20240404370530710707"); - } - - @DisplayName("should use xta vorgangsnummer for FIM") - @Test - void shouldUseVorgangsnummerForFIM() { - mockNachrichtenBroker("versammlungsanzeige.xml"); - - runner.runGetXtaMessages(); - - var vorgangNummer = captureEingang().getHeader().getVorgangNummer(); - assertThat(vorgangNummer).hasSize(9); - } - - @DisplayName("should have one attachment for FIM") - @Test - void shouldHaveOneRepresentationForFim() { - mockNachrichtenBroker("versammlungsanzeige.xml"); - - runner.runGetXtaMessages(); - - var eingang = captureEingang(); - assertThat(eingang.getNumberOfRepresentations()).isEqualTo(1); - } - - private GrpcEingang captureEingang() { - verify(vorgangRemoteService, times(1)) - .createVorgang( - formDataArgumentCaptor.capture(), - eingangArgumentCaptor.capture(), any(), any()); - - assertThat(formDataArgumentCaptor.getValue()).isNotNull(); - - return eingangArgumentCaptor.getValue(); - } - } - - private void mockNachrichtenBroker(String zipFileName) { - when(xtaRemoteService.getMessage(any(XtaMessageId.class))).thenReturn( - XtaResponseTestFactory.createGetMessageResponse(zipFileName)); - when(xtaRemoteService.getMessagesMetadata()) - .thenReturn(XtaResponseTestFactory.createGetStatusListResponse(List.of(zipFileName))); - when(xtaRemoteService.getNextMessagesMetadata(any())) - .thenReturn(XtaResponseTestFactory.createEmptyGetStatusListResponse()); - } - - @Target({ ElementType.METHOD }) - @Retention(RetentionPolicy.RUNTIME) - @ParameterizedTest - @ValueSource(strings = { - "dfoerdermittel_without_anlage.zip", - "brauchtumsfeuer_without_anlage.zip", - "mantelantrag_without_anlage.zip" - }) - @interface TestZipFileNamesWithoutAnlage { - } - - @Target({ ElementType.METHOD }) - @Retention(RetentionPolicy.RUNTIME) - @ParameterizedTest - @ValueSource(strings = { - "dfoerdermittel_with_anlage.zip", - "brauchtumsfeuer_with_anlage.zip", - "mantelantrag_with_anlage.zip" - }) - @interface TestZipFileNamesWithAnlage { - } - - @Target({ ElementType.METHOD }) - @Retention(RetentionPolicy.RUNTIME) - @ParameterizedTest - @ValueSource(strings = { - "dfoerdermittel_without_anlage.zip", - "mantelantrag_without_anlage.zip", - "brauchtumsfeuer_without_anlage.zip", - "dfoerdermittel_with_anlage.zip", - "mantelantrag_with_anlage.zip", - "brauchtumsfeuer_with_anlage.zip", - }) - @interface TestZipFileNamesWithPdf { - } - - @Target({ ElementType.METHOD }) - @Retention(RetentionPolicy.RUNTIME) - @ParameterizedTest - @ValueSource(strings = { - "waffenschein.zip" - }) - @interface TestZipFileNamesWithoutPdf { - } - - @Target({ ElementType.METHOD }) - @Retention(RetentionPolicy.RUNTIME) - @ParameterizedTest - @ValueSource(strings = { - "mantelantrag_without_anlage.zip", - "brauchtumsfeuer_without_anlage.zip", - "mantelantrag_with_anlage.zip", - "brauchtumsfeuer_with_anlage.zip", - }) - @interface TestZipFileNamesFromAFM { - } - - @Target({ ElementType.METHOD }) - @Retention(RetentionPolicy.RUNTIME) - @ParameterizedTest - @ValueSource(strings = { - "dfoerdermittel_without_anlage.zip", - "dfoerdermittel_with_anlage.zip", - }) - @interface TestZipFileNamesWithServiceKonto { - } - - @Target({ ElementType.METHOD }) - @Retention(RetentionPolicy.RUNTIME) - @ParameterizedTest - @ValueSource(strings = { - "dfoerdermittel_without_anlage.zip", - "mantelantrag_without_anlage.zip", - "brauchtumsfeuer_without_anlage.zip", - "dfoerdermittel_with_anlage.zip", - "mantelantrag_with_anlage.zip", - "brauchtumsfeuer_with_anlage.zip", - "waffenschein.zip" - }) - @interface TestZipFileNames { - } - - static class ActivateXTARunnerConfig { - @Bean - XtaRunner xtaRunner() { - return new XtaRunner(); - } - } -} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaIncomingFilesMapperTest.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaIncomingFilesMapperTest.java deleted file mode 100644 index 8adbed45..00000000 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaIncomingFilesMapperTest.java +++ /dev/null @@ -1,139 +0,0 @@ -/* - * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch das - * Ministerium für Energiewende, Klimaschutz, Umwelt und Natur - * Zentrales IT-Management - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ - -package de.ozgcloud.eingang.xta; - -import static org.assertj.core.api.Assertions.*; -import static org.mockito.Mockito.*; - -import java.util.List; -import java.util.stream.Stream; - -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.Spy; - -import de.ozgcloud.eingang.common.formdata.IncomingFile; -import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory; -import de.ozgcloud.eingang.xta.zip.ZipFileExtractor; - -class XtaIncomingFilesMapperTest { - @Spy - @InjectMocks - private XtaIncomingFilesMapper mapper; - - @Mock - private ZipFileExtractor extractor; - - @Nested - class TestToIncomingFiles { - - @Test - void shouldMapToIncomingFiles() { - var xtaFile = XtaFileTestFactory.create(); - var incomingFile = IncomingFileTestFactory.create(); - when(mapper.toIncomingFile(xtaFile)).thenReturn(incomingFile); - when(mapper.tryToExtractZip(incomingFile)).thenAnswer(x -> Stream.of(incomingFile)); - - mapper.toIncomingFiles(List.of(xtaFile, xtaFile)); - - inOrder(mapper).verify(mapper, calls(2)).toIncomingFile(xtaFile); - inOrder(mapper).verify(mapper, calls(2)).tryToExtractZip(incomingFile); - } - - @Test - void shouldHandleMissingMessageFile() { - var fileGroup = mapper.toIncomingFiles(null); - - assertThat(fileGroup).isEmpty(); - } - } - - @Nested - class ToIncomingFile { - @Test - void shouldHaveMessageFile() { - var inFile = mapper.toIncomingFile(XtaFileTestFactory.create()); - - assertThat(inFile.getContentStream()).isNotNull(); - } - - @Test - void shouldHaveFileName() { - var inFile = mapper.toIncomingFile(XtaFileTestFactory.create()); - - assertThat(inFile.getName()).isEqualTo(XtaFileTestFactory.NAME); - } - - @Test - void shouldHaveZipContentType() { - var inFile = mapper.toIncomingFile(XtaFileTestFactory.create()); - - assertThat(inFile.getContentType()).isEqualTo(XtaFileTestFactory.ZIP_CONTENT_TYPE); - } - - @Test - void shouldHaveSize() { - var inFile = mapper.toIncomingFile(XtaFileTestFactory.create()); - - assertThat(inFile.getSize()).isEqualTo(XtaFileTestFactory.CONTENT.length()); - } - } - - @Nested - class TestTryToExtractZip { - - @Mock - IncomingFile outFile1; - - @Mock - IncomingFile outFile2; - - private final IncomingFile zipFile = IncomingFileTestFactory.createBuilder() - .name("attachments.zip") - .build(); - - @Test - void shouldExtractZipFiles() { - var expectedExtractedFiles = List.of(outFile1, outFile2); - when(extractor.extractIncomingFilesSafely(zipFile)).thenReturn(expectedExtractedFiles); - - var extractedFiles = mapper.tryToExtractZip(zipFile).toList(); - - assertThat(extractedFiles).isEqualTo(expectedExtractedFiles); - } - - @Test - void shouldIgnoreNonZipFiles() { - when(extractor.extractIncomingFilesSafely(zipFile)).thenThrow(new RuntimeException()); - var incomingFile = IncomingFileTestFactory.create(); - - var extractedFiles = mapper.tryToExtractZip(incomingFile).toList(); - - assertThat(extractedFiles).containsExactly(incomingFile); - } - } - -} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMapperTest.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMapperTest.java deleted file mode 100644 index 23a2f984..00000000 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMapperTest.java +++ /dev/null @@ -1,125 +0,0 @@ -package de.ozgcloud.eingang.xta; - -import static de.ozgcloud.eingang.xta.XtaMessageMapper.*; -import static org.assertj.core.api.Assertions.*; -import static org.mockito.Mockito.*; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mapstruct.factory.Mappers; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.Spy; - -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.FormMetaDataTestFactory; -import de.ozgcloud.eingang.common.vorgang.VorgangNummerSupplier; - -class XtaMessageMapperTest { - - @Spy - @InjectMocks - private XtaMessageMapper mapper = Mappers.getMapper(XtaMessageMapper.class); - - @Mock - private VorgangNummerSupplier vorgangNummerSupplier; - - @Nested - class TestToFormData { - - private XtaMessageMetaData xtaMessageMetaData; - private RepresentationsAttachmentsPair representationsAttachmentsPair; - - @BeforeEach - void mock() { - xtaMessageMetaData = XtaMessageMetaDataTestFactory.create(); - representationsAttachmentsPair = RepresentationsAttachmentsPairTestFactory.create(); - when(vorgangNummerSupplier.get(VORGANG_NUMMER_SUFFIX_LENGTH)).thenReturn(FormHeaderTestFactory.VORGANGNUMMER); - } - - @Test - void shouldMapRepresentations() { - var formData = doMapping(); - - assertThat(formData.getRepresentations()).isEqualTo(representationsAttachmentsPair.representations()); - } - - @Test - void shouldSetNumberOfAttachments() { - var formData = doMapping(); - - assertThat(formData.getNumberOfAttachments()).isEqualTo(3); - } - - @Test - void shouldSetNumberOfRepresentations() { - var formData = doMapping(); - - assertThat(formData.getNumberOfRepresentations()).isEqualTo(2); - } - - @Test - void shouldMapAttachments() { - var formData = doMapping(); - - assertThat(formData.getAttachments()).isEqualTo(representationsAttachmentsPair.attachments()); - } - - @Test - void shouldMapVorgangNummer() { - var formData = doMapping(); - - assertThat(formData.getHeader().getVorgangNummer()).isEqualTo(FormHeaderTestFactory.VORGANGNUMMER); - } - - @Test - void shouldSetChannelXTA() { - var formData = doMapping(); - - assertThat(formData.getHeader().getChannel()).isEqualTo(FormHeaderTestFactory.CHANNEL); - } - - @Test - void shouldSetFormEngineName() { - var formData = doMapping(); - - assertThat(formData.getHeader().getFormEngineName()).isEqualTo(FormHeaderTestFactory.XDOMEA_FORM_ENGINE_NAME); - } - - @Test - void shouldSetDesinationId() { - var formData = doMapping(); - - assertThat(formData.getControl().getMetaData()).isPresent().get() - .extracting(metaData -> metaData.getEntry(XtaMessageMetaData.XTA_IDENTIFIER_ENTRY_NAME)) - .isEqualTo(FormMetaDataTestFactory.XTA_IDENTIFIER); - } - - private FormData doMapping() { - return mapper.toFormData(representationsAttachmentsPair, xtaMessageMetaData, vorgangNummerSupplier); - } - } - - @Nested - class TestToFimFormData { - - private XtaMessageMetaData xtaMessageMetaData; - private RepresentationsAttachmentsPair representationsAttachmentsPair; - - @BeforeEach - void mock() { - xtaMessageMetaData = XtaMessageMetaDataTestFactory.createFim(); - representationsAttachmentsPair = RepresentationsAttachmentsPairTestFactory.create(); - when(vorgangNummerSupplier.get(VORGANG_NUMMER_SUFFIX_LENGTH)).thenReturn(FormHeaderTestFactory.VORGANGNUMMER); - } - - @Test - void shouldSetFormEngineName() { - var formData = mapper.toFormData(representationsAttachmentsPair, xtaMessageMetaData, vorgangNummerSupplier); - - assertThat(formData.getHeader().getFormEngineName()).isEqualTo(FormHeaderTestFactory.FIM_FORM_ENGINE_NAME); - } - - } -} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetaDataMapperTest.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetaDataMapperTest.java deleted file mode 100644 index 1233e713..00000000 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetaDataMapperTest.java +++ /dev/null @@ -1,39 +0,0 @@ -package de.ozgcloud.eingang.xta; - -import static org.assertj.core.api.Assertions.*; - -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mapstruct.factory.Mappers; -import org.mockito.Spy; - -class XtaMessageMetaDataMapperTest { - - @Spy - private final XtaMessageMetaDataMapper mapper = Mappers.getMapper(XtaMessageMetaDataMapper.class); - - @DisplayName("msg status list from soap") - @Nested - class TestMsgStatusListFromSoap { - - @Test - void shouldMap() { - var response = MsgStatusListTypeAndHeaderResponseTestFactory.create(); - - var result = mapper.msgStatusListFromSoap(response); - - assertThat(result).isNotNull(); - } - - @DisplayName("should set moreMessagesAvailable to false") - @Test - void shouldSetMoreMessagesAvailableToFalse() { - var response = MsgStatusListTypeAndHeaderResponseTestFactory.create(); - - var result = mapper.msgStatusListFromSoap(response); - - assertThat(result.isMoreMessagesAvailable()).isFalse(); - } - } -} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetaDataTestFactory.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetaDataTestFactory.java deleted file mode 100644 index 5ee03139..00000000 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetaDataTestFactory.java +++ /dev/null @@ -1,39 +0,0 @@ -package de.ozgcloud.eingang.xta; - -import static de.ozgcloud.eingang.xta.XtaMessageTestFactory.*; - -import java.time.ZonedDateTime; - -import de.ozgcloud.eingang.common.formdata.FormMetaDataTestFactory; - -class XtaMessageMetaDataTestFactory { - - static final String MESSAGE_TYPE = "Geschaeftsgang.Geschaeftsgang.0201"; - static final String FIM_MESSAGE_TYPE = "fim.S17000652.17000652001004"; - static final ZonedDateTime ORIGIN = ZonedDateTime.parse("2022-10-29T15:45:52.4942149+02:00"); - static final String SERVICE = "urn:fim:Versammlungsanzeige:1.4"; - static final String MESSAGE_TYPE_LIST_VERSION = "1.0"; - - static XtaMessageMetaData create() { - return createBuilder().build(); - } - - static XtaMessageMetaData.XtaMessageMetaDataBuilder createBuilder() { - return XtaMessageMetaData.builder() - .messageId(MESSAGE_ID) - .messageType(MESSAGE_TYPE) - .messageTypeListVersion(MESSAGE_TYPE_LIST_VERSION) - .origin(ORIGIN) - .xtaIdentifier(FormMetaDataTestFactory.XTA_IDENTIFIER) - .service(SERVICE); - } - - static XtaMessageMetaData createFim() { - return createFimBuilder().build(); - } - - static XtaMessageMetaData.XtaMessageMetaDataBuilder createFimBuilder() { - return createBuilder() - .messageType(FIM_MESSAGE_TYPE); - } -} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetaDatasAndHeaderTestFactory.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetaDatasAndHeaderTestFactory.java deleted file mode 100644 index df3f26ef..00000000 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetaDatasAndHeaderTestFactory.java +++ /dev/null @@ -1,21 +0,0 @@ -package de.ozgcloud.eingang.xta; - -import java.util.UUID; -import java.util.stream.Stream; - -class XtaMessageMetaDatasAndHeaderTestFactory { - - public static final String MSG_BOX_REQUEST_ID = UUID.randomUUID().toString(); - - public static final XtaMessageMetaData MESSAGE1 = XtaMessageMetaDataTestFactory.create(); - - public static XtaMessageMetaDatasAndHeader create() { - return createBuilder().build(); - } - - public static XtaMessageMetaDatasAndHeader.XtaMessageMetaDatasAndHeaderBuilder createBuilder() { - return XtaMessageMetaDatasAndHeader.builder() - .msgBoxRequestID(MSG_BOX_REQUEST_ID) - .messages(Stream.of(MESSAGE1)); - } -} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetadataRemoteIteratorTest.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetadataRemoteIteratorTest.java deleted file mode 100644 index 3afc5fb5..00000000 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetadataRemoteIteratorTest.java +++ /dev/null @@ -1,120 +0,0 @@ -package de.ozgcloud.eingang.xta; - -import static org.assertj.core.api.Assertions.*; -import static org.mockito.Mockito.*; - -import java.util.stream.Stream; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mockito.Mock; - -class XtaMessageMetadataRemoteIteratorTest { - - private XtaMessageMetaDatasAndHeader messageMetaDatasAndHeader = XtaMessageMetaDatasAndHeaderTestFactory.create(); - - @Mock - private XtaRemoteService remoteService; - - @BeforeEach - void setup() { - when(remoteService.getMessagesMetadata()).thenReturn(messageMetaDatasAndHeader); - } - - @Nested - class TestIteratorInitialization { - - @Test - void shouldCallGetMessagesMetadata() { - new XtaMessageMetadataRemoteIterator(remoteService); - - verify(remoteService).getMessagesMetadata(); - } - - @Test - void shouldCallRemoteMessageIterator() { - when(remoteService.getMessagesMetadata()).thenReturn(messageMetaDatasAndHeader); - - Object remoteIterator = spy(new XtaMessageMetadataRemoteIterator(remoteService)); - - assertThat(remoteIterator).extracting("remoteMessageIterator").isNotNull(); - } - } - - @Nested - class TestHasNext { - - @Test - void shouldReturnTrueAfterInitialization() { - var remoteIterator = new XtaMessageMetadataRemoteIterator(remoteService); - - assertThat(remoteIterator.hasNext()).isTrue(); - } - - @Test - void shouldReturnTrueWhenMoreMessagesAvailable() { - var messageMetadataAndHeader = XtaMessageMetaDatasAndHeaderTestFactory.createBuilder().moreMessagesAvailable(true).build(); - when(remoteService.getMessagesMetadata()).thenReturn(messageMetadataAndHeader); - - var remoteIterator = new XtaMessageMetadataRemoteIterator(remoteService); - - assertThat(remoteIterator.hasNext()).isTrue(); - } - - @Test - void shouldCallLoadNextMessages() { - initTest(); - var remoteIterator = spy(new XtaMessageMetadataRemoteIterator(remoteService)); - - remoteIterator.hasNext(); - - verify(remoteIterator).loadNextMessages(); - } - - private void initTest() { - var messageMetadataAndHeader = XtaMessageMetaDatasAndHeaderTestFactory.createBuilder() - .messages(Stream.empty()).moreMessagesAvailable(true).build(); - when(remoteService.getMessagesMetadata()).thenReturn(messageMetadataAndHeader); - var nextMessageMetadataAndHeader = XtaMessageMetaDatasAndHeaderTestFactory.createBuilder().msgBoxRequestID("id").build(); - when(remoteService.getNextMessagesMetadata(any())).thenReturn(nextMessageMetadataAndHeader); - } - - @Test - void shouldReturnFalseWhenNoMoreMessagesAvailable() { - var messageMetadataAndHeader = XtaMessageMetaDatasAndHeaderTestFactory.createBuilder().messages(Stream.empty()).build(); - when(remoteService.getMessagesMetadata()).thenReturn(messageMetadataAndHeader); - - var remoteIterator = new XtaMessageMetadataRemoteIterator(remoteService); - - assertThat(remoteIterator.hasNext()).isFalse(); - } - } - - @Nested - class TestLoadNextMessages { - - private XtaMessageMetaDatasAndHeader nextMessageMetadataAndHeader = XtaMessageMetaDatasAndHeaderTestFactory.createBuilder().msgBoxRequestID("id").build(); - - @BeforeEach - void setup() { - when(remoteService.getNextMessagesMetadata(any())).thenReturn(nextMessageMetadataAndHeader); - } - - @Test - void shouldCallGetMessages() { - new XtaMessageMetadataRemoteIterator(remoteService).loadNextMessages(); - - verify(remoteService).getNextMessagesMetadata(messageMetaDatasAndHeader.getMsgBoxRequestID()); - } - - @Test - void shouldCallGetRemoteMessageIterator() { - var remoteIterator = spy(new XtaMessageMetadataRemoteIterator(remoteService)); - - remoteIterator.loadNextMessages(); - - verify(remoteIterator).getRemoteMessageIterator(nextMessageMetadataAndHeader); - } - } -} \ No newline at end of file diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageTestFactory.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageTestFactory.java deleted file mode 100644 index 1a1397db..00000000 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageTestFactory.java +++ /dev/null @@ -1,21 +0,0 @@ -package de.ozgcloud.eingang.xta; - -class XtaMessageTestFactory { - - static final XtaMessageId MESSAGE_ID = XtaMessageId.from("urn:de:xta:messageid:dataport_xta_210:81e40808-91c6-4765-aaf4-1aa62fec8be9"); - - static final XtaFile attachment = XtaFileTestFactory.create(); - static final String PRIMARY_FORM_DATA_MESSAGE = XtaFileTestFactory.NAME; - - static XtaMessage create() { - return createBuilder().build(); - } - - static XtaMessage.XtaMessageBuilder createBuilder() { - return XtaMessage.builder() - .metaData(XtaMessageMetaDataTestFactory.create()) - .messageFile(XtaFileTestFactory.create()) - .primaryFormDataMessage(XtaFileTestFactory.NAME) - .attachment(attachment); - } -} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaPropertiesTestFactory.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaPropertiesTestFactory.java deleted file mode 100644 index da24d333..00000000 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaPropertiesTestFactory.java +++ /dev/null @@ -1,29 +0,0 @@ -package de.ozgcloud.eingang.xta; - -import java.net.URI; - -import lombok.SneakyThrows; - -class XtaPropertiesTestFactory { - - private static final String SERVER_PROTOCOL = "https"; - private static final String SERVER_ADDRESS = "xta-adapter-port-forward-service.ssh-port-forward.svc.cluster.local"; - - @SneakyThrows - static XtaProperties create() { - XtaProperties properties = new XtaProperties(); - - Actions actions = new Actions(); - properties.setActions(actions); - actions.setFetchRequest(new URI("http://tempuri.local/fetch")); - actions.setStatusList(new URI("http://tempuri.lcoal/statusList")); - - Server server = new Server(); - properties.setServer(server); - server.setProtocol(SERVER_PROTOCOL); - server.setAddress(SERVER_ADDRESS); - - return properties; - - } -} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRemoteServiceConfigurationTest.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRemoteServiceConfigurationTest.java deleted file mode 100644 index 59d354ec..00000000 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRemoteServiceConfigurationTest.java +++ /dev/null @@ -1,22 +0,0 @@ -package de.ozgcloud.eingang.xta; - -import static org.assertj.core.api.Assertions.*; - -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Spy; - -class XtaRemoteServiceConfigurationTest { - - @Spy - @InjectMocks - XtaRemoteServiceConfiguration configuration; - - @Test - void testBuildServerAddressUri() { - - String serverUrl = configuration.buildServerAddressUri(XtaPropertiesTestFactory.create().getServer()); - - assertThat(serverUrl).isEqualTo("https://xta-adapter-port-forward-service.ssh-port-forward.svc.cluster.local/MB_XTA-WS/XTA210msgBoxPort.svc"); - } -} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRemoteServiceFunctionalCase.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRemoteServiceFunctionalCase.java deleted file mode 100644 index 58b909b6..00000000 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRemoteServiceFunctionalCase.java +++ /dev/null @@ -1,71 +0,0 @@ -package de.ozgcloud.eingang.xta; - -import static org.assertj.core.api.Assertions.*; - -import jakarta.validation.Valid; - -import org.junit.jupiter.api.Disabled; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.ActiveProfiles; - -import de.ozgcloud.eingang.Application; - -@Disabled("real live test - do only activate for manual testing") -@ActiveProfiles({ "itcase", "local" }) -@SpringBootTest(classes = Application.class, // - properties = { "ozgcloud.xta.server.name=LI33-0005", - "ozgcloud.xta.server.address=LI33-0005:3000", - "ozgcloud.xta.server.protocol=https", - "ozgcloud.xta.keystore.file=file:./KOP_SH_KIEL_DEV.p12", - "ozgcloud.xta.keystore.password=<geheim>" // replace this with real password - }) -class XtaRemoteServiceITCase { - - @Autowired - private XtaRemoteService remoteService; - @Autowired - @Valid - private XtaProperties xtaProperties; - - @Nested - class TestProperties { - @Test - void shouldHaveStatusListAction() { - assertThat(xtaProperties.getActions().getStatusList()).isNotNull(); - } - } - - @Nested - class TestGetStatusList { - - @Test - void shouldSendRequest() { - - var result = remoteService.getStatusList(); - - assertThat(result).isNotNull(); - - } - } - - @Nested - class TestGetMessage { - @Test - void shouldSendRequest() { - var result = remoteService.loadContentContainer("urn:de:xta:messageid:dataport_xta_210:20eb297a-e224-45a0-9376-5ebd4d9bcc9a"); - - assertThat(result).isNotNull(); - } - } - - @Nested - class TestClose { - @Test - void shouldThrowNoException() { - assertThatNoException().isThrownBy(() -> remoteService.close(XtaMessageTestFactory.MESSAGE_ID)); - } - } -} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRemoteServiceTest.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRemoteServiceTest.java deleted file mode 100644 index 3077811a..00000000 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRemoteServiceTest.java +++ /dev/null @@ -1,146 +0,0 @@ -package de.ozgcloud.eingang.xta; - -import static org.assertj.core.api.Assertions.*; -import static org.mockito.ArgumentMatchers.*; -import static org.mockito.Mockito.*; - -import java.util.stream.Stream; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.Mockito; -import org.mockito.Spy; -import org.springframework.boot.webservices.client.WebServiceTemplateBuilder; - -import de.xoev.transport.xta._211.GenericContentContainer; - -class XtaRemoteServiceTest { - - @Spy - @InjectMocks - private XtaRemoteService service; - - @Mock - private WebServiceTemplateBuilder templateBuilder; - @Mock - private XtaMessageMetaDataMapper mapper; - @Spy - private XtaProperties properties = XtaPropertiesTestFactory.create(); - - @Nested - class TestGetMessagesMetadata { - - @BeforeEach - void init() { - doReturn(MsgStatusListTypeAndHeaderResponseTestFactory.create()).when(service).getStatusList(); - when(mapper.msgStatusListFromSoap(any(MsgStatusListTypeAndHeaderResponse.class))) - .thenReturn(XtaMessageMetaDatasAndHeaderTestFactory.create()); - } - - @Test - void shouldCallGetStatusList() { - service.getMessagesMetadata().getMessages().toList(); - - verify(service).getStatusList(); - } - - @Test - void shouldCallMapper() { - service.getMessagesMetadata(); - - verify(mapper).msgStatusListFromSoap(notNull()); - } - - @Test - void shouldReturnMessageId() { - var metaData = service.getMessagesMetadata().getMessages().toList(); - - assertThat(metaData).hasSize(1).first().usingRecursiveComparison().isEqualTo(XtaMessageMetaDataTestFactory.create()); - } - } - - @Nested - class TestGetNextMessagesMetadata { - - @BeforeEach - void init() { - doReturn(MsgStatusListTypeAndHeaderResponseTestFactory.create()).when(service).getStatusList(); - when(mapper.msgStatusListFromSoap(any(MsgStatusListTypeAndHeaderResponse.class))) - .thenReturn(XtaMessageMetaDatasAndHeaderTestFactory.create()); - } - - @Test - void shouldCallGetNextStatusList() { - service.getMessagesMetadata().getMessages().toList(); - - verify(service).getStatusList(); - } - - @Test - void shouldCallMapper() { - service.getMessagesMetadata(); - - verify(mapper).msgStatusListFromSoap(notNull()); - } - - @Test - void shouldReturnMessageId() { - var metaData = service.getMessagesMetadata().getMessages().toList(); - - assertThat(metaData).hasSize(1).first().usingRecursiveComparison().isEqualTo(XtaMessageMetaDataTestFactory.create()); - } - } - - @Nested - class TestGetMessage { - - private XtaFile file = XtaFileTestFactory.create(); - @Mock - private GenericContentContainer contentContainerMock; - - @BeforeEach - void init() { - doReturn(file).when(service).getMessage(Mockito.<GenericContentContainer>any()); - doReturn(contentContainerMock).when(service).loadContentContainer(anyString()); - doReturn(Stream.of(file)).when(service).getAttachments(any()); - } - - @Test - void shouldCallLoadContentContainer() { - service.getMessage(XtaMessageTestFactory.MESSAGE_ID); - - verify(service).loadContentContainer(XtaMessageTestFactory.MESSAGE_ID.toString()); - } - - @Test - void shouldCallGetMessage() { - service.getMessage(XtaMessageTestFactory.MESSAGE_ID); - - verify(service).getMessage(contentContainerMock); - } - - @Test - void sohludCallGetAttachments() { - service.getMessage(XtaMessageTestFactory.MESSAGE_ID); - - verify(service).getAttachments(contentContainerMock); - } - - @Test - void shouldReturnMessageWithoutMetaData() { - var message = service.getMessage(XtaMessageTestFactory.MESSAGE_ID); - - assertThat(message.getMetaData()).isNull(); - } - - @Test - void shouldReturnMessageWithFile() { - var message = service.getMessage(XtaMessageTestFactory.MESSAGE_ID); - - assertThat(message.getMessageFiles()).hasSize(1).contains(file); - } - } -} \ No newline at end of file diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaResponseTestFactory.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaResponseTestFactory.java deleted file mode 100644 index 4e6fed5d..00000000 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaResponseTestFactory.java +++ /dev/null @@ -1,140 +0,0 @@ -package de.ozgcloud.eingang.xta; - -import static de.ozgcloud.eingang.xta.zip.TestZipFileFactory.*; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.InputStream; -import java.math.BigInteger; -import java.nio.charset.StandardCharsets; -import java.time.ZonedDateTime; -import java.util.Arrays; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.UUID; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -import org.apache.commons.codec.Resources; -import org.apache.commons.io.IOUtils; - -import de.ozgcloud.common.binaryfile.TempFileUtils; - -public class XtaResponseTestFactory { - - public static final Map<String, String> MESSAGE_TYPE_BY_ATTACHMENT_FILENAME = Map.of( - "mantelantrag_without_anlage.zip", "Geschaeftsgang.Geschaeftsgang.0201", - "dfoerdermittel_without_anlage.zip", "Geschaeftsgang.Geschaeftsgang.0201", - "brauchtumsfeuer_without_anlage.zip", "Geschaeftsgang.Geschaeftsgang.0201", - "versammlungsanzeige.xml", "fim.S17000652.17000652001004", - "mantelantrag_with_anlage.zip", "Geschaeftsgang.Geschaeftsgang.0201", - "dfoerdermittel_with_anlage.zip", "Geschaeftsgang.Geschaeftsgang.0201", - "brauchtumsfeuer_with_anlage.zip", "Geschaeftsgang.Geschaeftsgang.0201", - "waffenschein.zip", "Geschaeftsgang.Geschaeftsgang.0201" - ); - - private static final Map<String, String> MESSAGE_ID_BY_ATTACHMENT_FILENAME = MESSAGE_TYPE_BY_ATTACHMENT_FILENAME - .keySet().stream() - .collect(Collectors.toMap(name -> name, name -> generateMessageID())); - - private static String generateMessageID() { - return "urn:de:xta:messageid:dataport_xta_210:%s".formatted(UUID.randomUUID().toString()); - } - - public static XtaMessageMetaDatasAndHeader createEmptyGetStatusListResponse() { - return XtaMessageMetaDatasAndHeader.builder() - .msgBoxRequestID("testid-empty") - .moreMessagesAvailable(false) - .messages(Stream.empty()) - .build(); - } - - public static XtaMessageMetaDatasAndHeader createGetStatusListResponse(List<String> xtaAttachmentFileNames) { - var messageMetaDataItems = xtaAttachmentFileNames.stream() - .map(name -> - XtaMessageMetaData.builder() - .messageId(new XtaMessageId(MESSAGE_ID_BY_ATTACHMENT_FILENAME.get(name))) - .messageType(MESSAGE_TYPE_BY_ATTACHMENT_FILENAME.get(name)) - .origin(ZonedDateTime.now()) - .delivery(ZonedDateTime.now()) - .build() - ) - .toList(); - - return XtaMessageMetaDatasAndHeader.builder() - .msgBoxRequestID("testid-withattachment") - .moreMessagesAvailable(true) - .messages(messageMetaDataItems.stream()) - .build(); - } - - public static XtaMessage createGetMessageResponse(String xtaAttachmentFileName) { - File file; - try (var inputStream = getAttachmentInputStream(xtaAttachmentFileName)) { - file = TempFileUtils.writeTmpFile(inputStream); - } catch (IOException e) { - throw new RuntimeException(e); - } - - return XtaMessage.builder() - .messageFile(XtaFile.builder() - .contentType("application/zip") - .name(xtaAttachmentFileName) - .size(BigInteger.valueOf(file.length())) - .file(file) - .build()) - .build(); - } - - private static InputStream getAttachmentInputStream(String xtaAttachmentFileName) { - var attachmentResourcePath = getAttachmentFilePath(xtaAttachmentFileName); - if (xtaAttachmentFileName.endsWith(".zip")) { - try { - return new FileInputStream( - createAttachmentZipFile( - attachmentResourcePath.replace(".zip", ""))); - } catch (FileNotFoundException e) { - throw new RuntimeException(e); - } - } else { - return Resources.getInputStream(attachmentResourcePath); - } - } - - private static File createAttachmentZipFile(String attachmentResourceDirectory) { - return createTempZipFile(listResourceFileNames(attachmentResourceDirectory) - .map(subName -> { - try { - return TestZipEntry.builder() - .name(subName) - .content(IOUtils.toByteArray(Resources.getInputStream(attachmentResourceDirectory + "/" + subName))) - .build(); - } catch (IOException e) { - throw new RuntimeException(e); - } - } - ).toList()); - } - - private static Stream<String> listResourceFileNames(String resourceDirectoryPath) { - try (var inputStream = Resources.getInputStream(resourceDirectoryPath)) { - return Arrays.stream(IOUtils.toString(inputStream, StandardCharsets.UTF_8).split("\n")); - } catch (IOException e) { - throw new RuntimeException(e); - } - } - - private static String getMessageType(String xtaAttachmentFileName) { - return Objects.requireNonNull( - MESSAGE_TYPE_BY_ATTACHMENT_FILENAME.get(xtaAttachmentFileName), - "Xta-message type for '%s' has to be configured!".formatted(xtaAttachmentFileName) - ); - } - - private static String getAttachmentFilePath(String xtaAttachmentFileName) { - return "mock-responses/getMessage/%s/%s".formatted(getMessageType(xtaAttachmentFileName), xtaAttachmentFileName); - } -} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRunnerTest.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRunnerTest.java deleted file mode 100644 index 08ab8ed4..00000000 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRunnerTest.java +++ /dev/null @@ -1,57 +0,0 @@ -package de.ozgcloud.eingang.xta; - -import static org.mockito.Mockito.*; - -import java.util.stream.Stream; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Mock; - -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.semantik.SemantikAdapter; - -class XtaRunnerTest { - - @InjectMocks - private XtaRunner scheduler; - - @Mock - private XtaService service; - @Mock - private SemantikAdapter semantikAdapter; - - @Nested - class TestRunGetXtaMessages { - - public static final FormData MESSAGE = FormDataTestFactory.create(); - - @BeforeEach - void init() { - when(service.getMessages()).thenReturn(Stream.of(MESSAGE)); - } - - @Test - void shouldCallXtaServiceGetNextMessages() { - scheduler.runGetXtaMessages(); - - verify(service).getMessages(); - } - - @Test - void shouldHandOverFormDataToSemantikAdapter() { - scheduler.runGetXtaMessages(); - - verify(semantikAdapter).processFormData(MESSAGE); - } - - @Test - void shouldAcknowledgeReceive() { - scheduler.runGetXtaMessages(); - - verify(service).acknowledgeReceive(XtaMessageTestFactory.MESSAGE_ID); - } - } -} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaServiceTest.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaServiceTest.java deleted file mode 100644 index effc877a..00000000 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaServiceTest.java +++ /dev/null @@ -1,471 +0,0 @@ -package de.ozgcloud.eingang.xta; - -import static de.ozgcloud.eingang.xta.XtaService.*; -import static org.assertj.core.api.Assertions.*; -import static org.mockito.ArgumentMatchers.*; -import static org.mockito.Mockito.*; - -import java.util.List; -import java.util.Optional; -import java.util.stream.Stream; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mockito.ArgumentCaptor; -import org.mockito.Captor; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.Spy; - -import de.ozgcloud.eingang.common.errorhandling.TechnicalException; -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.FormData.Representations; -import de.ozgcloud.eingang.common.formdata.FormDataControlTestFactory; -import de.ozgcloud.eingang.common.formdata.IncomingFile; -import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory; -import de.ozgcloud.eingang.common.vorgang.VorgangNummerSupplier; -import de.ozgcloud.eingang.xdomea.XdomeaMessageDataMapper; - -class XtaServiceTest { - - private static final String MESSAGE_TYPE_OTHER = "MESSAGE_TYPE_OTHER"; - - @Spy - @InjectMocks - private XtaService service; - - @Mock - private XtaRemoteService remoteService; - @Mock - private XtaMessageMapper mapper; - @Mock - private VorgangNummerSupplier vorgangNummerSupplier; - - @Mock - private XtaIncomingFilesMapper incomingFilesMapper; - - @Mock - private XdomeaMessageDataMapper xdomeaMessageDataMapper; - - @Mock - private XtaCurrentIdentifierService currentIdentifierService; - - @Mock - private FormData formData; - - @Mock - private FormData formData2; - - @Nested - class TestGetMessagesAsFormData { - - private final XtaMessageMetaData messageMetaData = XtaMessageMetaDataTestFactory.create(); - private final XtaMessage message = XtaMessageTestFactory.create(); - - @DisplayName("with one message") - @Nested - class TestWithOneMessage { - @BeforeEach - void setup() { - doReturn(Stream.of(messageMetaData)).when(service).createXtaMessageStream(); - } - - @Test - void shouldCallCreateStream() { - service.getMessages(); - - verify(service).createXtaMessageStream(); - } - - @Test - void shouldCallFilterByMessageType() { - setupMocks(); - - service.getMessages().toList(); - - verify(service).isSupportedMessageType(messageMetaData); - } - - @Test - void shouldCallGetFormDataIfNoRuntimeException() { - setupMocks(); - doReturn(true).when(service).isSupportedMessageType(messageMetaData); - - service.getMessages().toList(); - - verify(service).getFormData(messageMetaData); - } - - @Test - void shouldNotCallGetFormDataIfNoRuntimeException() { - doReturn(false).when(service).isSupportedMessageType(messageMetaData); - - service.getMessages().toList(); - - verify(service, never()).getFormDataIfNoRuntimeException(any()); - } - } - - @DisplayName("with multiple messages") - @Nested - class TestWithMultipleMessages { - private final XtaMessageMetaData messageMetaData2 = XtaMessageMetaDataTestFactory.createBuilder() - .messageId(XtaMessageId.from("messageId2")) - .build(); - private final XtaMessageMetaData messageMetaData3 = XtaMessageMetaDataTestFactory.createBuilder() - .messageId(XtaMessageId.from("messageId3")) - .build(); - - @BeforeEach - void setup() { - doReturn(Stream.of(messageMetaData, messageMetaData2, messageMetaData3)).when(service).createXtaMessageStream(); - } - - @DisplayName("should return stream of messages") - @Test - void shouldReturnStreamOfMessages() { - doReturn(true).when(service).isSupportedMessageType(messageMetaData); - doReturn(false).when(service).isSupportedMessageType(messageMetaData3); - doReturn(true).when(service).isSupportedMessageType(messageMetaData2); - doReturn(Optional.of(formData)).when(service).getFormDataIfNoRuntimeException(messageMetaData); - doReturn(Optional.of(formData2)).when(service).getFormDataIfNoRuntimeException(messageMetaData2); - - var result = service.getMessages().toList(); - - assertThat(result).containsExactly(formData, formData2); - } - } - - - private void setupMocks() { - var testFormData = FormDataTestFactory.create(); - when(mapper.toFormData(any(), any(), eq(vorgangNummerSupplier))).thenReturn(testFormData); - when(remoteService.getMessage(any(XtaMessageId.class))).thenReturn(message); - } - } - - @Nested - class TestIsSupportedMessageType { - - @Test - void shouldAcceptGeschaeftsgang() { - var geschaeftsgangMetaData = XtaMessageMetaDataTestFactory.create(); - - assertThat(service.isSupportedMessageType(geschaeftsgangMetaData)).isTrue(); - } - - @Test - void shouldAcceptFIM() { - var fimMetaData = XtaMessageMetaDataTestFactory.createBuilder() - .messageType(FIM_MESSAGE_TYPE_PREFIX + "34355") - .build(); - - assertThat(service.isSupportedMessageType(fimMetaData)).isTrue(); - } - - @Test - void shouldNotAcceptOtherMessageType() { - var metaDataDFoerder = XtaMessageMetaDataTestFactory.createBuilder().messageType(MESSAGE_TYPE_OTHER).build(); - - assertThat(service.isSupportedMessageType(metaDataDFoerder)).isFalse(); - } - } - - @DisplayName("get form data if no runtime exception") - @Nested - class TestGetFormDataIfNoRuntimeException { - - @Mock - XtaMessageMetaData messageMetaData; - - @Mock - FormData formData; - - @DisplayName("should call get formdata") - @Test - void shouldCallGetFormdata() { - service.getFormDataIfNoRuntimeException(messageMetaData); - - verify(service).getFormData(messageMetaData); - } - - @DisplayName("with exception") - @Nested - class TestWithException { - @DisplayName("should return empty") - @Test - void shouldReturnEmpty() { - doThrow(new RuntimeException("test-error")).when(service).getFormData(any()); - - var result = service.getFormDataIfNoRuntimeException(messageMetaData); - - assertThat(result).isEmpty(); - } - } - - @DisplayName("without exception") - @Nested - class TestWithoutException { - @DisplayName("should return") - @Test - void shouldReturn() { - doReturn(formData).when(service).getFormData(any()); - - var result = service.getFormDataIfNoRuntimeException(messageMetaData); - - assertThat(result).contains(formData); - } - } - } - - @Nested - class TestGetFormData { - - @Mock - private FormData formData; - - private XtaMessage message = XtaMessageTestFactory.create(); - private XtaMessageMetaData messageMetaData = XtaMessageMetaDataTestFactory.create(); - private RepresentationsAttachmentsPair classification; - private FormData mappedFormData = FormDataTestFactory.create(); - - @Captor - private ArgumentCaptor<XtaMessageMetaData> messageMetaDataCaptor; - - @Captor - private ArgumentCaptor<RepresentationsAttachmentsPair> classificationCaptor; - - @BeforeEach - void init() { - classification = RepresentationsAttachmentsPairTestFactory.create(); - var incomingFiles = List.of(IncomingFileTestFactory.create(), IncomingFileTestFactory.create()); - when(incomingFilesMapper.toIncomingFiles(message.getMessageFiles())).thenReturn(incomingFiles); - doReturn(classification).when(service).getRepresentationsAttachmentsPair(messageMetaData, incomingFiles); - } - - @BeforeEach - void mockMessageMapping() { - when(remoteService.getMessage(any(XtaMessageId.class))).thenReturn(message); - when(mapper.toFormData(any(), any(), any())).thenReturn(mappedFormData); - } - - @Test - void shouldCallRemoteService() { - service.getFormData(messageMetaData); - - verify(remoteService).getMessage(XtaMessageTestFactory.MESSAGE_ID); - } - - @Test - void shouldCallMapper() { - service.getFormData(messageMetaData); - - verify(mapper).toFormData(classification, messageMetaData, vorgangNummerSupplier); - } - - @Test - void shouldCallMapperToFormData() { - service.getFormData(messageMetaData); - - verify(mapper).toFormData(classificationCaptor.capture(), messageMetaDataCaptor.capture(), eq(vorgangNummerSupplier)); - assertThat(messageMetaDataCaptor.getValue()).isEqualTo(messageMetaData); - assertThat(classificationCaptor.getValue()).isEqualTo(classification); - } - - @Test - void shouldCallAddAttachments() { - service.getFormData(messageMetaData); - - verify(service).addAttachments(message, mappedFormData); - } - - @Test - void shouldReturnMappedResult() { - doReturn(mappedFormData).when(service).addRepresentations(any(), any()); - - var result = service.getFormData(messageMetaData); - - assertThat(result).isEqualTo(mappedFormData); - } - } - - @Nested - class TestAddAttachments { - - private final FormData inFormData = FormDataTestFactory.createBuilder().clearAttachments().numberOfAttachments(0).build(); - - @Test - void shouldAddAttachments() { - var result = service.addAttachments(XtaMessageTestFactory.create(), inFormData); - - assertThat(result.getAttachments()).hasSize(1); - assertThat(result.getNumberOfAttachments()).isEqualTo(1); - } - - @Test - void shouldWorkWithoutAnyAttachment() { - var result = service.addAttachments(XtaMessageTestFactory.createBuilder().clearAttachments().build(), inFormData); - - assertThat(result.getAttachments()).isEmpty(); - assertThat(result.getNumberOfAttachments()).isZero(); - } - } - - @DisplayName("get representations attachments pair") - @Nested - class TestGetRepresentationsAttachmentsPair { - - @Mock - private XtaMessageMetaData messageMetaData; - - @Mock - private RepresentationsAttachmentsPair classification; - - private List<IncomingFile> incomingFiles; - - @BeforeEach - void mock() { - incomingFiles = List.of(IncomingFileTestFactory.create(), IncomingFileTestFactory.create()); - } - - @DisplayName("should use correct mapper xdomea message type") - @Test - void shouldUseCorrectMapperXdomeaMessageType() { - when(messageMetaData.getMessageType()).thenReturn(XtaService.XDOMEA_0201_MESSAGE_TYPE); - when(xdomeaMessageDataMapper.mapIncomingFilesToRepresentationsAttachmentsPair(incomingFiles)) - .thenReturn(classification); - - var result = service.getRepresentationsAttachmentsPair(messageMetaData, incomingFiles); - - assertThat(result).isEqualTo(classification); - } - - @DisplayName("should use correct mapping for FIM message") - @Test - void shouldUseCorrectMappingForFimMessage() { - when(messageMetaData.getMessageType()).thenReturn(FIM_MESSAGE_TYPE_PREFIX + "836487"); - doReturn(classification).when(service).mapIncomingFilesToRepresentations(incomingFiles); - - var result = service.getRepresentationsAttachmentsPair(messageMetaData, incomingFiles); - - assertThat(result).isEqualTo(classification); - } - - @DisplayName("should throw exception for unexpected message type") - @Test - void shouldThrowExceptionForUnexpectedMessageType() { - when(messageMetaData.getMessageType()).thenReturn("unexpected"); - - assertThatThrownBy(() -> service.getRepresentationsAttachmentsPair(messageMetaData, incomingFiles)) - .isInstanceOf(TechnicalException.class); - } - } - - @DisplayName("map incoming files to representations") - @Nested - class TestMapIncomingFilesToRepresentations { - - private List<IncomingFile> incomingFiles; - - @BeforeEach - void mock() { - incomingFiles = List.of(IncomingFileTestFactory.create(), IncomingFileTestFactory.create()); - - } - - @DisplayName("should return representations with incoming files") - @Test - void shouldReturnRepresentationsWithIncomingFiles() { - var result = service.mapIncomingFilesToRepresentations(incomingFiles); - - assertThat(result.representations()).isEqualTo(incomingFiles); - } - - @DisplayName("should return attachments with empty list") - @Test - void shouldReturnAttachmentsWithEmptyList() { - var result = service.mapIncomingFilesToRepresentations(incomingFiles); - - assertThat(result.attachments()).isEmpty(); - } - } - - @Nested - class TestAcknowledgeReceive { - - @Test - void shouldCallRemoteService() { - service.acknowledgeReceive(XtaMessageTestFactory.MESSAGE_ID); - - verify(remoteService).close(XtaMessageTestFactory.MESSAGE_ID); - } - } - - @DisplayName("create XTA message stream") - @Nested - class TestCreateXtaMessageStream { - private static final List<String> XTA_IDENTIFIERS = List.of("XTA_IDENTIFIER", "XTA_IDENTIFIER2"); - - @Captor - private ArgumentCaptor<String> identifierCaptor; - - @BeforeEach - void mock() { - when(remoteService.getMessagesMetadata()) - .thenReturn(XtaMessageMetaDatasAndHeaderTestFactory.create()) - .thenReturn(XtaMessageMetaDatasAndHeaderTestFactory.create()); - when(currentIdentifierService.getIdentifiers()).thenReturn(XTA_IDENTIFIERS); - } - - @DisplayName("should return") - @Test - void shouldReturn() { - var result = service.createXtaMessageStream().toList(); - - assertThat(result).isEqualTo(getExpectedMessages()); - } - - private List<XtaMessageMetaData> getExpectedMessages() { - return Stream.concat( - XtaMessageMetaDatasAndHeaderTestFactory.create().getMessages(), - XtaMessageMetaDatasAndHeaderTestFactory.create().getMessages()).toList(); - } - - @DisplayName("should call set current identifier") - @Test - void shouldCallSetCurrentIdentifier() { - service.createXtaMessageStream().toList(); - - verify(currentIdentifierService, times(2)) - .setCurrentIdentifier(identifierCaptor.capture()); - assertThat(identifierCaptor.getAllValues()).isEqualTo(XTA_IDENTIFIERS); - } - } - - @Nested - class TestAddRepresentations { - @Test - void shouldAddPrimaryRepresentation() { - var result = service.addRepresentations(FormDataTestFactory.create(), XtaMessageTestFactory.create()); - - assertThat(result.getControl().getRepresentations()).isPresent().get() - .extracting(Representations::getPrimaryFormDataRepresentation).isEqualTo(XtaMessageTestFactory.PRIMARY_FORM_DATA_MESSAGE); - } - - @Test - void shouldRespectExistingRepresentation() { - var formData = FormDataTestFactory.createBuilder().control(FormDataControlTestFactory.createBuilder() - .representations(Optional.of( - Representations.builder().primaryFormDataPdfRepresentation("PDF_FILE").build())) - .build()).build(); - - var result = service.addRepresentations(formData, XtaMessageTestFactory.create()); - - var baseAssert = assertThat(result.getControl().getRepresentations()).isPresent().get(); - baseAssert.extracting(Representations::getPrimaryFormDataRepresentation).isEqualTo(XtaMessageTestFactory.PRIMARY_FORM_DATA_MESSAGE); - baseAssert.extracting(Representations::getPrimaryFormDataPdfRepresentation).isEqualTo("PDF_FILE"); - } - } -} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/zip/LimitedInputStreamTest.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/zip/LimitedInputStreamTest.java deleted file mode 100644 index b01c316d..00000000 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/zip/LimitedInputStreamTest.java +++ /dev/null @@ -1,141 +0,0 @@ -package de.ozgcloud.eingang.xta.zip; - -import static de.ozgcloud.eingang.xta.zip.LimitedInputStream.*; -import static org.assertj.core.api.Assertions.*; - -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.nio.charset.Charset; - -import org.apache.commons.io.IOUtils; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; - -import lombok.SneakyThrows; - -class LimitedInputStreamTest { - - private static final int READ_LIMIT = 10; - private static final String STRING_WITH_READ_LIMIT_LENGTH = "A".repeat(READ_LIMIT); - private static final String STRING_WITH_MORE_THAN_READ_LIMIT_LENGTH = "B".repeat(READ_LIMIT + 1); - - private LimitedInputStream limitedInputStream; - - private InputStream createStringInputSteam(String string) { - return new ByteArrayInputStream(string.getBytes()); - } - - @SneakyThrows - private String readInputStreamToString(InputStream inputStream) { - return IOUtils.toString(inputStream, Charset.defaultCharset()); - } - - @SneakyThrows - @DisplayName("should succeed if read limit is not exceeded") - @Test - void shouldSucceedIfReadLimitIsNotExceeded() { - limitedInputStream = new LimitedInputStream(createStringInputSteam(STRING_WITH_READ_LIMIT_LENGTH), READ_LIMIT); - - var outputString = readInputStreamToString(limitedInputStream); - - assertThat(outputString).isEqualTo(STRING_WITH_READ_LIMIT_LENGTH); - } - - @DisplayName("should fail if read limit is exceeded") - @Test - void shouldFailIfReadLimitIsExceeded() { - limitedInputStream = new LimitedInputStream(createStringInputSteam(STRING_WITH_MORE_THAN_READ_LIMIT_LENGTH), READ_LIMIT); - - assertThatThrownBy(() -> readInputStreamToString(limitedInputStream)) - .isInstanceOf(IOException.class) - .hasMessage(LIMITED_EXCEEDED_MESSAGE); - } - - @DisplayName("read") - @Nested - class TestRead { - - @SneakyThrows - @DisplayName("should return") - @Test - void shouldReturn() { - limitedInputStream = createLimitedInputStream(); - - var result = limitedInputStream.read(); - assertThat(result).isEqualTo(STRING_WITH_READ_LIMIT_LENGTH.getBytes()[0]); - } - - @SneakyThrows - @DisplayName("should advance bytesRead") - @Test - void shouldAdvanceBytesRead() { - limitedInputStream = createLimitedInputStream(); - limitedInputStream.bytesRead = READ_LIMIT - 1; - - limitedInputStream.read(); - assertThat(limitedInputStream.bytesRead).isEqualTo(READ_LIMIT); - } - - @DisplayName("should throw if exceeded") - @Test - void shouldThrowIfExceeded() { - limitedInputStream = createLimitedInputStreamWithExceeding(); - limitedInputStream.bytesRead = READ_LIMIT; - - assertThatThrownBy(() -> limitedInputStream.read()).isInstanceOf(IOException.class); - } - - } - - @DisplayName("read into buffer") - @Nested - class TestReadIntoBuffer { - private byte[] buffer; - - @BeforeEach - void mock() { - buffer = new byte[READ_LIMIT]; - } - - @SneakyThrows - @DisplayName("should return") - @Test - void shouldReturn() { - limitedInputStream = createLimitedInputStream(); - - var result = limitedInputStream.read(buffer); - - assertThat(result).isEqualTo(READ_LIMIT); - } - - @SneakyThrows - @DisplayName("should advance bytesRead") - @Test - void shouldAdvanceBytesRead() { - limitedInputStream = createLimitedInputStream(); - - limitedInputStream.read(buffer); - assertThat(limitedInputStream.bytesRead).isEqualTo(READ_LIMIT); - } - - @DisplayName("should throw if exceeded") - @Test - void shouldThrowIfExceeded() { - limitedInputStream = createLimitedInputStreamWithExceeding(); - limitedInputStream.bytesRead = 1; - - assertThatThrownBy(() -> limitedInputStream.read(buffer)).isInstanceOf(IOException.class); - } - } - - private LimitedInputStream createLimitedInputStream() { - return new LimitedInputStream(createStringInputSteam(STRING_WITH_READ_LIMIT_LENGTH), READ_LIMIT); - } - - private LimitedInputStream createLimitedInputStreamWithExceeding() { - return new LimitedInputStream(createStringInputSteam(STRING_WITH_MORE_THAN_READ_LIMIT_LENGTH), READ_LIMIT); - } -} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/zip/ReadableZipEntryTest.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/zip/ReadableZipEntryTest.java deleted file mode 100644 index e5bfea08..00000000 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/zip/ReadableZipEntryTest.java +++ /dev/null @@ -1,80 +0,0 @@ -package de.ozgcloud.eingang.xta.zip; - -import static org.assertj.core.api.Assertions.*; -import static org.mockito.Mockito.*; - -import java.io.InputStream; -import java.util.zip.ZipEntry; -import java.util.zip.ZipFile; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mockito.Mock; - -import de.ozgcloud.eingang.common.errorhandling.TechnicalException; -import lombok.SneakyThrows; - -class ReadableZipEntryTest { - - @Mock - ZipEntry zipEntry; - - @Mock - ZipFile zipFile; - - private ReadableZipEntry readableZipEntry; - - @BeforeEach - void mock() { - readableZipEntry = ReadableZipEntry.builder() - .zipEntry(zipEntry) - .parentZip(zipFile) - .build(); - - } - - @DisplayName("get input stream") - @Nested - class TestGetInputStream { - @Mock - private InputStream inputStream; - - @SneakyThrows - @DisplayName("should return input stream") - @Test - void shouldReturnInputStream() { - when(zipFile.getInputStream(zipEntry)).thenReturn(inputStream); - - var inputStreamResult = readableZipEntry.getInputStream(); - - assertThat(inputStreamResult).isEqualTo(inputStream); - } - } - - @DisplayName("get positive size") - @Nested - class TestGetPositiveSize { - @DisplayName("should return size") - @Test - void shouldReturnSize() { - var size = 123L; - when(zipEntry.getSize()).thenReturn(size); - - var sizeResult = readableZipEntry.getPositiveSize(); - - assertThat(sizeResult).isEqualTo(size); - } - - @DisplayName("should throw if size is negative") - @Test - void shouldThrowIfSizeIsNegative() { - var size = -1L; - when(zipEntry.getSize()).thenReturn(size); - - assertThatThrownBy(() -> readableZipEntry.getPositiveSize()).isInstanceOf(TechnicalException.class); - } - - } -} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/zip/TestZipFileFactory.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/zip/TestZipFileFactory.java deleted file mode 100644 index 8ac1b359..00000000 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/zip/TestZipFileFactory.java +++ /dev/null @@ -1,113 +0,0 @@ -package de.ozgcloud.eingang.xta.zip; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.util.List; -import java.util.zip.ZipEntry; -import java.util.zip.ZipOutputStream; - -import org.apache.commons.io.IOUtils; - -import de.ozgcloud.common.binaryfile.TempFileUtils; -import lombok.Builder; -import lombok.Getter; - -public class TestZipFileFactory { - - private static final String EXPANDED_ENTRY_NAME = "bomb.txt"; - - @Builder - @Getter - public static class TestZipEntry { - private String name; - private byte[] content; - } - - public static File createTempZipFile(List<TestZipEntry> testZipEntries) { - var file = TempFileUtils.createTmpFile().toFile(); - try (var zipOutputStream = new ZipOutputStream(new FileOutputStream(file))) { - for (TestZipEntry entry : testZipEntries) { - zipOutputStream.putNextEntry(new ZipEntry(entry.getName())); - zipOutputStream.write(entry.getContent()); - zipOutputStream.closeEntry(); - } - return file; - } catch (IOException e) { - throw new RuntimeException("Failed to create temporary zip file", e); - } - } - - public static File createTempZipBomb(int maxTotalSize) { - return overwriteFileWithZipEntrySize( - createTempZipWithSingleEntry(maxTotalSize * 2), - maxTotalSize - ); - } - - private static File createTempZipWithSingleEntry(int entrySize) { - var file = TempFileUtils.createTmpFile().toFile(); - try (var zipOutputStream = new ZipOutputStream(new FileOutputStream(file))) { - var entry = new ZipEntry(EXPANDED_ENTRY_NAME); - var content = "A".repeat(entrySize).getBytes(); - - zipOutputStream.putNextEntry(entry); - zipOutputStream.write(content); - zipOutputStream.closeEntry(); - - } catch (IOException e) { - throw new RuntimeException("Failed to create temporary zip file", e); - } - return file; - } - - private static File overwriteFileWithZipEntrySize(File file, int newSize) { - try { - var zipFileBytes = IOUtils.toByteArray(new FileInputStream(file)); - overwriteZipEntrySize(zipFileBytes, EXPANDED_ENTRY_NAME, newSize); - - // Write the adjusted ZIP content back to the file - try (var fos = new FileOutputStream(file)) { - fos.write(zipFileBytes); - } - } catch (IOException e) { - throw new RuntimeException("Failed to adjust size header of zip file", e); - } - return file; - } - - private static void overwriteZipEntrySize(byte[] zipFileBytes, String entryName, int newSize) throws IOException { - // Modify the uncompressed size entry size in the central directory structure (which is located at the end) - // Zip structure spec: https://www.iana.org/assignments/media-types/application/zip - var entryNameBytes = entryName.getBytes(); - - var lastIndexOfEntryName = findLastStartIndex(zipFileBytes, entryNameBytes); - if (lastIndexOfEntryName == -1) { - throw new IOException("ZIP entry not found: " + entryName); - } - var uncompressedSizeFieldStartOffset = lastIndexOfEntryName - (4 * 2 + 5 * 2 + 4); - writeIntToByteArray(newSize, zipFileBytes, uncompressedSizeFieldStartOffset); - } - - private static void writeIntToByteArray(int value, byte[] array, int offset) { - array[offset] = (byte) (value & 0xFF); - array[offset + 1] = (byte) ((value >> 8) & 0xFF); - array[offset + 2] = (byte) ((value >> 16) & 0xFF); - array[offset + 3] = (byte) ((value >> 24) & 0xFF); - } - - private static int findLastStartIndex(byte[] haystack, byte[] needle) { - var matchOffset = 0; - for (var i = haystack.length - 1; i >= needle.length; i--) { - if (haystack[i] == needle[needle.length - 1 - matchOffset]) { - if (++matchOffset == needle.length) { - return i; - } - } else { - matchOffset = 0; - } - } - return -1; - } -} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/zip/ZipFileExtractorTest.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/zip/ZipFileExtractorTest.java deleted file mode 100644 index d2383897..00000000 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/zip/ZipFileExtractorTest.java +++ /dev/null @@ -1,371 +0,0 @@ -package de.ozgcloud.eingang.xta.zip; - -import static de.ozgcloud.eingang.xta.zip.TestZipFileFactory.*; -import static de.ozgcloud.eingang.xta.zip.ZipFileExtractor.*; -import static org.assertj.core.api.Assertions.*; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.Mockito.*; - -import java.io.File; -import java.io.IOException; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.util.List; -import java.util.Map; -import java.util.stream.IntStream; -import java.util.zip.ZipEntry; - -import org.apache.commons.lang3.StringUtils; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.Spy; -import org.springframework.util.MimeTypeUtils; - -import de.ozgcloud.eingang.common.errorhandling.TechnicalException; -import de.ozgcloud.eingang.common.formdata.IncomingFile; -import lombok.SneakyThrows; - -class ZipFileExtractorTest { - - @Spy - @InjectMocks - private ZipFileExtractor extractor; - - @DisplayName("extract incoming files safely") - @Nested - class TestExtractIncomingFilesWithSizeLimit { - @Mock - IncomingFile incomingZipFile; - - @Mock - File zipFile; - - @Mock - IncomingFile outIncomingFile; - - List<IncomingFile> outIncomingFiles; - - @BeforeEach - void mock() { - outIncomingFiles = List.of(outIncomingFile); - - when(incomingZipFile.getFile()).thenReturn(zipFile); - doNothing().when(extractor).verifyLimits(zipFile); - - doReturn(outIncomingFiles).when(extractor).extractIncomingFiles(zipFile); - } - - @DisplayName("should call verify limits") - @Test - void shouldCallVerifySizeLimit() { - extractor.extractIncomingFilesSafely(incomingZipFile); - - verify(extractor).verifyLimits(zipFile); - } - - @DisplayName("should return") - @Test - void shouldReturn() { - var output = extractor.extractIncomingFilesSafely(incomingZipFile); - - assertThat(output).isEqualTo(outIncomingFiles); - } - } - - @DisplayName("verify limits") - @Nested - class TestVerifyLimits { - @Mock - File zipFile; - - @DisplayName("should return") - @Test - void shouldReturn() { - when(zipFile.length()).thenReturn((long) ZIP_MAX_TOTAL_SIZE / 2); - doReturn((long) ZIP_MAX_TOTAL_SIZE).when(extractor).sumUncompressedEntrySizes(zipFile); - - extractor.verifyLimits(zipFile); - } - - @DisplayName("should throw if size limit exceeded") - @Test - void shouldThrowIfSizeLimitExceeded() { - doReturn((long) ZIP_MAX_TOTAL_SIZE + 1).when(extractor).sumUncompressedEntrySizes(zipFile); - - assertThatThrownBy(() -> extractor.verifyLimits(zipFile)) - .isInstanceOf(TechnicalException.class); - } - - @DisplayName("should throw if ratio exceeded") - @Test - void shouldThrowIfRatioExceeded() { - when(zipFile.length()).thenReturn(1L); - doReturn((long) ZIP_MAX_THRESHOLD + 1).when(extractor).sumUncompressedEntrySizes(zipFile); - - assertThatThrownBy(() -> extractor.verifyLimits(zipFile)) - .isInstanceOf(TechnicalException.class); - } - } - - @DisplayName("extract incoming files") - @Nested - class TestExtractIncomingFiles { - - private File zipFile; - - @BeforeEach - void mock() { - zipFile = createTempZipFile(fromMap(Map.of( - "file1.pdf", "file content1", - "file2.xml", "<root></root>", - "file3.png", "" - ))); - } - - @DisplayName("should contain content") - @Test - void shouldContainContent() { - var extractedFiles = extractor.extractIncomingFiles(zipFile); - - var contents = extractedFiles.stream().map(f -> { - try { - return Files.readString(f.getFile().toPath()); - } catch (IOException e) { - throw new RuntimeException(e); - } - }).toList(); - assertThat(contents).containsExactlyInAnyOrder("file content1", "<root></root>", ""); - } - - @DisplayName("should have names") - @Test - void shouldHaveNames() { - var extractedFiles = extractor.extractIncomingFiles(zipFile); - - var names = extractedFiles.stream().map(IncomingFile::getName).toList(); - assertThat(names).containsExactlyInAnyOrder("file1.pdf", "file2.xml", "file3.png"); - } - - @DisplayName("should have content types") - @Test - void shouldHaveContentTypes() { - var extractedFiles = extractor.extractIncomingFiles(zipFile); - - var names = extractedFiles.stream().map(IncomingFile::getContentType).toList(); - assertThat(names).containsExactlyInAnyOrder("application/pdf", "application/xml", "image/png"); - } - - private List<TestZipEntry> fromMap(Map<String, String> entries) { - return entries.entrySet().stream().map(kv -> TestZipEntry.builder() - .name(kv.getKey()) - .content(kv.getValue().getBytes(StandardCharsets.UTF_8)) - .build()) - .toList(); - } - } - - @DisplayName("extract zip bomb") - @Nested - class TestExtractZipBomb { - private static final int SMALLER_MAX_ZIP_FILE_SIZE = 2 * 1024; - - @DisplayName("should throw with too many entries") - @Test - void shouldThrow() { - var zipFile = createIncomingFile(createTempZipFile(IntStream.range(0, ZIP_MAX_ENTRIES + 1).mapToObj(i -> TestZipEntry.builder() - .name("file%d.txt".formatted(i)) - .content(toBytes("A".repeat(2))) - .build() - ).toList())); - - assertThatThrownBy(() -> extractor.extractIncomingFilesSafely(zipFile)) - .isInstanceOf(TechnicalException.class); - } - - @SneakyThrows - @DisplayName("should throw with fake getSize") - @Test - void shouldThrowWithFakeGetSize() { - doReturn(SMALLER_MAX_ZIP_FILE_SIZE).when(extractor).getZipMaxTotalSize(); - var zipBomb = createIncomingFile(createTempZipBomb(SMALLER_MAX_ZIP_FILE_SIZE)); - - assertThatThrownBy(() -> extractor.extractIncomingFilesSafely(zipBomb)) - .isInstanceOf(TechnicalException.class) - .hasRootCauseMessage(LimitedInputStream.LIMITED_EXCEEDED_MESSAGE); - } - - @DisplayName("should throw with too large size") - @Test - void shouldThrowWithTooLargeSize() { - doReturn(SMALLER_MAX_ZIP_FILE_SIZE).when(extractor).getZipMaxTotalSize(); - var zipFile = createIncomingFile(createTempZipFile(List.of(TestZipEntry.builder() - .name("toolargefile.txt") - .content(toBytes("A".repeat(SMALLER_MAX_ZIP_FILE_SIZE + 1))) - .build() - ))); - - assertThatThrownBy(() -> extractor.extractIncomingFilesSafely(zipFile)) - .isInstanceOf(TechnicalException.class); - } - - private IncomingFile createIncomingFile(File file) { - return IncomingFile.builder() - .file(file) - .build(); - } - } - - @DisplayName("create incoming file") - @Nested - class TestCreateIncomingFile { - @Mock - File file; - - @Mock - ZipEntry zipEntry; - - private static final String NAME = "filename.name"; - private static final Long SIZE = 5L; - private static final String CONTENT_TYPE = "some/content"; - - @BeforeEach - void mock() { - when(zipEntry.getName()).thenReturn(NAME); - when(zipEntry.getSize()).thenReturn(SIZE); - doReturn(CONTENT_TYPE).when(extractor).getContentType(NAME); - } - - @DisplayName("should have name") - @Test - void shouldHaveName() { - var incomingFile = create(); - - assertThat(incomingFile.getName()).isEqualTo(NAME); - } - - @DisplayName("should have size") - @Test - void shouldHaveSize() { - var incomingFile = create(); - - assertThat(incomingFile.getSize()).isEqualTo(SIZE); - } - - @DisplayName("should have content type") - @Test - void shouldHaveContentType() { - var incomingFile = create(); - - assertThat(incomingFile.getContentType()).isEqualTo(CONTENT_TYPE); - } - - @DisplayName("should have file") - @Test - void shouldHaveFile() { - var incomingFile = create(); - - assertThat(incomingFile.getFile()).isEqualTo(file); - } - - private IncomingFile create() { - return extractor.createIncomingFile(file, zipEntry); - } - } - - @DisplayName("sum uncompressed entry size") - @Nested - class TestSumUncompressedEntrySize { - @DisplayName("should return size") - @Test - void shouldReturnSize() { - var sizes = IntStream.range(100, 110).boxed().toList(); - var expectedSum = sizes.stream().mapToLong(Integer::longValue).sum(); - var zipFile = createTempZipFile(sizes.stream() - .map(size -> TestZipEntry.builder() - .name("somefilewithsize%d".formatted(size)) - .content(toBytes("A".repeat(size))) - .build() - ).toList()); - - var sum = extractor.sumUncompressedEntrySizes(zipFile); - - assertThat(sum).isEqualTo(expectedSum); - } - } - - @Nested - class TestContentType { - - @Test - void shouldReturnDefaultWhenNullString() { - assertThrows(NullPointerException.class, () -> extractor.getContentType(null)); - } - - @Test - void shouldReturnDefaultWhenEmptyString() { - var contentType = extractor.getContentType(StringUtils.EMPTY); - - assertThat(contentType).isEqualTo(MimeTypeUtils.APPLICATION_OCTET_STREAM_VALUE); - } - - @Test - void shouldReturnDefaultWhenSpaceString() { - var contentType = extractor.getContentType(StringUtils.SPACE); - - assertThat(contentType).isEqualTo(MimeTypeUtils.APPLICATION_OCTET_STREAM_VALUE); - } - - @Test - void shouldGetContentType() { - var fileNames = List.of("1.xml", "2.txt"); - - var contentTypes = fileNames.stream().map(extractor::getContentType).toList(); - - assertThat(contentTypes).containsExactlyInAnyOrder(MimeTypeUtils.APPLICATION_XML_VALUE, MimeTypeUtils.TEXT_PLAIN_VALUE); - } - } - - @DisplayName("map zip entries") - @Nested - class TestMapZipEntries { - - @DisplayName("should throw if max entries exceeded") - @Test - void shouldThrowIfMaxEntriesExceeded() { - var zipWithTooManyEntries = createTempZipFile(IntStream.range(0, ZIP_MAX_ENTRIES + 1) - .mapToObj(i -> TestZipEntry.builder() - .name("test%d.txt".formatted(i)) - .content(toBytes("test file %d".formatted(i))) - .build() - ).toList()); - - assertThatThrownBy(() -> extractor.mapZipEntries(zipWithTooManyEntries, entry -> null)) - .isInstanceOf(TechnicalException.class); - } - - @DisplayName("should map with mapping function") - @Test - void shouldMapWithMappingFunction() { - var expectedNumberList = IntStream.range(0, ZIP_MAX_ENTRIES).boxed().toList(); - var zipFile = createTempZipFile(expectedNumberList.stream() - .map(i -> TestZipEntry.builder() - .name("%d".formatted(i)) - .content(toBytes("some content")) - .build() - ).toList()); - - var numberList = extractor.mapZipEntries(zipFile, entry -> Integer.parseInt(entry.getName())); - - assertThat(numberList).isEqualTo(expectedNumberList); - } - } - - private byte[] toBytes(String string) { - return string.getBytes(StandardCharsets.UTF_8); - } - -} diff --git a/xta-adapter/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension b/xta-adapter/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension deleted file mode 100644 index 79b126e6..00000000 --- a/xta-adapter/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension +++ /dev/null @@ -1 +0,0 @@ -org.mockito.junit.jupiter.MockitoExtension \ No newline at end of file diff --git a/xta-adapter/src/test/resources/application-itcase.yml b/xta-adapter/src/test/resources/application-itcase.yml deleted file mode 100644 index 57024478..00000000 --- a/xta-adapter/src/test/resources/application-itcase.yml +++ /dev/null @@ -1,22 +0,0 @@ -ozgcloud: - xta: - identifiers: - - afmsh:010600000000_Online-Dienste - server: - address: localhost:3000 - name: LI33-0005 - protocol: https - keystore: - file: classpath:xtaTestStore.p12 - password: <geheim> - adapter: - targetVorgangManagerName: itcase - fallbackStrategy: DENY - routingStrategy: SINGLE - - -grpc: - client: - vorgang-manager-itcase: - address: in-process:vorgang-manager-itcase - negotiationType: PLAINTEXT diff --git a/xta-adapter/src/test/resources/junit-platform.properties b/xta-adapter/src/test/resources/junit-platform.properties deleted file mode 100644 index 1cebb76d..00000000 --- a/xta-adapter/src/test/resources/junit-platform.properties +++ /dev/null @@ -1 +0,0 @@ -junit.jupiter.extensions.autodetection.enabled = true \ No newline at end of file diff --git a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/brauchtumsfeuer_with_anlage/2ef19b50-2d00-4cb0-8318-e3422ab27b86_PDF-Antrag.pdf b/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/brauchtumsfeuer_with_anlage/2ef19b50-2d00-4cb0-8318-e3422ab27b86_PDF-Antrag.pdf deleted file mode 100644 index 1107550f6d33553de96634c3765aaf787e21e07c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50962 zcmY!laB<T$)HC5yz5M0OLoP!F1BLvgEG`=xE`8^s)Wnj^{5+S$l2io^7b_zJBNGD) zLlZ+oLjwa-Z38290|RwUF8z?qlAKfp8#h-sHv<DxM*{<MQv(BYV*>*-Ljwad7brG0 zFfem9FfcQNh=b(87$$CR2emQ32yT{vfq{vMfq{t`)I1BQULykoa{~hdBLf2iV?zT2 zBUb|hV^aeIV~`k#Z31C~_#kWqas$Y2kh@GEW|^CS%;JJN3d}JuFgG$VFf)M|Yy`5* z!oUEe5R45V8jT$d42;|$*v#C(z|0b&#tftu<QXG~gUmny;0Ch51)>=2TV&foiY*Nc zz=nWa2GR%$K?8^*Kp|xcG6duhLx|%*zBU1gxk315rd$RFMwWJ5`T<4xDW%D&MG6`L zE^fsciA4nphI*z3dL{-22D*8vCB-F)c`1oSDGD(f86_nJ#a8<I>6s-NrAd0p`MLVV zCB-GFndzxT`T;3v!64nv`9-NQnwng8c3i1>DWD`_gp@QwDhpB-^qmt+5_9s?x%2}P z(^HETj1>$Nf{-+T_#lm-v;@%rR>!69oL`z(qF~6S@12=atPpJi(ie-Q5hQ@AkxSn< zH6=6ADZfG?+CafT!PL@J!NSBS7G!-<YF-J{etqZsypq(sl46BuQ;@+5hEU23!ZU|Z z79c8?OFt;JIKQ+gIkgy^<O7QGlY>)B6r%M5T-@|SQY%XIJ#!P&Q=K4`GlcSt<<fVp zC~*%iNi0bP>vIn_Pyn0HrSBeWs9<ObG9Bb2eYgC)60j0C0|i5nvxB(w-3%2BL4E`W zmYp4!zI#!AX#rT3bFhNGOKMqWa%zyf6PJFlf__L*VqS4UVo_>dawW(_M1+9+1q&vh z)V%bP3<YBgOD=u4%$$<cA_aZ7oWzn;m(=9^lvI$$;*z4	Xe5IctNxvzQHe?*10p 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 S0ht;Yn^|zFs=E5SaRC651|oX^ diff --git a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/brauchtumsfeuer_with_anlage/4bb895cc-7b60-4322-81fa-cf928d1a22e5_00TESTPDF.pdf b/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/brauchtumsfeuer_with_anlage/4bb895cc-7b60-4322-81fa-cf928d1a22e5_00TESTPDF.pdf deleted file mode 100644 index 26d15054ee2c6638da8d719645ce87b0d83a259a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6649 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 diff --git a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/brauchtumsfeuer_with_anlage/60b6753a-23a8-4552-ae82-36ed96f63e03_Geschaeftsgang.Geschaeftsgang.0201.xml b/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/brauchtumsfeuer_with_anlage/60b6753a-23a8-4552-ae82-36ed96f63e03_Geschaeftsgang.Geschaeftsgang.0201.xml deleted file mode 100644 index 9623996e..00000000 --- a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/brauchtumsfeuer_with_anlage/60b6753a-23a8-4552-ae82-36ed96f63e03_Geschaeftsgang.Geschaeftsgang.0201.xml +++ /dev/null @@ -1,107 +0,0 @@ -<?xml version="1.0"?> -<xdomea:Geschaeftsgang.Geschaeftsgang.0201 xmlns:xdomea="http://www.xdomea.de/V2.0.1"> - <xdomea:Kopf> - <xdomea:ProzessID>60b6753a-23a8-4552-ae82-36ed96f63e03</xdomea:ProzessID> - <xdomea:Nachrichtentyp codeName="Geschaeftsgang.Geschaeftsgang.0201" codelistAgencyName="AG XDOMEA des KoopA ADV" codelistVersionIdentifier="2.0.0" languageCode="de" codelistName="Nachrichtentyp">0201</xdomea:Nachrichtentyp> - <xdomea:Erstellungszeitpunkt>2024-05-17T15:35:54.560+02:00</xdomea:Erstellungszeitpunkt> - <xdomea:Absender> - <xdomea:Behoerdenkennung> - <xdomea:Kennung codeName="WebMethod_Online-Dienste">WebMethod_Online-Dienste</xdomea:Kennung> - <xdomea:Praefix codeName="afmsh:">afmsh:</xdomea:Praefix> - </xdomea:Behoerdenkennung> - <xdomea:Institution> - <xdomea:Name>Schleswig-Holstein</xdomea:Name> - <xdomea:Kurzbezeichnung>Schleswig-Holstein</xdomea:Kurzbezeichnung> - </xdomea:Institution> - </xdomea:Absender> - <xdomea:Empfaenger> - <xdomea:Behoerdenkennung> - <xdomea:Kennung codeName="ozg-cloud-dev001 ">ozg-cloud-dev001 </xdomea:Kennung> - <xdomea:Praefix codeName="afmsh:">afmsh:</xdomea:Praefix> - </xdomea:Behoerdenkennung> - </xdomea:Empfaenger> - <xdomea:SendendesSystem> - <xdomea:InstanzID>AFMSH.MSR</xdomea:InstanzID> - <xdomea:Produktname>MSR</xdomea:Produktname> - <xdomea:Version>10.5</xdomea:Version> - </xdomea:SendendesSystem> - <xdomea:EmpfangsbestaetigungAnInitiator>false</xdomea:EmpfangsbestaetigungAnInitiator> - <xdomea:EmpfangsbestaetigungAnVorgaenger>false</xdomea:EmpfangsbestaetigungAnVorgaenger> - </xdomea:Kopf> - <xdomea:Hauptobjekt> - <xdomea:Dokument> - <xdomea:Identifikation> - <xdomea:ID>30714b70-3ba3-4f32-a36a-4990162f14bb</xdomea:ID> - </xdomea:Identifikation> - <xdomea:AllgemeineMetadaten> - <xdomea:Betreff>Brauchtumsfeuer NB Anbindung Test</xdomea:Betreff> - <xdomea:Kennzeichen>20240517561130590306</xdomea:Kennzeichen> - </xdomea:AllgemeineMetadaten> - <xdomea:Posteingangsdatum>2024-05-17</xdomea:Posteingangsdatum> - <xdomea:Typ>btf_brauchtumsfeuer_sh/btf_brauchtumsfeuer_nb</xdomea:Typ> - <xdomea:Version> - <xdomea:Nummer>0.0</xdomea:Nummer> - <xdomea:Format> - <xdomea:Name codeName="xml - eXtensible Markup Language" codelistAgencyName="AG XDOMEA des KoopA ADV" codelistVersionIdentifier="2.0.0" languageCode="de" codelistName="Dateiformat">030</xdomea:Name> - <xdomea:Version>0.0</xdomea:Version> - <xdomea:Primaerdokument> - <xdomea:Dateiname>73927734-c97b-4823-bad1-60401b112a9f_XML-Daten.xml</xdomea:Dateiname> - </xdomea:Primaerdokument> - </xdomea:Format> - </xdomea:Version> - <xdomea:Version> - <xdomea:Nummer>0.0</xdomea:Nummer> - <xdomea:Format> - <xdomea:Name codeName="pdf - Portable Document Format" codelistAgencyName="AG XDOMEA des KoopA ADV" codelistVersionIdentifier="2.0.0" languageCode="de" codelistName="Dateiformat">018</xdomea:Name> - <xdomea:Version>0.0</xdomea:Version> - <xdomea:Primaerdokument> - <xdomea:Dateiname>2ef19b50-2d00-4cb0-8318-e3422ab27b86_PDF-Antrag.pdf</xdomea:Dateiname> - </xdomea:Primaerdokument> - </xdomea:Format> - </xdomea:Version> - </xdomea:Dokument> - </xdomea:Hauptobjekt> - <xdomea:ExternerGeschaeftsgang> - <xdomea:Identifikation> - <xdomea:ID>6c89a915-791b-4e9f-a06b-a23a16925c34</xdomea:ID> - </xdomea:Identifikation> - <xdomea:Beteiligungsschritt> - <xdomea:Nummer>1</xdomea:Nummer> - <xdomea:Status codeName="zukuenftig" codelistAgencyName="AG XDOMEA des KoopA ADV" codelistVersionIdentifier="2.0.0" languageCode="de" codelistName="Beteiligungsstatus">001</xdomea:Status> - <xdomea:Verfuegung> - <xdomea:Ersteller> - <xdomea:Behoerdenkennung> - <xdomea:Kennung codeName="WebMethod_Online-Dienste">WebMethod_Online-Dienste</xdomea:Kennung> - <xdomea:Praefix codeName="afmsh:">afmsh:</xdomea:Praefix> - </xdomea:Behoerdenkennung> - </xdomea:Ersteller> - <xdomea:Adressat> - <xdomea:Behoerdenkennung> - <xdomea:Kennung codeName="ozg-cloud-dev001 ">ozg-cloud-dev001 </xdomea:Kennung> - <xdomea:Praefix codeName="afmsh:">afmsh:</xdomea:Praefix> - </xdomea:Behoerdenkennung> - </xdomea:Adressat> - <xdomea:Erstellungsdatum>2024-05-17</xdomea:Erstellungsdatum> - <xdomea:Erstellungsuhrzeit>15:35:54</xdomea:Erstellungsuhrzeit> - </xdomea:Verfuegung> - </xdomea:Beteiligungsschritt> - </xdomea:ExternerGeschaeftsgang> - <xdomea:Anlage> - <xdomea:Dokument> - <xdomea:Identifikation> - <xdomea:ID>44d72e8a-f8e3-484b-bf0c-a84cf1aebe0c</xdomea:ID> - </xdomea:Identifikation> - <xdomea:Typ>Anlage</xdomea:Typ> - <xdomea:Version> - <xdomea:Nummer>1</xdomea:Nummer> - <xdomea:Format> - <xdomea:Name codeName="pdf - Portable Document Format" codelistAgencyName="AG XDOMEA des KoopA ADV" codelistVersionIdentifier="2.0.0" languageCode="de" codelistName="Dateiformat">018</xdomea:Name> - <xdomea:Version>0.0</xdomea:Version> - <xdomea:Primaerdokument> - <xdomea:Dateiname>4bb895cc-7b60-4322-81fa-cf928d1a22e5_00TESTPDF.pdf</xdomea:Dateiname> - </xdomea:Primaerdokument> - </xdomea:Format> - </xdomea:Version> - </xdomea:Dokument> - </xdomea:Anlage> -</xdomea:Geschaeftsgang.Geschaeftsgang.0201> \ No newline at end of file diff --git a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/brauchtumsfeuer_with_anlage/73927734-c97b-4823-bad1-60401b112a9f_XML-Daten.xml b/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/brauchtumsfeuer_with_anlage/73927734-c97b-4823-bad1-60401b112a9f_XML-Daten.xml deleted file mode 100644 index dd019ef8..00000000 --- a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/brauchtumsfeuer_with_anlage/73927734-c97b-4823-bad1-60401b112a9f_XML-Daten.xml +++ /dev/null @@ -1,89 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<myForm xmlns:t="http://xmlns.cit.de/intelliform/transaction" t:form-version="2.022" - t:uuid="a1d537b5-79f1-492b-8966-b66d391fe294" t:id="20240517561130590306" t:timestamp="2024-05-17T13:35:13.586Z" - t:sender="test.afm.schleswig-holstein.de" t:form="Brauchtumsfeuer NB Anbindung Test" - t:form-id="btf_brauchtumsfeuer_sh/btf_brauchtumsfeuer_nb" t:customer="Schleswig-Holstein" t:customer-id="sh" - t:client="Schleswig-Holstein" t:client-id="land" t:lang="de-DE"> - <GebietID>9006880</GebietID> - <AnliegenID>9552000</AnliegenID> - <GebietBEZEICHNUNG>Scharbeutz</GebietBEZEICHNUNG> - <zst_online_dienst>Brauchtumsfeuer: - Anmeldung;266889711;https://www.dataport.de/datenschutz/;WEBSERVICE;;;https://atlantis.stage.afm.ozg-sh.de/ws/intelliform_formDatas;https://www.dataport.de/impressum/;true - </zst_online_dienst> - <datenschutz_akzeptiert>true</datenschutz_akzeptiert> - <zustaendigestelle> - <OrganisationseinheitenID>9795669</OrganisationseinheitenID> - </zustaendigestelle> - <OrganisationseinheitenBEZEICHNUNG>Dataport-AFM-SH-Entwicklung Kunstbehörde</OrganisationseinheitenBEZEICHNUNG> - <zust_kontaktsystemkennung_ln /> - <zust_kontaktsystemkennung_nb /> - <zust_kontaktsystemkennung_webservice>https://atlantis.stage.afm.ozg-sh.de/ws/intelliform_formDatas - </zust_kontaktsystemkennung_webservice> - <zust_strasse>Entwicklerweg</zust_strasse> - <zust_hausnummer>123</zust_hausnummer> - <zust_postleitzahl>24107</zust_postleitzahl> - <ortID>9006402</ortID> - <zust_ort>Kiel</zust_ort> - <zust_telefonnummer>+49 40 42846-4032</zust_telefonnummer> - <zust_faxnummer /> - <zust_emailadresse>noreply@ozg-sh.de</zust_emailadresse> - <anzeigender_verantwortlich>true</anzeigender_verantwortlich> - <anzeigender_nachname>mit Anhang</anzeigender_nachname> - <anzeigender_vorname>Test</anzeigender_vorname> - <anzeigender_geburtsdatum>2001-01-01</anzeigender_geburtsdatum> - <anzeigender_land_auswahl>in Deutschland</anzeigender_land_auswahl> - <anzeigender_strasse>Test</anzeigender_strasse> - <anzeigender_hausnummer>1</anzeigender_hausnummer> - <anzeigender_postleitzahl>22222</anzeigender_postleitzahl> - <anzeigender_ort>Test</anzeigender_ort> - <anzeigender_firma /> - <kontakt_mail>noreply@ozg-sh.de</kontakt_mail> - <kontakt_telefon /> - <kontakt_mobil /> - <verantwortlicher_mobil>0123456789</verantwortlicher_mobil> - <verantwortlicher_mobil2 /> - <angabe>adresse</angabe> - <strasse>Teststr</strasse> - <hausnummer>1</hausnummer> - <ort>Scharbeutz</ort> - <ortsteil /> - <angaben_extra /> - <lageplan> - <file content-type="application/pdf" description="" id="assistants.85D54E9431CF70430ACBB8DD3E604E83C03B1891" - length="185689">00TESTPDF.pdf - </file> - </lageplan> - <feuer_datum>2025-07-08</feuer_datum> - <feuer_start>15:00</feuer_start> - <feuer_ende>23:00</feuer_ende> - <feuer_groesse>1000</feuer_groesse> - <feuer_art>Alles - </feuer_art> - <feuer_gefahrenabwehr /> - <weitergabe>true</weitergabe> - <richtigkeit>true</richtigkeit> - <missbrauch>true</missbrauch> - <betreff>Anzeige eines Brauchtumsfeuers</betreff> - <nachricht>Sehr geehrte/r Angtragssteller/in<br/><br/>Ihr Antrag wurde an die zuständige Stelle - gesendet.<br/> Ihre Vorgangsnummer und zuständige Stelle finden Sie im angehängten Dokument. <br/>Bitte - geben Sie diese Vorgangsnummer bei allen Anfragen zu Ihrerm Antrag an.<br/><br/><br/>Mit - freundlichen Grüßen<br/><br/>Ihre zuständige Stelle - </nachricht> - <mail /> - <nameid /> - <rest_response_name>[]</rest_response_name> - <mailboxguid /> - <antragsteller> - <pers_anrede /> - <pers_nachname>mit Anhang</pers_nachname> - <pers_vorname>Test</pers_vorname> - <pers_geburtsdatum>2001-01-01</pers_geburtsdatum> - <sh_strasse>Test</sh_strasse> - <sh_hausnummer>1</sh_hausnummer> - <sh_plz>22222</sh_plz> - <ort>Test</ort> - <kont_telefonnummer /> - <kont_mobilnummer /> - <kont_email>noreply@ozg-sh.de</kont_email> - </antragsteller> -</myForm> diff --git a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/brauchtumsfeuer_without_anlage/0cec5d74-5ac3-4ff3-9a6f-69007ff3f27e_Geschaeftsgang.Geschaeftsgang.0201.xml b/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/brauchtumsfeuer_without_anlage/0cec5d74-5ac3-4ff3-9a6f-69007ff3f27e_Geschaeftsgang.Geschaeftsgang.0201.xml deleted file mode 100644 index e66b9218..00000000 --- a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/brauchtumsfeuer_without_anlage/0cec5d74-5ac3-4ff3-9a6f-69007ff3f27e_Geschaeftsgang.Geschaeftsgang.0201.xml +++ /dev/null @@ -1,89 +0,0 @@ -<?xml version="1.0"?> -<xdomea:Geschaeftsgang.Geschaeftsgang.0201 xmlns:xdomea="http://www.xdomea.de/V2.0.1"> - <xdomea:Kopf> - <xdomea:ProzessID>0cec5d74-5ac3-4ff3-9a6f-69007ff3f27e</xdomea:ProzessID> - <xdomea:Nachrichtentyp codeName="Geschaeftsgang.Geschaeftsgang.0201" codelistAgencyName="AG XDOMEA des KoopA ADV" codelistVersionIdentifier="2.0.0" languageCode="de" codelistName="Nachrichtentyp">0201</xdomea:Nachrichtentyp> - <xdomea:Erstellungszeitpunkt>2024-05-17T09:21:09.073+02:00</xdomea:Erstellungszeitpunkt> - <xdomea:Absender> - <xdomea:Behoerdenkennung> - <xdomea:Kennung codeName="WebMethod_Online-Dienste">WebMethod_Online-Dienste</xdomea:Kennung> - <xdomea:Praefix codeName="afmsh:">afmsh:</xdomea:Praefix> - </xdomea:Behoerdenkennung> - <xdomea:Institution> - <xdomea:Name>Schleswig-Holstein</xdomea:Name> - <xdomea:Kurzbezeichnung>Schleswig-Holstein</xdomea:Kurzbezeichnung> - </xdomea:Institution> - </xdomea:Absender> - <xdomea:Empfaenger> - <xdomea:Behoerdenkennung> - <xdomea:Kennung codeName="ozg-cloud-dev001">ozg-cloud-dev001</xdomea:Kennung> - <xdomea:Praefix codeName="afmsh:">afmsh:</xdomea:Praefix> - </xdomea:Behoerdenkennung> - </xdomea:Empfaenger> - <xdomea:SendendesSystem> - <xdomea:InstanzID>AFMSH.MSR</xdomea:InstanzID> - <xdomea:Produktname>MSR</xdomea:Produktname> - <xdomea:Version>10.5</xdomea:Version> - </xdomea:SendendesSystem> - <xdomea:EmpfangsbestaetigungAnInitiator>false</xdomea:EmpfangsbestaetigungAnInitiator> - <xdomea:EmpfangsbestaetigungAnVorgaenger>false</xdomea:EmpfangsbestaetigungAnVorgaenger> - </xdomea:Kopf> - <xdomea:Hauptobjekt> - <xdomea:Dokument> - <xdomea:Identifikation> - <xdomea:ID>e8f627fe-b90c-4fc7-ba61-20a43041971b</xdomea:ID> - </xdomea:Identifikation> - <xdomea:AllgemeineMetadaten> - <xdomea:Betreff>Brauchtumsfeuer NB Anbindung Test</xdomea:Betreff> - <xdomea:Kennzeichen>20240517335360945504</xdomea:Kennzeichen> - </xdomea:AllgemeineMetadaten> - <xdomea:Posteingangsdatum>2024-05-17</xdomea:Posteingangsdatum> - <xdomea:Typ>btf_brauchtumsfeuer_sh/btf_brauchtumsfeuer_nb</xdomea:Typ> - <xdomea:Version> - <xdomea:Nummer>0.0</xdomea:Nummer> - <xdomea:Format> - <xdomea:Name codeName="xml - eXtensible Markup Language" codelistAgencyName="AG XDOMEA des KoopA ADV" codelistVersionIdentifier="2.0.0" languageCode="de" codelistName="Dateiformat">030</xdomea:Name> - <xdomea:Version>0.0</xdomea:Version> - <xdomea:Primaerdokument> - <xdomea:Dateiname>758ae7f9-9984-43ba-8dda-b81aa3d92f95_XML-Daten.xml</xdomea:Dateiname> - </xdomea:Primaerdokument> - </xdomea:Format> - </xdomea:Version> - <xdomea:Version> - <xdomea:Nummer>0.0</xdomea:Nummer> - <xdomea:Format> - <xdomea:Name codeName="pdf - Portable Document Format" codelistAgencyName="AG XDOMEA des KoopA ADV" codelistVersionIdentifier="2.0.0" languageCode="de" codelistName="Dateiformat">018</xdomea:Name> - <xdomea:Version>0.0</xdomea:Version> - <xdomea:Primaerdokument> - <xdomea:Dateiname>3a41cc59-baf4-424d-8c69-a8e7f7470d68_PDF-Antrag.pdf</xdomea:Dateiname> - </xdomea:Primaerdokument> - </xdomea:Format> - </xdomea:Version> - </xdomea:Dokument> - </xdomea:Hauptobjekt> - <xdomea:ExternerGeschaeftsgang> - <xdomea:Identifikation> - <xdomea:ID>f5966df2-633a-4763-a769-b4250d66df58</xdomea:ID> - </xdomea:Identifikation> - <xdomea:Beteiligungsschritt> - <xdomea:Nummer>1</xdomea:Nummer> - <xdomea:Status codeName="zukuenftig" codelistAgencyName="AG XDOMEA des KoopA ADV" codelistVersionIdentifier="2.0.0" languageCode="de" codelistName="Beteiligungsstatus">001</xdomea:Status> - <xdomea:Verfuegung> - <xdomea:Ersteller> - <xdomea:Behoerdenkennung> - <xdomea:Kennung codeName="WebMethod_Online-Dienste">WebMethod_Online-Dienste</xdomea:Kennung> - <xdomea:Praefix codeName="afmsh:">afmsh:</xdomea:Praefix> - </xdomea:Behoerdenkennung> - </xdomea:Ersteller> - <xdomea:Adressat> - <xdomea:Behoerdenkennung> - <xdomea:Kennung codeName="ozg-cloud-dev001">ozg-cloud-dev001</xdomea:Kennung> - <xdomea:Praefix codeName="afmsh:">afmsh:</xdomea:Praefix> - </xdomea:Behoerdenkennung> - </xdomea:Adressat> - <xdomea:Erstellungsdatum>2024-05-17</xdomea:Erstellungsdatum> - <xdomea:Erstellungsuhrzeit>09:21:06</xdomea:Erstellungsuhrzeit> - </xdomea:Verfuegung> - </xdomea:Beteiligungsschritt> - </xdomea:ExternerGeschaeftsgang> -</xdomea:Geschaeftsgang.Geschaeftsgang.0201> \ No newline at end of file diff --git a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/brauchtumsfeuer_without_anlage/3a41cc59-baf4-424d-8c69-a8e7f7470d68_PDF-Antrag.pdf b/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/brauchtumsfeuer_without_anlage/3a41cc59-baf4-424d-8c69-a8e7f7470d68_PDF-Antrag.pdf deleted file mode 100644 index 1107550f6d33553de96634c3765aaf787e21e07c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50962 zcmY!laB<T$)HC5yz5M0OLoP!F1BLvgEG`=xE`8^s)Wnj^{5+S$l2io^7b_zJBNGD) zLlZ+oLjwa-Z38290|RwUF8z?qlAKfp8#h-sHv<DxM*{<MQv(BYV*>*-Ljwad7brG0 zFfem9FfcQNh=b(87$$CR2emQ32yT{vfq{vMfq{t`)I1BQULykoa{~hdBLf2iV?zT2 zBUb|hV^aeIV~`k#Z31C~_#kWqas$Y2kh@GEW|^CS%;JJN3d}JuFgG$VFf)M|Yy`5* z!oUEe5R45V8jT$d42;|$*v#C(z|0b&#tftu<QXG~gUmny;0Ch51)>=2TV&foiY*Nc zz=nWa2GR%$K?8^*Kp|xcG6duhLx|%*zBU1gxk315rd$RFMwWJ5`T<4xDW%D&MG6`L zE^fsciA4nphI*z3dL{-22D*8vCB-F)c`1oSDGD(f86_nJ#a8<I>6s-NrAd0p`MLVV zCB-GFndzxT`T;3v!64nv`9-NQnwng8c3i1>DWD`_gp@QwDhpB-^qmt+5_9s?x%2}P z(^HETj1>$Nf{-+T_#lm-v;@%rR>!69oL`z(qF~6S@12=atPpJi(ie-Q5hQ@AkxSn< zH6=6ADZfG?+CafT!PL@J!NSBS7G!-<YF-J{etqZsypq(sl46BuQ;@+5hEU23!ZU|Z z79c8?OFt;JIKQ+gIkgy^<O7QGlY>)B6r%M5T-@|SQY%XIJ#!P&Q=K4`GlcSt<<fVp zC~*%iNi0bP>vIn_Pyn0HrSBeWs9<ObG9Bb2eYgC)60j0C0|i5nvxB(w-3%2BL4E`W zmYp4!zI#!AX#rT3bFhNGOKMqWa%zyf6PJFlf__L*VqS4UVo_>dawW(_M1+9+1q&vh z)V%bP3<YBgOD=u4%$$<cA_aZ7oWzn;m(=9^lvI$$;*z4	Xe5IctNxvzQHe?*10p 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 S0ht;Yn^|zFs=E5SaRC651|oX^ diff --git a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/brauchtumsfeuer_without_anlage/758ae7f9-9984-43ba-8dda-b81aa3d92f95_XML-Daten.xml b/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/brauchtumsfeuer_without_anlage/758ae7f9-9984-43ba-8dda-b81aa3d92f95_XML-Daten.xml deleted file mode 100644 index 00e2a77f..00000000 --- a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/brauchtumsfeuer_without_anlage/758ae7f9-9984-43ba-8dda-b81aa3d92f95_XML-Daten.xml +++ /dev/null @@ -1,3 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<myForm xmlns:t="http://xmlns.cit.de/intelliform/transaction" t:form-version="2.022" t:uuid="147839b0-e938-4606-a8bc-104afd83a2b3" t:id="20240517335360945504" t:timestamp="2024-05-17T07:18:56.031Z" t:sender="test.afm.schleswig-holstein.de" t:form="Brauchtumsfeuer NB Anbindung Test" t:form-id="btf_brauchtumsfeuer_sh/btf_brauchtumsfeuer_nb" t:customer="Schleswig-Holstein" t:customer-id="sh" t:client="Schleswig-Holstein" t:client-id="land" t:lang="de-DE"><GebietID>9006880</GebietID><AnliegenID>9552000</AnliegenID><GebietBEZEICHNUNG>Scharbeutz</GebietBEZEICHNUNG><zst_online_dienst>Brauchtumsfeuer: Anmeldung;266889711;https://www.dataport.de/datenschutz/;WEBSERVICE;;;https://atlantis.stage.afm.ozg-sh.de/ws/intelliform_formDatas;https://www.dataport.de/impressum/;true</zst_online_dienst><datenschutz_akzeptiert>true</datenschutz_akzeptiert><zustaendigestelle><OrganisationseinheitenID>9795669</OrganisationseinheitenID></zustaendigestelle><OrganisationseinheitenBEZEICHNUNG>Dataport-AFM-SH-Entwicklung Kunstbehörde</OrganisationseinheitenBEZEICHNUNG><zust_kontaktsystemkennung_ln/><zust_kontaktsystemkennung_nb/><zust_kontaktsystemkennung_webservice>https://atlantis.stage.afm.ozg-sh.de/ws/intelliform_formDatas</zust_kontaktsystemkennung_webservice><zust_strasse>Entwicklerweg</zust_strasse><zust_hausnummer>123</zust_hausnummer><zust_postleitzahl>24107</zust_postleitzahl><ortID>9006402</ortID><zust_ort>Kiel</zust_ort><zust_telefonnummer>+49 40 42846-4032</zust_telefonnummer><zust_faxnummer/><zust_emailadresse>noreply@ozg-sh.de</zust_emailadresse><anzeigender_verantwortlich>true</anzeigender_verantwortlich><anzeigender_nachname>OZG-Cloud</anzeigender_nachname><anzeigender_vorname>Test von</anzeigender_vorname><anzeigender_geburtsdatum>2001-01-01</anzeigender_geburtsdatum><anzeigender_land_auswahl>in Deutschland</anzeigender_land_auswahl><anzeigender_strasse>Teststraße</anzeigender_strasse><anzeigender_hausnummer>1</anzeigender_hausnummer><anzeigender_postleitzahl>22222</anzeigender_postleitzahl><anzeigender_ort>Teststadt</anzeigender_ort><anzeigender_firma/><kontakt_mail>noreply@ozg-sh.de</kontakt_mail><kontakt_telefon/><kontakt_mobil/><verantwortlicher_mobil>0123</verantwortlicher_mobil><verantwortlicher_mobil2/><angabe>adresse</angabe><strasse>Test</strasse><hausnummer>1</hausnummer><ort>Scharbeutz</ort><ortsteil/><angaben_extra/><feuer_datum>2024-10-01</feuer_datum><feuer_start>8:00</feuer_start><feuer_ende>12:00</feuer_ende><feuer_groesse>100</feuer_groesse><feuer_art>Holz -</feuer_art><feuer_gefahrenabwehr/><weitergabe>true</weitergabe><richtigkeit>true</richtigkeit><missbrauch>true</missbrauch><betreff>Anzeige eines Brauchtumsfeuers</betreff><nachricht>Sehr geehrte/r Angtragssteller/in<br/><br/>Ihr Antrag wurde an die zuständige Stelle gesendet.<br/> Ihre Vorgangsnummer und zuständige Stelle finden Sie im angehängten Dokument. <br/>Bitte geben Sie diese Vorgangsnummer bei allen Anfragen zu Ihrerm Antrag an.<br/><br/><br/>Mit freundlichen Grüßen<br/><br/>Ihre zuständige Stelle</nachricht><mail/><nameid/><rest_response_name>[]</rest_response_name><mailboxguid/><antragsteller><pers_anrede/><pers_nachname>OZG-Cloud</pers_nachname><pers_vorname>Test von</pers_vorname><pers_geburtsdatum>2001-01-01</pers_geburtsdatum><sh_strasse>Teststraße</sh_strasse><sh_hausnummer>1</sh_hausnummer><sh_plz>22222</sh_plz><ort>Teststadt</ort><kont_telefonnummer/><kont_mobilnummer/><kont_email>noreply@ozg-sh.de</kont_email></antragsteller></myForm> diff --git a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/dfoerdermittel_with_anlage/06d36643-2883-4b74-9231-8dc7f2693af2_Zusammenfassung-01f903b0-c61e-429d-807f-5011d180c073.pdf b/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/dfoerdermittel_with_anlage/06d36643-2883-4b74-9231-8dc7f2693af2_Zusammenfassung-01f903b0-c61e-429d-807f-5011d180c073.pdf deleted file mode 100644 index 5ac687e093135486e303a1547f90f548c3d52f6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54283 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	ZD@fY5|wqJODx1FL(n$V)~<g514^VXgT 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%0D&RXjFN)9q5 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 diff --git a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/dfoerdermittel_with_anlage/1d8ca22a-9d20-4507-aa5e-b764bb5642f0_Admin.png b/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/dfoerdermittel_with_anlage/1d8ca22a-9d20-4507-aa5e-b764bb5642f0_Admin.png deleted file mode 100644 index 9ec0d7a08d0be142997505dd5b6d13015054d5d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 64973 zcmeAS@N?(olHy`uVBq!ia0y~yVCi6BU|zt%#=yW3R^lthz`(##?Bp53!NI{%!;#X# zz`!6`;u=vBoS#-wo>-L1ke-*Ho2px!T$GxcSDcYw@}7CW9RmY{CP<NUQEFmIW`3SR zNM>#-gIke;k+FhXYLbGHfsu)Vp_!Gjft9h5g0pK#+@gZn3=9eko-U3d6?5L)t&F(x z^xyxF&)>W`u}nduD>bWII%`>Ge9WaH?O@N~;Qlh7=-kUjrn=V4ulkjF{SD2U6_)l+ zG;8UKr4=UMRReig7$eyvX8irmZnV+(fP&Qf<E3Xy`R1RmdH35^+EV`=Ym0yrha%~O zOY`C#2XBkR^=4?iDZRR3HS?UVTay=fz)f6~rp473BPOv^X@}<BwnHb2;Ti-MB`sxE z*gg6As<mc~zLky>7ESv9zRRu^?i{J6Plpt$RsZkb^LkF$<PFO<C3r->`9FQ%)h+gL z_ja_cD3J*Hm3G+GapJC7tyB5hz1W>k1#Q2yFz}@r!c#7hOAjkXZ~U*jOVewvcHP{j ztQME6oY`LNHcOoqLpMenFR;GA$icwG7;E}l81BN16K@&>J=oVVv^UlsnBTDV###*n zEw1jab-MrdPc15A34FOS#r0so#{duBEsV#itE$RAeE-fLtTok<tJP^~h?c5^5ZtU4 zjI+<CZNL3CZ1vSy(`L?`Ib-_ta)}=@7Q7J}l46c03r?(@=yHz5{AsJR78kS9*Q>Lw z4Q^h(T)bfa{{OjBy~i$hmLUSh#q?&5+2yI);eF4ZJjr31#`sf&%~g!cT_93(XP97! zpwP-WFSdV~vT2c^vy=n(59ZCY&2p`dT)+OEZ>rbQwbvFSTqWQatRbSs&)>hyYObD+ zzW#dE5B3LQUgce#l@u205K{9c;N#Xdlkj}G18>sK&bqt)^2=G;B1V&a5Yf9%Q-o_v zRBprc>EXe9<L<NE@V@!A-76+2vU)13%hTM%c$1|*)nC7zU*<cT@6yYXv#UQ!Afly( zdqs$r{@SqDbEi*V&dL{S8*}l+LM~^ebmm2iCOT*Rn-x{IdinC_$@}*0+kWzdA|lp* zExee)<fAsZ{br6GPf9@1--VA}3xs+^9{u^LOh=omLynV!V?qH^DwNX{;c9AX%40ni zG~;H*5AEZcQNg<|F)Uw{`%ZM}zxs>6oL!YWqAIGYwuP_0`fh6#3q0a}+z!^7nz1#i z#7fp{snFC_1x}N%W*yDinq)N7V5ZNFoNZcBldQBB1+BEPv9-PZ{OMCu_H&=FZ~N}W zbzMzM$~ENOw(p{>F0Nkrx$!1VD`xNCU*B;#lndsSMF#^lM0V`n{rKTS$4cV~SF%jA zwo1+QYrmVPuCL$U)Wr0rY`NLJNmgDTzkbb~HGO)y`UH=M>(aEioEI(1S$?QZYj#pt zO;zMa(~c_#-g31nU0C@F9=sPHXiW90sjdC^<%^CvkEZX!fCo>Xwys~lKG~)BO5k2A z6DePY0_*yx=B~kKR?SHZyDH@p@K5P#qu0_)rROKXv*ACp5G~PODO0D#7ejtW^}0RY zRIqH})rA2XR~!^tZ~A_0SaHf_l~s3$IDe;<W=d(6VvE3{xQgm(<C-4@ZM@Q9_m`ST zaJ4qASfQcjKkv<@{VH+!wIKhmTM(e};oG-$SL^qOXo=ptch9eP%S0=$FH0Hzta$c9 zu^_K2veJ6yPER|P76GR#{b^@s8K$3;VdIeqcwE1xqM~9$+1n_yygME9=g0Tns`&kO zyJgW6j<>hAuD<wnoq&Xd$M0`%PuuXnd-v|lEYt2AHzMl(|1H0^KE8kZ_VV7}fvc~c znP)qDW$^O2%^Q~4{aVwdeb3y9L-F6gJ9qD9n*=R0>2+(KJ$v?*z+S6$|7M@){ZwwS z+C*hl*2F9g%cd0?Dw9e;sjEP+zP^52&dsLj)5Xu*|F^kc|G#$b_m@wfx~>je8?gH7 zkKey1&z$-4(zmHzs_XZDliFML_0aX};tf4LJRs*x(~m#5(78S9ZhP43)Z5!~pFDeZ zX@7nFnY7K1?+E+b9DH$c@y>#WOofGoA|fIQ1`=6!m#?m@sQ7R~x!)k+0K=ifhd18L zIdc5?=EBEr`~LlU{Y!6s&#t=r9EvSFK59<&vazv=xi)Y4a&@=G8*lCIy30|jG4&MJ z?bR>lOfD74H3_phz0&BoroMvK-lMfI16}+~bwFw7xy_dg&V7o9A0O*gR#RhJeKl%% z?XqRdjOzYWY>Co+er|4Y<!`Rmrm(e958uB(e{*yC$#dtHRepZ<<?Ze1_x4tQzLDI& zvHpME^zYoQ&KutE`<-_t%@|~svhrfTUn_Ov<KylAehI#{CA0Zzma3v6V}n`ltqC(` zRK&8ml>Xf(=)_U@_;S|Pt+V<<XE`l&Sba4pAmG6!tGa(bpL?y}`+Q#Yt37;6gHA^0 z?>%~MuJz4LsotH%-|yGk2L=Y({QvVgwMjw!wZ`20Q_QPYoasvw?N!ive@LrcnG=*O zt88p+BuukJJUu<<*j7)A+go*UWw1J*jKzZ;{oA*j``iCD`F^ij-)e5(=jZ3A|7dUX zTAK9j&CQZmS2~aNN-w^e1xjMKx930K_xs)BY0-I#`uhFr_x<YXxBJC0`)r%r;)jR% z?T=i)KHd8L9^utjPrbRh`Q@FR#)^uH875MCaeGdv&#yW3?Ck99KR<HJq(479`}o7d z!x~e);_7~;E?T@;(lCkT_xJbiOM?va?pV0>$#_0K*6Zov@!<1$`}E7peEZ(Uyx;j; zZeGPB&Zw<fu8xk3`~UsYHcmTJ@a5u;!el;qJDvl}d}q(Ftu~8`i_6#=RrdZKuR~0X zjIf$d!l4#Un?D~8v#_uvm`L5+o-e<C|39mjFJC%5w7=%oFL(CDMCHtDYa}BhBWpgL zR9_RlolisN*52IPW=zb?J4;>)&9C{ydB661?AH0>txgAfB#kpJFXKJlFaP{z`g~PG zLqUz2y?giUk?G&R$!@Bbs=w`5k-b%47gc_KrZLqkDLJ|F)ym~EjmfU(*J|H0X8^hT z=FOXZficSNeJSVWSn9;>nbB|eYlYiiP~t6oSz<MPd*tMVWvi@CaW^jb^x?$R(i=Hu zWp8dAEIx1B9<?^@a2qefo$~v&XJ!~SyLO9({<!a={(6OugjV_P>h$F^rsl<f>L|Sn z%l+kNnPeWS|Myv*Pu|XFecWD90w^pjyz#b7gp0NK`MJ~s4U8&kYDFI&INsWp8?B@e zq&4-+ySuX+8W@t2lRtj@re<U`>BI>Sz1Uqx*6;u4b$wlI<(rMiEeap8SeL)k33mTz z_U-L$c8BeGcOy0=FxLP1$iCcf?y9fJTW{tZIeOGE>x#yozkdTYL~MS)+1w*<Kd+~U z=h34_FK%p921S8XZ(Hf>Yl1Q|XQK1>w%*N4e|>GO##ApKHDR;aXE*Bk*VWk>8XDes z`%NhL`kFB9=xsR%^R^fN`&0R*%vx=7XYuoMg+D$d=Iwf^_Ur5G_Ooe^cRrtYIB&ag z?XQw$J~N&2^7MXxdwcly?b&bMyb<bGHZ+`Q|L;e0-rZe>`S)!6=G&b;Iaz)6*BDTN zop6BROq#KA`ni%8X9i14%O_8sOo>>%V3A#@mZ)<ZkD`IWguT_@lZ<9|^!Fc6+x+p* z=kwve?(BM0`?x3jYQKO}$7|=<HM7Gfo8`AyZOgmMb)fjXEqlYwoM$_q&r80z$hGgl z3bE2D=L)h+j;>kNrm6yJhr~Fn3^A(tQNYE;bz?`N^2(Jfj~qXKd3SmKER#$pFE6fz z3m3Y$x)%QYl<L+a(HOUWdF<}8HIbW_`BaN_w=SPwC)IuQ(5I)TGw<)S)!+L?=>PBg z|0T@xWc2s_P>S7Mw)PA6j-yErJJshMNHH=@KE|WwH|Iob`Q6ah4IXR5E-!NBUbJ{| zpoU1yj)KMo3lu<EuB^;V*{$cnr>Cb&-rSh@^z?M&%1<d~IX4^<5)`cF_T8`lKi9JO z*_4R%6&`+meCzl9TJ<<4a6{6@h#AJ|d}@<V7T%w#9lojPsn?x5cP?a@<lNlU>NnSF zVc6=AU%#flxv}xdvu8#{PdxPE_Pp4!ZiVmWn`fS!oP65Gekt=J&ERDhR)?<_`up$0 zVgA1PhYuYpC@xmEw7hA!b&b-wFPUbuW!FoK^sQR;YNzg_uJ66Z>q70FI22z^4~o2+ z_VQ}@<b-E#E0bSeTiZABD8u_bpZ#WPrkk!<>?YY~eEW`dF}T%swdC_z^UE8P-M_uP z?e68p6}Eb+?`*S&@7|qT;MmNNadVSu*49~%kM}RW{(5fK^|Z}}|Nc}?@miX^eC6lo z=aV<zT($M{m6^ur4Tm-?To$4wx;kv_qwn|Y(+{`ty12Pbnl$N9`utkA*Von-78ipG zx0ro3k`0U9`zKAA;!;pxz{to5DtIq1_rJU{SbbaW?PFI~27mncab=(`S8LP8<l~!? zkMlix^ytR!a{aoxx*fZBFAmVy@pM{rL2>cp2M3$~{Cqw?bX)kBKP;@QQ!T~i<ou5J z$;xiObUyJS$A(w`oHuW>>n?t_Q}=A>``N2vR@b!%ICZeCyH(k@S-E3Q7B~RTNn4d@ zWNn?bVuePZtaaF<I};S0fBgA;-g}Mn;s6a9`|zVl8yV{VUR{-O@%1YfAy?(1tk2>W zyYHTRd3pKCQ>T=am75Q@^KZ_)toEhKRyS(PiceLGFP`}E@v)?3k;=u37ky@%_5Oap zf4*Vzu?h3%zyI=?@xtEf^0<nJtdAZ)u6(_AyM~5F!o59}eOnp3oTPW(eHXHOs;#~L z{y#?g`~MWRURP6BPd1y)$;G8)V{_*v>-^Y{vqF}sy_a5nHR|o!>e!F}M4UJZYd1x$ zU2*kluhgo%&+nt$Kbp38Et?@4KY7Kp(h%*#g>N^jf@<>RJ9h6jPB_5eqb3Y$m~=Wk zI%oZUiEFnQC}rFK`@uZ<q)R)WEC)aT^FyuNU&BjyZ{(OgJ3s$@gv+iSo72x*$wh-I zAYb37*P`=PO-!add6Kd&W+zj_!30p1^t@YtU&6&juAsv5++6F;)!*|zefsp_)2BnH zPp>|udp&wfMq|**l;7Xp*8KnbeZ|$RPoF-?FkakQ{M=ynS&$PZOc0nfd2;OkmYAti zrygx&X5aDq-R{b-SHmmc?R@Ux?aj=!{4pyltEJevb)4z*qQl=9ByYZX;=~CB3yT>W zHW-|nZy*2KtX072&J8VYm#j_I5rMPUty#P*CiZyk_q*ZmW;wfN3x$dZUA>yOT}S}b z0QkC~`ujT;R@RN>@8i<W&I(mhsCu*Uc*Uoa>XIfI0>#hIJ>C6&U-Fd|fi*v$PCs(= z=)=d4gVU8g)-AnqCFI)L=;JRgE{@z?rhB|kcCq(#Jq-~qP)kNfjQj1at&e-n?>*?Z z|92q4;KD*@_8c?mmoHyN=!o^nSUSzOtBu%KW68<MnUb1nSpV-&(QoVOZ#rSCr(Rs_ z{`mRx_Jaur?%%&(Xs4>$dUm$?=LgOFpWbf2U-aWc;+7~~b-y_en)&StUM6q9nX~8X zwdgI`*ZWSK@JLEZ+EMV3$!vD-g$n_X9zULGkm%HVyZqVCweMEU{}iDkR`&kh*~9$y zXEvptwy65DB3Suwi-6Og+L=DfxXRzH(qJfB<{N&EF|<9jG`2lx<r4q-cB$87w4x?! zXlZr%&NiF6dvc`jtAaKb7bgxy7h4IN3IndzLmPjG6@pqoACJo~&%eKK&);vibz*i* zxN;>#uI7Vd)%SP37c-vR*;y=OQ?Vf`c+EQVvfXp*|Np+fWchMXhoI`)o0CVo#UuCC zSiZi#o}FuZ+t%A}zr4LI-q0<s|LGvRe8HC&fyckjn>VlI-JO}sd}nXUzP^s@@a7#m zEW~so4(up=EMZq;QMP;TmoFuK^7egKvySF%x8Al#-YA8`w(5(5x%u?T>i)Y@w)kc~ zKQ~v|%4*ih$?BIkr~4}@DH+W4QBhIZkbZt%)Yq41ieGEJ-~Zn(FE8)Q%ggO6R%m?s z^vR;?i^g*Q`DK})Vl|IPZSu*D!mG7!<ZP2-Hx|7bIC;UTtED1uEu!KWwxpgG+m?Gf z?A^{;*B<tCiRlIf>}c33b%7zTf&D@4*KdU`E=OcbgC+_%aVX|-<nRA$_V@R9bt|h` z!s>ok$}K^?%N>58e&5rlPbY0FDlR^G{`_>SRe|m`HGc#j%y&3<bvC00!<h!w4UFGb zo3~5X*X#lr1<KWm>!ev(S^IiLvkvE&1qTEul<rv3x5~o-)J+1ld7L<=Z@m5X$&)8n zvJ6vKU+s!pzy4}T)yl<HDZEOcZs!$`i+s``2M8>UTpPA&)20s}Kd$_Cj3aIH%sF%B z6kUHX(dtznIMTtkwG>#+KI>LiW|o(iS5Z|JwzFXC*|ft61_1#94=znK3TiJ_Q2<rs zV8t$TH{5>v<oWYt6RC??TQjysg=mRtP36*%iA>%aWjNDkhR-r9X;tOY5ML&+TfpwU zqB;Alo1>%ST)j;?rC0iNf^@-VfryI-JdylGKJRM9?B73rRD@px1pwGm4#iiVz08Yl z=j~n_^*vle#3b*IM0t7nox680W|)}1jp7LOPTM^5&z~9|Hs;LC%o}gN{nGP<>TKbb zu`XNVcKxb_!m2*EUMWE_F}I>3qwsYxiuU&M-A9XbcZoSoab6qt_}#m{u+`ww)6j6@ znl)>F>3KuVaIszaxnV`%Vz(bZeq6CQDCD$b-q9pQb#?Xz?eKLM_EZ)#aCU-10Mu=1 zTy@!XRrjHV-QxP!Qq7$@qIOk$RNA+1-;ZCvu9a(oqY~5%aGcBP!qwWeVS@o@d&>?- z6%~~WYa)$BxLj+eD?yEVB(-{TgNBAihxc^7tD&ErI;<wlnd1`>5KucE7BXNZCk`KG zo_sPS{4BTPtA>*)hYlZJyzewD0T%XNjdXbO?wy~bqhqY8e#;8xpFe+AR99awmvrio zdU11edhK)tu!VUErD6h^CQ>&~#dS#c98H>N+5r}C5m>~y>T>KED94FI@yJ(yCMET+ zudnyl{rz<{n|I>Gi6yVEt&Pjx5$4t}cQ--q_5G<EZz>esKCia@Z%)rywyWiq*N<$; zybP)`wEsljvB=x~*38Mt>D6u?h)>qde66N%>e%cMR|QEf`!(UGH{DbWmUURAHzj7O z|K4lYcNVAT?RvQ^YU{?Fn?{QkFV3#1ovs(V<MTP|>`>?2lDD^}ZrHHF==jwvQ{%KV z39qlMeRFT`?CEh;E3egleQ~k*!Gi};+m&DS8<sFEdvI??Q*|<rY{2qb-RNyS?ecXu zQs0)oy)_k7$Nb)9{cZ<yeEfZ`da-kwf2+d2R9*Q}TIAL(ru*U3r&V9<d}o^-y?lAI z->?1iYW{pY4#Hn!+rWXnBKg%Xy#*fIE{X3w#Lil_;nqiW?%htF%c42hVwIUbPyS%^ zBKFdBucb+Ue|?p)D(SE+ezs$YZ~C7vm;LA1RBrOSHP5P43)DHTtE<xx;ktC`(vAJ~ z_NS-mKK}IdwBF0)TU#>ML~Lw2a^#56arYhx$J5hvC9TVJX3m_sWB2aeOY94iH|{h& zc;ijomgz|wcA6i2b@x!=xmS0YiW5{${W(2j);H(x&&8&&p4+c~zvi>=uP-lypZ!?m z+Wq5Ew|>mOo3rd{t+d0|JUDOvza(-t@6jtOgF)47U0vObvuQ!W!8iBU+sD`aOr3dO zRumdA-(RN~NJt%ts-A0IzV5vcIDH&3Ex60#;`&Bo$0EK%r?VV-S+_)8*wq*r{Kl^J zd+?21)2M*$_5c5YnucHA+?=fDJ8OrI!^%^uLRY_9^Y+7sf~2IRh)pS+QoU_yXJ-k@ z%AN(aP)kZos`h3d+WM*F#f8TCb-y~b!`CrPm_9u`y|(jHue`lneSQ7C>i2tvj?b@r zCTV136tS<Sa_;qn3~SNg$Mc@J_vjU$TUVmI{PXO-`D^3OezY>#9`#l~cGnbD?`c!2 z*Xh|uFRD6p`0&q%?eagKO!g1Znrf1JYYHPX+lQm#@do+#Z0df!T&{I{M_}CfHEY&H zZ7;N~fe!FCyw2#F*&Ngv_}aH^8)upIgSXs?f)dTj8&;V-scbJ;nQ5+P_Rg!TJezBZ z+|_qUZ*FY-^L_vS)XU3!Mg6>I8YD8!HqTGHzAm=r+s*VX+1J+{`RO@X?c>+$@xs#5 zr_bB}KeNcS`^Dwu{PHy)7_H0RBpmOPJu}moeQnt59cdpQ9p#a=+TtU<yZn9H`FXZ$ zA~r4xt6zEc{CRbId-=U_=RZC^4r-rmyqTlA%}&lVOXT(S_37W=-PMWTx97~1tqYyo zHzgisD|>tE=rZ5gr+RM9Fwd9UUG_HV`np&ii2#e-6Q@sir_ZmwR=6ia>h9h0`)8k> zoqcn2I)C)GoWw&doT*uTeSK+ve|>#(clY$Ov(2YRl)sqhF88oqzD~i+Y}>W-XYbGT zTb}&o#YLOXXN>!j&)a<FS?u2Lw*2zd%Ku{ftqn}|b|2lQ_L^nZ8sXHw*;3z+JSuNL z{p<gW#r+ayIWrzVe>DHRZS}VeMNdx|y`P_WxNT$MV>eJUX_@cr7q_?PcYZE@eopsu zT)2ja&8HK}Id^tUym2D})X2-*`!#I&>zK`HzB5fb!`4O}wf%l4c<n7lP@`wx&u7x# z-rhbA3fwMH?Hzx=-Ijg6dezmNby<rREMQoC(W9=;?)ka7$sZpb)rr{9@bmL?VF`&B zJMPagOpe%|C;R)`+sD)6>k=OvXmq%FUHDYJt(Mij)#3Wva&A8Qarg6!#r@MVvVVMd zxaa4y*`RTf^82;Z)8|#TP1B8@Rw<(!wI$)ffkqxFla6_|)t7b@J{EfJ?QgjHq`c0n z-<!3;S!mVsmCNTnY88*u_&&#J;e(^%@lQ^w&);(_bmy^B^Cpj_8<K+^mQ@?f+ZJ=; zY)b;`PT#1>Yg%H?C%o}8m0Hc|{3^BRZC;Dixrd477FX-8uZuO5;E}N|>)Eo!WZ#cR z+;%^o2!HzgS@!!(n@Xd<zrUwnTN63QzJA^`-RMtuiqB8YSRTCGFX!f_R@3Zj3xZZw zJe!$b@$>0)P(re-_@K}$W%}sv_xtHbIs`@kneG9py}N7b*6iy^n{R>|d;kA^-!ExX zVZhd0+`rtYY`5&@n{R$x`UDySt@%-qc7C33O^uCh)t3in&F_P}_2k4v<(Ae~P;XzZ z`i-IAJR4632Zxzv&(F*}+$U>&O6LFf{r}Il@k)EiSQkCvNIur1Xl*^aqk}_CKkm%Q z$?8A9UXPdk3K|4GGv9vxWOe^X&!4;d`Sm^i6}!7^W6@Ku9yeuvyB`a@=g;0hd(lMG z$?E=PGSaqHB}*6Q#ds#}X*yNFx!OJWxZ!%|%@>!wV?J<YhxJa`=ho*|@=OnqSbrtb zcCK}K+U;$*Yhrhct-ku|M-H!~QOlk^HnU8#kM&3z&oD~udb~I8*Xh4^b{5~<S6khg zEUfPLWM1{VhaZp2s~a0nUg+HZ>0b5wj|Z6fcjP>Y3Ek?Pc;PoFJgUFt^vPPcwYRhX z|9QTigPZ&Di;Ii>uD<fIU$>?9ciFLi`SS-FnIm@=sRr!0cH`OE*^zszOr?6+cHfPA z`1R>tIZ;{tzq`{fE^?Kzubacn&c|?JU99!DcXv<s+yCo0o3^<6`#aDW;-1gvtR;Hg z+(F|{%<Oy#1`-?`91BWcUz_2xjLV%*Q>4pF-nkNy`rKDvHA*_dQDP<g`T75^vhE85 zKAh5CZ;*0A;M%&_=zh^_cfOi7c`Q6|c3%H_UFp@g=4#vNZd`fyp_frv>!dYmZv)s_ zE^a>U%OiVfvYGAfgpXVbzE^j=+P1#x#lrT8&1t+0)Ai$@9cX0ck@|9-&pT`Dtakaj z8TEf($IDn2wal3#(<ftjs8cxA-7zICEhr$sAudjCb=X>`)mMe2rM>Iw>`tCMnR9Q? zOi+71%HPe6jjg${sfj6UZIo+Wo!#5p+sl7_3^{WCeE-Ve<&T~}KfZqdzb>z(Nq>HP z1m#E>>oT6^gAP7EJgdXkr#(8-$<W6d85|VEu%qZ{SMse0-<0(9$#duOI@HwIRDXZB z)VZCHp|9%S*Y)*<A09aJurYgjda5ov6uYNl;+i!&pFV$%{dMP0tZw9{mZjd)jjF!9 z$o|I~oa%8X{eH-X=*B}6on0RaG?<m%k5}$|6IS!h*EQ8+Rhax_HQ%K3^KAQWPt%Ro z+FS4D##UKb`Lu3Zms_n!{rct0mxte)=e9WU%nU<NqCRrO<<qB65qqmltM<-2apFXl z?X*=PVY`D?raU^*3F>0X*wsjMA8m?TzkI=h1-G__UGtB%sQjez@Zm$%zSOj|BonEV zXU~>K8cdx!)io?ktZet(;^*f!=HIt_w`1{>j;(Lr<Zy9u8O-$g^XatyjI+;-x<AD4 zD(PIaM#o1@_~glxpt`!Ht!>)v<xUG7R<5~OAN2b3=IC3;<?GKhGP8T#>6&7v#~scM zYWpfy{eHXs=Du2M=Qf_iZ*OiooGi%r{p~F%34V=9JsVT5+#ynC&A9Be#2x07rQ8k+ zOPQ1F9(pLfci5x5bB6g^<&!ZD`JbaZIyh7`^_h!S=j|?hd~8eZ?P-yl(=7XHKc6)R z%^KAF{d%2&g`NHJ+qZ9jXz$s4>GI`^FH0(_tF7G*E?K@jyt@1Kk|j%u+}~L|2GvIg z+2vi9UtSoX@#Fsgf5)e22Ja|(3L2?2$-2_<|L^;H)pecS-N`>bJY<+-Roa!m|L-*Y z{eLEb=+f8Mu4*ZC_4K6N*-_Zi-o7|!C1{ZF?k-V{nt9TuSw|ioZl9aC-t2tuj*ox$ z|6h6_U_NXu!1w=IUzh&8wAA~@@88U-_g{mm-n+X>L)lz>XPF$leS0>jP&!gL*Dw6J z^;FUIwkj$t_4W02zu%fqzaF(`zEafMX?J&*hgY0^bhJBiV^XUz|6;e`4Oxr4r|b2| zT2B+xjam@2GC)Hl=hl{$m$HqFj8@&*s$*@v`;5tErR%RYg2qprI)0^Yzg_wBDX53Z zBWc8<@n`#k2M3!wJ3Ajv4Ub#-ZN;b8M@z*876v>>Gkg$V&?#ar|E5fOMaTl}m~4&H z3972b{QY-MPblJC8|A#<?#|q{c0O6JfB=F0e?ED4K9=fjvwpXuS=qhMqA&D2tM09n zZcBrvS}Y3-f3LYMLPz!1ioVj<*FGK<kGJ?I6(8doALk`s|Nrmz$o+M;pfTIk>-Q!7 z`}6b9pU>y7u2VHIm;kCNS-HhFBp>I?F_T`u=abjWy0dAUFXvu+wlkAsna|8aPfkt- zjYUZH9y3gR8r9>np{ixl?Mg)ru6X(4#bq<3%JmJ8p1Jell~o*<=&yJGkG_6zCaYg* zRqv(w$G_jJ?gvHbL}m9+SHt5!-pXEYdGGbp+JD_{?LAVarwonO?OGF-y|rF_%DTNT zj00|FOr3Qt>fU>u$tOdSayQ({xV}#I_O{&B-%3UQ+UdQo2nd+)xcvOLx3@Rme!J(( zCGXI0iJL?BzI2Rjb@=-8rtaJM|No@VOm<z|v8&`|(c063pnl&Dy_-2^Y3Jwlx-Bkj zak2mZ$9VmoPh4iR*UnqLdgp6xg-zn`{MjyO*tg2`t3A27S3yH$OI}7#)tRjFOHH?h z#r6wNJ==6B=@|F(eGI&EHZ$DiYo`P+_nT_*@5keQ&@fcdlM{kLK|v?Zom&QKN*+75 z>zClQm4E*H;d1|@qOLx9>QvX|esjHgY+l^iSv>Q(vZ7++_WO0SjnmH=<lZtlKK)r! z6Vq~W-`<W6hxOM#Kkm1;>Jy!BH)+x&CqF;Fx3{-He{it*oSjQx<0AbTtHaknJIrri zBC|g%-sJ7B2BFvdj8Dquyq^*FjH7+srYe)8>$n@TB?P9bgKW81)qQ!nKWLWYc=g>3 zlWCRfK_$$cJ2AV;-g^1?`0RW;l~2d(f6dcVqO;6&f7*mze|mblriR7?&`_qH-nu)# zErMTfy|zByewKND+~S56d#*2D^jJ4~n~JsdZ27t$2MgEykSgAKaYf)_uH^@>ep&DG z_3uqlP?!stCU1?Ze7SUb#rM1Aj1@1JPS1N$z_D(zDX1XgdZY0+>`j?<*6x`NZ;Dr3 z(Gt1WTX24-&x@0}JJMrR{9pIqd%eC?VM@qf{?B=LcO`C&IMt%aU}$LQ;_CYF<;%{a zNe?gk+owJ|GqdFVJ=yZ|@|v2O4<A1kzI?p*+L|zJP<N_TJZ?ek?y?=bcVAxaFE3a3 zBhl{n8)Jr=+S<(9+jPB_3YC|aM{UcAO!8fDdAWb_`@P?V1Oyxs5){tPHebJCe@hDs z6BE;mtE;Ccn>c@zy{jX}oqcUh;<YuAB`+>8mY0{$GRX{j_)Bh4k=x>lS67EmzoGSe z@ArGjUte8S6}!7u`_&ocjNsF3tDd>NJ=NmOaO+CMm6`6RWY+ftt#nx$G<C<-lC#s@ zdZngTtQTjU<?1)r%Ju)hznmN#3K|+6&(6+H-WU<FyG$1})oNSy<-qCF-1heSg{<43 zK6_Sl+1EVuM{!P$&SJOTMZUAmUX)n<`TKYE-r%VhGg1z>@$UI>h<i)sWj20({#_+6 zgOdKrq-U-5wwlY=>(;z`x3&4*5@COvk1U|EbWmRJUAA`G_o|SRJuk}r-{0FCs5MnX zgv&(Aw^zPBYOUMiivnU|ZV?d@ot>Re?_JN^e*J|!3nGrww?<X|`}usPVKQ6T>aF`u zuiW}NjU_O-TI%05o{)&Z1a^^%nMRot>o{ir6Uj=J+ts9F@-s3bByWW->y5W%%iI5m z>xzZW+nj#B=;x=@U*F%K|Mm4XsI|3o=T4iSPbRmtw<m9m@bK}`DgVAs`sAsp+J>{w z?)i93nuU$6=-nO5v~zP_MzCw>==AI?el8>>)pa!K;f;;SIuRQV6#o76^z=;odOK;e z90hCZ*`nHE1s@+BE&9Ey=BE*8kwNfsztn?GtTWE085tXUuL<3ha#DzkiwiVA)hlhT zrmWn&)O-4*DIxn8d*!*Dp02O|z2c+(+|sj;pVS9FjdQ8iWSd<rTx5Oj=(-YSheYiI zuP?+*`8nOt^lkgQ^QXjT=$&8UIeCUjW>9A`WQcXwtz6N)*JqpMMy>t+OMQNgQ(T<f zdAr{_2M-=hNl*X$`MkaLHJ#soKA)dyU9NZX<jFO$ySJS=f4}B4@4<ry_x%6&`^V3p z3$MT4S@5tad1FqxZq$~J<8swKpu*d&SE}&Wm&`M1#hnd{Rz<z`N=i~{X6H})^5P<7 z4B_Y7?e`^&(|mgEZ;S4gdny~hyKL>_^7DUwem0zacFFSP)_eVeCO&zR0-7JawJjIa z+FQADrHpOW7MBSTQNC`1vHbI6!2?Et#cGpR?(;5~`RS7A(W|p39b)ig-oYr>@cruT z<J<3+-IjeC^E#l)S3a;hc)6eJ>Z_YFE-w0|=lZ92=c~=D_kVWQ*_X=@kUsy=^Xo6S z<^_l3e0_Bl)I9uDy`Ay(&CTg^eR}n7tzEO{D`Zsf$k*pLHYU3_)H7Lz=d&$fFklut z;P&vBo$9|sm3Mm-gq;5DeKBdD`^<Vt2H#@~tJXbxud1YU$Z(bG^2>$=4;=RF*<(@r ztE6_i+P^jx$SSi83D7v~70$c!XJ7ogbLYO(KcZjV-EGcq`$Yh>cxV0f;y*tM=hgkn zjNI%78G{T=781DY@bCBi|JTYnojP70NS|N(EFvZjBC8m)(67uec=gp8XP@oLh~fx5 zz9vjNYir7Ja2e>tadE;GPw*&UU0q$QiEhh^<jTs*9lLjfM**`|b+fJlFIaOq9H`DX z(Qmo3zW#c>Sz=CCHvaijV<P2?Jm9!$a)XA7O3RilTObw%1qWx|+LDQ^q^QzCL{9G9 z(QfhByK4j<No~CSRz*$i(w@rCzw}(84nAV~=u(4*jm?}hXM8qo-W+=qr112qQ%>uz z3(LvH-Cqh-*Rq2xYisDlsI|xL-j!V&=6!jY@6L*kN>zLBg>L0kd=&_3(B975-8*H9 zNRONH&!0adbf*2%^M&c}zG|Vc>v5m8!R)gVJZwB{%<lbirKzz_9j_hA%FL?v&ReiR zfr*K!puF6DZP?-fjaR!(z)4K8Mc}DL*_(*ob*l><N}imUI4e%8Wk=(Uw`D=W!LMNh zmn{ONEBwj~5z7z-%=tKB<EBm=ic%IRyd6<*lhpprdsAj@Hk)_%-FG_}HyLaMj~)s< zY774J+vnr#AkD|BEgF7IN)Hn@-;_BRP$<L$Zq0Eh=7k*He_rH2^NzD=&MQN_0#uHK z3JG*_HN%$L{n)+f_S=ZHVVqqpJG|@|dFOzazIj<d=Nd95yeYF5>t>yOHthaVj==RQ z3Rwrb4#6~MoDkt+73+50C*R5D%e07XRffjWHTqDk0<DS@&!$bD;9(N6i7k*h<cqgI zT%*Ry7yK_bsa?F^eKzfI($>VSw>I4LdUtJYh*rSLDJ!OUg{*4(z02F-%7Gg>W;$Zs zEzZy+8OYduw8?Gp#P`1S%x1G?H{Wc!8T9YOhC@eBy^UDgnjMgNMax9W)GPIH^;_vY zlWPtqw-`a=WyKt)g%eh$fway2!<5|mFre~`nD$Rrx14Ql+b2$DapCRAN!16BrL<&d z+_`h7ptyMT$FHS7|DHU5zTd4^>Z<4MMH8-O9iEWCL`{F;UB0%O#mOOo&V_e<472a- zF!Y|Lqo}UlzA^duHE&*Kc0QM-K^tp-mvM1%t@E6}Z{I#p1Kce4R>5Uo^Mw~PEJ|OA zsQb-HxVkDdB{h}t1E?`}(Ov%Ps`ax}9=v-eSF-c7o)mlgg&m#-3@bHHE>VeB%KLA} z_388Kn@QeodySdri=N-~r961+>y?r63-6d0Titt|zUf<tY-wflhiqBTf@6w)%kHnJ z=l!VgXI);!oIjnDXMT<C1}B<=uz~`E?{_}eGvwTtbFQkYn*06c+Gz7PWjD6Io-P#| zzh(1Gx5b5-v9-UyJ>7aeju|wVl=A)EUA^4>M$%?E3o<V+dpghC%PZ-|hD5#hpAR%L zo9<fYJzdZA-Q~RP$tE+iYib1-pX}K^d)vV?hj!|@35d2jFI>0~G<^^)o3&L+Utj;% zx3|%&m)wl3{q^PH?fm_ze|~%{d3~+7p@E^Mrsl=1t=j!|zcfJAM_^zeXtteGSnUcZ zXzu6c@15KEzotpA{M&(ufCCG6{FUjt-G4D-$?e#3<HA!VQFrg`s_M<E&A7cySFrS_ z(e#(f6TX#~FLhpU?Wip4rGNW=zmR(IDDAb6hHTZAW1G*loyy|m=~vjXXL+RbsaWUZ zpU!9cf4s7V^H2PWRc*Bu0=HJN9^7^7iY7Q+tlR22`JdzZxV<l~t`>iM+`h{9S5Ma~ z=lOQES$F$Zy9>Iyx-Pt!aUsLxPWAh}dbzu`;_H5@8X6j=_Wl3yxPMLL=4Z361x-Jb zmc2Ci$h;YLz0AMA7bg6-Tjo1E>fv9m>-wu^zxVIA|7XF@C-Y$Aak<r#zhy7F=PqEH zcV|ZG>1l#OLQX|RM#0N`R&I|fdvn9_{=V9epFS;$-(Pp+$dM~IJr=RcRWw9yPGkJ= z^ZESGU$4hco;8b0WZCPB7cYW_bpE`K|6k-;Zx;Qv?O5rXJ5yKuW8OKVVBY-g{~e-U zJr#OByT#<`|6hCwH=Ox5ryjQQn``lGl2yLOEsjO$KF5E&Df_nE+E~iVwctrXTlwZq z#V@V=W^whi-jj0;NzrzyDT(+r$#QeLy0!nZ&)3&0<}3YMZ@)L6^BA*jr+b;uW^>Nw z%g@(y<@s_yX5F`X^F;H1cjT@zKVDW5<n_nV!!_gmzb%*EryM=bDG{)6($72K+|Jt; zwN_0<<;ch4$!fl@_MG3Ads|3Egyn$l_B)4OUS6JkXWHGo^;bD2ZP;J{T3vU1U50Md zmV!C2FD>N;tz--MF*o;M6RV1<>eU_VSFMTM+%{#3$gi)j!yo<VxBquSfB%)7B~v$R zNehNt4s?6E@#dQuXQpwT-~Z{8j+*bUY=&dS#`9cPU;T8iy8G1L{U>uA*M{w^x%g_L zvb)v4?JsNt?!PK!2`nfm=qz|4|Nlq3vdT(+w&upSx3?!7NPPJ6Wl8-0x>BP_D?BHw zfkqz~_Wb+xS|@JLjw6r#JUt)&{eEBF%<NifZJ7GkZy$4y*w(&(nslggU)<h9f_!IZ zShh<VKW8Yg{3(<jR_FEVsmL!riI&;Bcc0GsyZcj~bw}MpHzV&9<*+rsSiaSK*OagO z5g+#6M{z}Y{jQ&XOZoSoIQWJCWWw`ROLby@OCO77yS#pF`{n1|EZcJ%KOT}?_xFsB zyi=3HM;|6O?S!pLA18o{1((AYHYTe-J6qj*=Z?$*1D2Z`lilZjzrDLWUoU2dgOd}} z-s=0otGBKCef--cHQ!k-DJd#*tx6XKFZcWL`?vMEpTB=w_qn^d85KS{67^MeRb155 zM)tO8mSVP9DQj=7>CE5%SFB<EzF()F=3Wok+pD0()jrE4vnaO3*|p1Q(Z1T>R!&Oc z{VGz%X*^QBZJ;F*cgycjt)4F)SJ4=^w`%8_^RHN3V&CoI?ml|xTJP)Cd)`muy>IYO zzW?&RWR?AI*FL-xnd|*-wrRiQ_pRyy%hl_?bKRS{d&-SPff~2WYz*?nF8|)59+Ix2 zTW4$Rrt2cVw`u9++rm$ne=YgDW~TAv@?`B<r)50OSKhuMFVV$c_2|2P>buR}H|Ib0 z;cfg<Q>M6i(Qctt%*mI^p7qT>7-s9ha#5S_14BcheerLfw7rH+jE{dk{&`#Lnyl^{ z2T_TW2l}eY>ZUs!FO>BTnKtu7c*bPO`YFc0%2<A_)bN?)^s-<#`}4AQN{Yw1<|JNU zzukCYvh^PSV-tg){!}`+B{%Wmp=Bipny>w3yQq6dUfy3;;_H&R-O1PW-8~C=T0W^Q z3a_u)!hOs=RpoPxjCHx(zN$Fyj3*9@ln#FgYz(b$lfQmUAfM^O^3y9aOIS9j32ZJg zPG6(7MN9sjgjsJH!;%fJH<!j_m`-W0YI(SrIoVCA(C~JLwwA+F_t$ZOCA(E6>ZeZK zvqd@QUzWZmL&b$v_amZy{&?&uC&^iO<WI$ph_~SUxoBT&ON&8Ph{?i*3nB9;cU@du zCQO>-6c;z|^shh-k&5c-$B!R3_xJ1D+1)eAdU9O0e9QB0{V*njv@^<}LNX;ab@JrN z&2jU4<JPOIs~=za-gE2Rq-B>a_uDn?{_}9}HJxdvnD@?NsT1oK?LD^j<4Jb;ngi_e zH4iSCWv`B7TJ+jfMl0yLV&MCGdl@74R+a92zTAKQxeh_)m`mZlTXy{v(>wCtF)q)q z^YMF~IpNRtNrtbRFsY_<cGUf#!wn~9&-*;haQoA;XMNSv?pg}oF)vnpU&rxy(exs& z{9igTXU<%Bdq(EF&hE(yCRb*c2uqZoQLOq~IjLw*rt!PjY3FA9y*aS+jsA9d+vU^j zPv7~f?)mxUsh;wCsSnrOm$WFhU#6AS@!o1~CBMYaf)M{}^UZ~Bs4-n))OE1QKE|7z z_mOpbDBGprNro?a!|VB$ME}30@^8m9m1GOq(<|3a5ZmA35w%+HL-wPqEw`*Y1o}<* zRR2$nkPZ?$@r7H>h1F6nbdJ82%$-?c(~5Jv*gq&3+-To2S35#BpW%H#-ut`r6Ay>1 z`TNRX<_eC#``bIXtbEVh@>P+l&A6MbaF{JRa_c({%Y)@YrMoBI534;hQ${<=KEJ@` z4-em(*pv5+Ea%Qser@-7`IIF8%RA?;v7Oj_aMhvr-yC_~m#cSbmrrc!`miGL%ctG9 z_RHDSlpI}lM$*%A&&;{%MuxAPURq=rFjp`65c%;KxO;HK^y<cB_ck8MuB%y3&)e$@ zN#1O|apSH|?5-n%9CNM9&prM7>({SOSAzYmm#vlTbt@_^wygf9!_Ft;urT1l-ruob z-c*|3yLT^RYb$r!vL#DC9Axj7nay-{>FeCa$Jf@LUZ-6B`K<Z%pCX&HkEX4+Vfgjy zb*azXsG_^`O|!M-k0xg;>~6g7?XV@~q|kA83l)_X-RNy0m1kE5FOS)_`(^_p^Qx^& z7c5_{Ui<4y;VQp$78VwU569)}r&Rwt%y0h$G+gBw@4Cu3|JvQV%{|(w?vF%#^|fV1 zV*Pfy?7sbOMPy>*cf+T4w%KmFDX%pfO0J!&X<iqdZn*DxQQEv+{U6I;M_OemTAve- zEBbfk>a9uVf-S7g+k>;Oeg6HWa0`Fa-^{0_DN45gR6H%!PINw<EBd=Kp~_$B#`%?6 zSu+-YcFR7csJqv|z}r6bXjsNIkw<3v1%F;#H|!GYw2qve*UEJ*EzFfC;nRcY3z1*u zbo^{<S#;p&W%juj8y5a}F=LNSPsM|U#gG164N=`uYB8-P_s`c=QHD}Ht-*VXCRyxx zE8e8;a#8V%f&J30YM;cE+r!_gDlY%<(?W7{_Xf^D7dH8)>QnjV9__dnFvD)9kvCiC zxlK|<>!zivem)WyROKS{gi&+awUUgf?sFE`pE#-Wk74bTrKw_m;l?V3FSc`+ybx@Y z*ZgWw>j&;vG4x0nUiv7z+H<m+PRtLs>3XrNKG$vDv<bAcqvBDgdgi@7mb=UT9{TlF zHQi~?=X19m9$Ibq`|IoTM@PH=Jhzv(u${DWn{vlAz1UOz_WwLeN=)Wjm9F}-Z?1JY zXkHt%1Q9f{9rkzHa^KlzPxBf~GB2qlB_~^kUM-(1?GUPeegFNc**4B{!g94Dn{OUT zpRb#K@>1&7tj%h2^?wT0d}bWjlzMvIY}1ZcstT)4{;>^TFB3n%t8L59ojWJSzs-I0 zdfwTzwb#P>%4W;5ntC7InrkI6tFBA+<59k6Z_@w&bdc-daPnq%D)uYfbjB(->XwZ` zcjV;X7t{jUFJ`zb_g24mviFpar{|K_O&nLkVw*G12HEw*pV@tXZNl+SPjw<UH-A3o zmwsv6GWTfP{p);JmfV%i{`0+NPlo!vg>O4v*>^RrN&7t0=(NxE0E4xM6%(UXqdTL7 zJx^RIte(Ig(frX|?Q`_UJI81FB+X)f+hp?~L#EoO-7x1)fZy?>g5^pt*H85F3x0Tg z7yDkNXu&6onUq(AvI&JY_#6B?wq?@a@I$kfA7AnL7&B;)fkUxng?j4#^|8AHjVmiF z_xyfmZS(KP<1eqT%j@gs@B5Lobg|mfpp!EU`!DRRE<ZQN@~pdjZOh4$x7XA=`uo-G z?B;<c;ggT|d0pT6_51hb+1J;B*4u1OKflXl18Cv!*X!}_YxN|Vmn>TbT2D|^Tr7J$ zYq!DouX$Hj>03&Cw`cIX7OYWbs}~fj&v^05%HY?fT{pkquaAFPd*{xb7uVOz&zm>z z$<wDhOBA;*S)u|O{E6C{b#!C$)c5~H1q2Rk$-Hb)@gZTYn?dOF!)wo<Q`@ldvo$x1 zX{J-yHPe4t_v+Z*pUXM?E`9M&_Z*>R2iPNamCpHmUAi}Xd57h}lCG_j*@bQ!&pH{L zwz2FFvyP1U+^<jjLbN<Z#T;k&b01RsxA_H!*4$YiI+Hnn<*DxWI@4t|adOFw+`_dp zYO1wu&dD5|u>AN6?&Hp^eJv+13(LCkxGh-qnW1qlr+VY5Pl_9yj&lE<KI!Div-2kk z+?jSF@2{lr%rob<-Va`Db9%ir^WrAU&v&EDmP>5NiZ;$jYClvg+OuiZjuPRpsp+Qr zkhOU0zMM6WH?H^~z{JdKS@fhl?cAJ`^K7ecY{^{geO+c%$H|mO_WytK2QRa6`~L3k z&u_O&`|9rAz5DXsUTgP0nZ%cuRIkcyc(7{0l3feEUn(r$1{yd54U|8M$jZ{%99K2Z z`tRq8{eS06+?I$ei#hmCL^thrucVNs$kYBGoSdA`<R_~YU5_olxa_R1>bbc#rCm4f zR!8i5^MB&Buy5UQu{ON->wfDdAMe|{PHg46>9J>mf`Wb=xBqwW>FMd5oSca_H>H~7 z-PvL1r5XOR;KbGLkoWgucZB(ul$1>UKG!grt(l#FS@Q9&@O6c5rFJ)-pPQ$)Cep%g zU#S1#&!71fmSjq#`_Eq!7`rUE-IFWF`FckZ``+D`wl1Cb`D5mcbMsX+H}K{<d&e#B z?NBhOW7kfa%r$-g#n+lqpN?NOjoB;ixlwzDb)E?K<K0GiA<_prF0NR-$@KY}kM}=+ zeANH*$K%!8m)`a;P}}tR@}-9XnyXf8diqJ7Y*RRN=%1JGmV*m_q^M0yD}7`ma6?Z< z=v+Xi-4ZUf8}~iZW-%HCow(2{@GSOE4M(CQo6)6zUX47O>NmG0idtWe61aIzdPBmN z6&Ec(-Zu=LU|%PxZaJ~2bk^*X9ZNM9obqvhFX*zNT$LAGT6VlXwa~e};_cQ-o1agF zb)vWRnBS|ItL8h)Apc(Wo#ONV7lvrbc6(kIU47Nd&5doke!QB#e*d$xhdKHAK|2e# zY%wu1T6ZPG%sbb4(lp)ZOFN6x#dIP9o;F>Tl$3mPfB*cSpPz?Y&RAfztMv7;4-XHY zmbt$nk@>FF%gQx@GJ>y4ZdE<|;1_PYx4G9m#e!vl&hmE)o!dWr_P3s4QRp<YfMY@K zY%`yEHl6e9Z=JLK{-tcy*;~IJH1of>wDfeTaTUj_!r8xHo2q>J@L|Q}0*(i-*Y7`; zw6Wm*-tV6dF!P60?C%s-zqCHyzQ-+j?R}H0KMUloB6ghlT<fg0j+d)Fi?1$$#ccM} z!|ePP*LQgK-+SSk;S%tWVcwUuI`>~Wf4MXBOQvu~c}BIH?wq4{J+&j`vYVEyU2{|R z#FJLzo$GxSqSl)0-rl}EGf3#AV6DVe(=8ihV>d2XRw5s|a#h=fZ(nlcJH#%uZCmK8 zAaS|)fXMmxp7%;>ALKdh-OHJCdET^p4O%l!I6A)+edqK3UW;4HqvfFsgEBwz?VI~= zqT`aemgS|j^HlicO)so+=Raf{vSN?&3t360TMLE5mj{QI+D#~Xm?d;>ir?armMy&s z7o1zYUc0-jzjr6e=HNn=10`)cE?Zgg?CCDZ*VXEGxb^L|tM*^TM?nnz4o!cztYDbh zZr>=EU=qb>`*Nn$p<8W_7X~f-%6(*a(?y4CJhoN;uWjM}reU){tIYjyCg0r856?B0 z3%*<Kx-{sa?2Gnx<Mm5H{kfJMdMfJbn=>x{2Ce_ItNmqA|BvZjMY3Z4o{bY$tXN_7 zdVA>Vu$X-{Ghe*Oh^u<38dvjCb<yI*o}QkHN{d2!Z>`A<Fsl5NV)yUIW1;@vr>1JB zq@+yQ`Tk%t`%JT3DQWY(HKFs5{`~n9G%Gr_T2D=_txhggoL|1a_#f}?Gu=_K-@H#W z{roJ$Jth3u;ls__|NUJSocmAq>TR>{AHqGh<lHoJ_XwG9J*%>!;==a)cpDp=S2{9G z9^T%`4-d71c5cozP8X7qITIdVdvvOH_=nG*A3vL&4_bav^6rl0?6b$R*Y6E`XR!U% zigWr~_uPp|+IRm<!|!&Zq%RhAT|ei2*>XjwJDA;^S9R5Wh9)WV#LK_dYibmf=`Q`e zCVu1Wea7Jiudg^fdv`wZ_?-F;1=noS*4}Vj;OBqo-B%myTFq8t$ICaZimmPyryC`^ z>b!sTWr^zBw1+!(o{9OTSA75GsVNH%-Q~LUxO~ImkU06!t09%V_jKhGjvZppkX~|l zg}-v$ck44T!8<fAP2;zJvaeix)8hvIUrX-RSmYW#e{9Ra!*|fw(S76Fy{DFcQhf4F z!;0t2@!+q0Z(qXJ0^}ZC;s5y1Lf@M5AM05wj2@ePT<l)I=-6LjejXLMo5!|IW_x~) zeVcMjZR3njZrVS~Q$Fly{IOz9ii%v~?PYtz-6bPEf4!70`}WFzz2Ri;?K}NDk}sFH zpJWWFd)pyZVeL3COUKPN^Ld@(Gnd5r=ilBe{JNmgXWqKQEA}6l_ui~v%buI<FRMF# zmMR1`t6exOtmCH4R?C#m)h;Y3zqv1d(Jw*MRor%3%9S&p-}vdv^KsMEy`WTgg!k!* ziT5q*{z&BS{c5&qb-l=&yT9ei-rafmY2TeYcQS5m(M(KCj9431_va(KgX4U=+JKcI zH*(DG+_|&ruk8A5j1z+*i(-z=GR>~||Mz>KhRB{DkGgrJ&DMmy4S#x6JpRc2`}?D= zTL>?US$`!<)NS(2N3RnqD=RH)YZDR@Rw|bruf9HY-Er4dr>mE1ue&!zgv~?h0PhEe zJ?rn;?R&dzR$g>yn1=@kXsp)4Vn#~~i(J(U#c<PD-DY<FW0x;azH=vLTmJnx^@jn4 zwZFfC=4eIvHlI0r_UYH_@#(+6z1{lmbl&!4v)QY^o?cseJNl*hgStC+?pW4-vIxJ# z?Yv4&(KoX+IQ!G5qMwPM+0GrGzF&Iwiu%U#-qa0x%dUuhXuM-uX0U6<q}%5}3tyZ# z0>kIkeA2wNC6oEU$H&Jb_Ec;<{d>pPYtcXdzqwl-aU~UWCPabMmXsUoxgxk`Hcd-f zc45}bW!kyZjvv{yL6<*T>!sMW?XI_D3%6hT6&A8BYgSrb(6Sjb*R+4Q&~-!KMt6l~ z1xq+<>UGE9w#$G1&0u77WW31u{OgW&JN1&E72kg^X?LcyHtz2C-=7b03w!$etLx=? z-aNz{A0H2LmsQD&18XAXKV9}W&F@d#8dX?czJJ+-j8|7yik9{DNE)|o*<!-5tMql4 zq6}#7Oa9)kVRN6aI(2Pr^lILkXXoeh+y8C;_<!^2L+77AD@%>Llv>WUYVwpRQt!-G zs+gE;Iae$uA`%!-vGU}riH9Y(TJ3u~w=wnqw}SGchZjFHFI=_q>}>Pm)4JOyOrP$) zzwYm=(l@r%-<B{vZY=(GoK-<y<H)tzZ7dsZ$*0QfYFcsS<Yaa5WUhJsJm>eXLL(w7 z4j)o%IC8|L?A@J{m;LR1kN3%DUSB7B^ypF0D(~Fe+cuWHjpE|wex0h<e6XRr+k5Ra z&Sn3%Okb1i&ard7dfnQ*$M+`u*3i^bRR67Vd(yu2-~YY$Exh}G>9#0=E9ZI_OHXC$ z?C9v|NUr^KvIew9)XQs4&aIIDtJ@Ehv2XbK`T6GT>*u)a&!0Q@teOAb^62e(e;$eN zUvYH?Tl2$N;R3avPO6(^URttd>8bkv)tQ~Od3k!)<+onhmcA0<7Sq|WZ0D*?WpAU{ z_~l}r7K0W>WfcjrO@C)|<&6Zx{khx;Zzndn)v6npmxp(Cb!%#FjQu~2zb5PO(W4E! ze}C=tl}eiYifv<)M;_1Wt6qVDz4@W4y|LZ%{*+Ca*gHROQPQ{dqAp4x5T3j>s<60t zcTV?>v&&34v|@b%e!V{?#Wz(;b7PU={h+6^XR{6^G^ovUi;0oC|NO#=aDkJ(fwSt& zucajid8beM`FnY&onz5ee^6L-bj<DUKJ6>dcW|kk_fzJD$K?1LbHDlv`zOzJT69c? zFSdL3|D5Su>)eZV1wmlq?A~>ArR>GUnSEzV6s|uSd*aUBn7KwWOluX2tk{|v!^6Y7 zy1Qj#yTFEfG(UOusw#NRBEj3H8!o=cd+#0MR9MKVs(Otp`c+H}&yHQY9z1*XYRbU? zO;#7b6<Z=pJv}=YdxI<z6wC~mlbStqb75iO!NW(7UQ3N!wPf=>&z-w=UHi2z4HOVc zO6J<DuXc5JcW;~4c{#}8$&r}Y*uvuCU=J0rwBPx&XMG<|urOtH@jG|)C~J9n`Q5ud zE+8<+@8v4R^c{2ep18V#ePV)vL_u-!;w4L3CQTAzbp>lKx~#povA;=CP@2^xXxSFY z=uD50e~c@-_k%rVV)b-=x|h73p5Cr~f-7AZC&svO?gGnnbQA{)DS(YoQhM}6L;#%R zIyyQmELkD(r=+Chx9*&6$GJI{!ShR@nmRg~uUINrRenmTy`~7&t#p0Gy7Cv7#f%~0 zAt<Q6yukzHdKVX$BPTT#grMSuMO+<FVV5~`n3SNx!&7-)pPmEMvrpWt>i$^#{{CKF zUA=vC`uS<LXVQ$-CUfTJzu(k8f4+SA-BR(jQCo{jZeE`X50#xOMMXp=%$juy)bZM$ zFQ2w~=dJ6r&ZeD7Gd|uYyZS@%<daA4mf!b%es1o|OG~-s<m9gJek1M0I1w6Accyf8 zci-Gqs=YdV{k|lP5aG1VGeJdD?rk$4HQ{D9-bLx>=k3_F>ss*EzSI@Z(%EwUcHUtq zKOmgJWwP1+S=8EVdgiM<piwk&)~2YnZ*FXC&foX5ZO)uIug&`V`}v*Q`Ibg+&y(N@ zb=5JScQC<&^%(Q>H~riWb^#nBjH(S+|7k3SmIX>mMVB?Sv>r|Nw@bXfF7|rux;b-X zo}HcTetw>9XGh0@yLbQYI$yb01C~}M&OUUsTYRQzwpcr#?5>5M)zsCCe|^b}t9Zx? z8rye%zD|GF*}YJ&np7?KpZ{#__ItY?J`7md)5CMG>a{LtWr9`8zwD*(q$ssD`FI~_ zVYlBro0k`?{N~x5JTueSvg*qU=hrK^;felIhNy_hhKi3#b^m^*yH962aC39|&p)5f zYiei|lxS{UgfMUEq)9@c<^6r~_U~Q<X`MKADhaetU2kz1JU4kP-ct0`3)Dz?VYF&X z@^QXv>tbKOFv{|Q$CHUwJHLF|-Cd=9dXKyI{ri>u@9+D1>s>ukfew(;K}o6iT$iY} zOsrF{PW-+*7geuxz!OPk$hUWQz1`f}7N1@*vG(^j(AHG<>4l;2e75AGhNdQ{L)@pg zIBc4JydS9CI=w>)$+yt`K9?@0UOCk%tp4NW^7%5c$3)@TcA{JI^>wj*dJFxes_r5T z4%`s67Ci4)B3U|V)~v3pS*0bCSA!6aJ~UC;{lw|h#U+xZNoKPx>;CLme0s$+gwsXJ z-rsxsLTH_*^S;?Lk%TvG+9VTu$kejt$A-n;E2c3mdj0lH|DG>zR<nHTc(nAbdB(Zo z-<@;+nEh?rd&>JHZ*8Ab(DXgN1^u00s*}~z*Z(dwk4jz{49<E>9`3IAxM;EW4mIA& z>N&F)bFb)pbLH$2y<0wyzD-UMYsmi`*7D`8^OF^JE!#9|Llr+xK5m>={Ppn<o~q8C zmj^|U&E1<}%$ccv@{Dd%^j?lv7aHrD<y5ma*xxf<q5I!Os&KyACY7H8lIr@C-d|+- z&-a!?`U^+kVe3cH1#Mfl#1wtl)#kronogujp51}6SpqJK59*#?m;cHB_t4{;d_TTO zx}U249{YFi^|HRKxhc+n7>&3UKHrwV`7g@+(7Nk|=|-M+3TJ#Vj^mNI+1p?h7Bh9T z`y~%AYu9BPnJ4o9j*p%TDSv~Oa*ON5{8q@@cgHwGqS>kGL-s`xuCq_lmTs<od%foG z`j`W~*S^~yO#Zv8X!-okWibb8w7U16T>Y~u+3LE`$1C1{uX{4{cW`;e3VHw7&3;1j z`{gr}BU6t3oh!O}o6zS#k-*ql*D_4bZxVRSq&feXkm2is)<Vnq?zj3xE}h?+kiyHf z=*^R(E-v-wzkPmM7f~>=XNzshoDWF{7WDnNw!-MRSLc17myedsdGbD@@R8lIJ7tU0 zzNb4J*?XjZPG@F-ywkeJg~zYysyw=@qjR=eC}ut5MOL#tpY4*jHEuj_am?mT|8vtT znh>vs?*7(rw0A+`M4R&etdsV~9SLtQ)-?Hfaa*uP-M5T|Cv6x1_<KUZ@9*bqyU0nc zlEQV4-vw?h;%wzx|NmF!1;&dvpB(Mk((ZihS-DZ#73VLz)=rr7<m{1S@@k*|Bqqhh z`F!a5*kW3|{J!?(8%FEyFg*VzU~D;$_j%*9xt)^NH|E?i{8n(nEKmN>t*V1NgL7_f z=|1y-onu#2p}LvzLLHe;i{gJc_q=)8{xL>R(z<Np(x1#NQm_9iudJVDBDQX`>Jqhn zr8BJUkvnWA8}9$U|JA~;su@3ACbiw)@i=eGv7qJP;_SrNfRK=u*|Vd!{;%D7eR}!X z=recTsXUqYY)+K*>>c%Kx9iIOSh#<irZ>AlS!0W^FMs`6_4wS)>&2|jeN?Vq*}u+E zTt9Bfh7AJc-*>$`w6jjCz@el~R9<~DXF)c5l702miAz^U{jzh|&zFDs_gUr{#lao1 zrgJt-)cvq;?VnZh#;euq)4AI-&b@f~m}CE0v%EXUHNO>F3;&M1vb2y>?ajmXtdQ8O zJN9pqs||D9c;?&X?E3QLL3_upR~+IVk^AOI7Vf@L_lU_P+jV`rylUE|T9%v5OOw5m zIJT~@i2QpuqKY~CUPn?wjoh&X1ws32u59BvHtFP~@_j00cNLAe?|j_9So4|GUT%xs zdJ|h>7F?}8BQekQ${L+Z*K*aKem^e|^{>@*hVuUdX^ZUc_}mIKzPYpViHM2fhTnT# z`10L<tvajn=7iF0HI~x)h8ZvY1+OtJm~iBU#-Z!+M{fMxzU1ut=Jz}Qo~cU~{rFP- zq{YPcoeVx_|8i7Ta2TJqo3GW!ylL`u;lCgIRb)>b^%4G)|2h4@l};ai&F!aj%x5;< z&FP)obI^a%r<=|!5k{T!zw%GZvG=)kG3E?w-i)Z9!awh2`)v5r++l7$x$uzBx1UNj zvwsU-dajrh_tJT~m*Rrd&&Pk1{g!Ar(6KV7{^<TwR*ajr*SnuNet+VOv}2DFm3BO@ zb@^Mzk+^;5ZTs`@JAM^tXTD57VN)(x+$e2V{=-<|k!Mod_SF}~ptZ95YME~_nlig? zeRg$q{Td|fyP7{E=jPe3o!(ttT~a9)EWA5CzwWeMW0&xI`TxVsr&}$|7@Or1BZ_bD z51zyybM23L^<Ae$X16!(dl2||#?8%{H+OWVKDH~mxx=)0(vr7386@6UG-y6OyijVV z!zt^0g9m5d-z+fUFLo4sc1K6(k)2x3qw*!!v(^~v%=}|E@gw^Qi};qM50oTd?iAgA zF81LK(fjX?^RRq->-=K@JI7ZBzjsL|za8RQzxt%iPxdmw{kq*-CRaWYVTe&lb~g$P z{&#LpZe)sB!_o&znYV>HD}Gw{g@#|-dHBeB`vcz=Z!6$9FsHhUw@_aAUz*g<tFq-O zmV%S7Z&1>mF7rD^(%nC48C$eK@pl7jy;k0r-;y<zo~z85)tG)z(&$q0Nt^hVrCX-` z*l%1Eb$7O3dj71_4bS(h<hkovvbxSV|9sMxI^Kup>s<bD-p>BS|7K(Dyq)52=Q|5p zy7Pa2IeVka+SQpX8ju1gwTo|a?Rv@m@x4k)OH6(B>KR{ZR`0y9(0+gQ8@U?k51VHF zx>mrvNLc-?A~Ory_FaD}leKqEX|vv`uH7b@UZ?V_*LIt3ietY)b<A#W+eE)Pn$p+z zJ1;FfpSnr4QoZx!Z_6^i13p==>bB+V|KedA$T3IJ_IlkJ*?(86jIT{R>vDYVAtsi8 z&$g@78TS70l>NYX#(J9Y=5=D#Lc#wX-)!q{kXC%CzajPO>ztVvCm)z4Q~k(&+8Yg~ zKN6NJWasI=Q(m-NdV>3*PeqPCYoEVx$oUh!WY2GfrMd_I{{A!V$d61N$tyC-37)?v z@}{o~OAu~5y2mf;&wrun{cq2k6<-dUq!YUTSI(`(OI!^7d`H&J>#lsRb7_BvlGct( z+_T$-{{PkKtF`YwQ^_Ct%JoW1qTywa-uZ5i_S`pmV5aaRa9YhrtCg?sKfdwndZf_1 zcEJ-q|2}R~Z9De+_=G%p>&&3tS@*8jCEfQ_WHw;6J#onO@{Lb<5_@eL?${owiLqpP z?eIoCf8wvB5=v2wF)E2y<?aglLTdSIT^|2mIg2e7xm0>(ens&w6{R{+m(N9x0r$SC z*6c{p_pKK_8UOEnzfZ-Zx?A@S{Pwf-I?UVgswP~=c=i3CO`^{k`^|i2+AX<cwm^H! z6tCax%Ig1mKXh_ORxnw7Rt|RiE6+TC{}&12>5<2G=~+(O(`~}gf6k|JE&oE<Kb+Ek zRVF$zxT@sdivO!M^HlOu*=@PgKXa(PnwnR#bFFCXuHV;JSeE_TwRQ>Pu?5wV7Z?v5 zX=t}jVk(+6+0!QcxTVdkN0+y;I@Zc79lCc$bAM#9)9qiz29M&Z>(z~4s;>)MXua%q zl;DMJ%7TZjlbI~$d#B}HUH@(0+MR2cH94QDd(1seWwv4I2lWS=;sV}D%r-r`J2Kd2 zb;Y@o+4hXNe>r(K?srcPw%FL-Dqrt-W%fsvIS0fn=ABpm9kcXs@4FeRWN*Japf|~n z$t3Z>`}s<Hy6t0s@u^o$cq^@5y!-DTji(ny=JV-ty!gP7{OeX+vgOQ^TjzH|vVz|V zjoEJt^9@UH?XKCoy@RiR@0l<5fBWLM>iKr+75$k%|KqR!|7P;<x9z!YtK2#7pZh%C z%y$<yt>4}zEnu48*#CFFWTv`){k@_|S1vUytX#e6`aIvbb5p*4TbnAFJmbQ`pbH`I zw$5Z<C9&Pjhs9*`^ujLzy4zbCEwA^mE|@89ch;-^7E}H2ozv>yCG|2Z6~ANs9pP(m zb(LnB8t466VTO^Ht_$4C)mfI8%-L}>`L%9|UGI)3+}ADKgKfO+mtP9CKkIX&O+#h> zf@jK=X2siCT|_3upXE|=YBR3BGWSP-%du_mJLmjxZ<-%-;MHoj!0;rsx=-0Hd;h4u zKfZiJ(r3L#+vct+>|d@mcXz{D(OI1fo-KX8-1=Yn4g1-5xUcr*f7*~geX~f=-Q&<M zc6j)d+2`!{&pNzi<@-$!oz&+^n08zfjhk@xUT@)<s$4DkWjlneUPacG3a7j9nk!^o zY&7`&YVw)V)e%82mHyw@o*j`G?<sU^bMxB7^-l#hzP}+AE&aY?!i~bG`Q~+*ckZP= zUbi#nPS^U{j+VLH2Ggr^>X*u1=$er5``4z$_D1Q!zK@!`wWrtQZ)RtFUUX6?y0NIu zr#kNG%{83!8kS#_lbf@<W9KZB16THxtO-tuD?J@%$-Ygf{)?BshEnELy>oG=Wz6Sv z-rHZ_yXETt({DP?u~a$uRT)jp&v~lz)Xv{qH_xXcNt@gJdE!FOzj5=9ZOr99@oz=? z(%jZ}65h?5XZ74&v$FQ<)R|xIT)Hkksq%`Pj9I={?(Qhapo52Otk3h?ye~z5ZGC!9 zYx|_98^6Eim089+_tw2VzMWEe4ldeC$L?lFzb*d95O{u{@0U;Vk$Yddi|zZ!#(du< zAv*P<%@oe&XoiBEpVQA+ay@W+vEa9X+*y^c2bQ}3>g3*5sBCrn_+95K#T$>TyLEEf z73Unw3E_ut-FYcnIDhYcKe@u-dkT-{zVEodW%3c<=*S-rW7>RgXGN<%x_Ct{C^qHy zE|b2<1KX?FZ*OE}@2E{S)^s=W{PV>-?RNJ2tJkj?pZv~e|9jfXzdAj){eN{%ellmZ zgab=U$%fpUS{7%{Wd2V$-DoUhUHEL3_JpA8H@6#_@~hVEU7POrGWoPdbieH9zO^cI zR{oYTztd^*XfprAw-@_9cqVteOnx1mVwd?kFf}W0Q$DY?!<|(=eRC~5vtFIl-p_x! zb<=ZSU7rf+gP*URx-EbAV{YF4UsJy+7p_dVC{vj{MfvKNNv{g@_rBTN^2k2MrzT5n z<?Ly~pVz+q^O=9=^i#Q$!9}OblV6#)uJD#~X|8$q|7W%7!j;vE;(GTkY|2}~CR<zi zUDo-|itU{7Q(7&*GZf#mIWXsw{*JA@`e!TJ8qYHD8LGeAP<z`~&~x*@{(GCX`ohb+ zKOan<vH5YX(mvbPr%&XPlD=Kpw}bES%)doq58ulvELWJ`vP0jqL;L$4cRkL@atS`& zW-VKqmQ0=?_TMf!uX--;VtG}y8u5o8m!F9EUw-IXyww>Io0b`ub}wSJKhO|%@{DEW zMBdH+`Y(9BKOS~`@e!V16Fc&YPu>wbe<1gxsfOL;A7^)d`}uBhc=s~Vu&B!KFMIwk z3QiG`QBu5l=ET9$nU9a1_KQ2(V$L7G?dvJ~9nAk4(m(9|va3{_^ZDnF?wNiv2iDp~ z{yo3(%euS^x8JF5xhl17{+<(Env*?eJZn>Tou13c{qDBp{~swv=ie)4U6E%n_$KN8 ztonPHVTSvnI8N1vPeqI_PnI;+`gtjMdzo5QjKRDMADAp4qbTgz*VafrKNp(E7R~MZ zPBF>JziZp_4d&X@xpzFis@C$4*}6FKd(F4FoO6HoS5NcXdE4{mY}YtNliYjLCj9&R z(R%WsaQ3csJO8z<VqCAll;QQ_eY|q&y~#c=F1H<cmM39*=R@YzHpYkkn|__XK0_|3 ziu*J7lj}cZ3<b?>+m@8eD=ykC|4(k)d@0*m59-~e*?3+#-w6FKy6bZ4lhrC`t0!@O z->&!}%)IBDAyc!JfZ)Y;0c8j4Mfa*Fbv$_Xqr&9i|2{E?;Hv%Kv^aySFTL+mo57G= zZ2zmZKk=)3|E<{;%*XnU)R^>fexJVjW0*cuvz5Vvht_XzPnacS_IE2+^23L1{@V6c zckA^N*RIO=R-2$L-N&>;@Y3?TPj7$NRkAF+xIt;swYLv*VxJW>{7I|(!u9D;%KtS! z-_Dnu42gc=)Xm;e`(Ch(weseDXJMw>X06(D&5xCRyYDFdC%?40N$Jdu`_=Q$vD|$A z>CI0O?`3V5R)-4Tt}IwBe(>zwRc}?F+%C6SZO^rRzIeiy4@yh?CA{rspEz-Ql_g}H z^2o`VKG$zeQ0{-c{0>J|g^KW^#hrcsY!}Pzo6LRt`R8|w-aZNRc=s@7R!P;2!2SJd zR#vk(m482+{@efA{_mnMuTSH@>iqY5|H4`GB{#IX=iSItf5vITI_su<@!GKL>C&M~ zz+JnJjuW6ohWl!N%f!0Py<2?V*2T>&?z$xpo3oaI-0h-{;sdNXvqQKVl@@?!AEbV8 zDM6Bspy2GbJxt5h_Uu{prs=K%VwlWrVeaj1eR>aPZOOcR?4oLjH)33gYp!*9SqbO$ zC5qSABgU*+pPilk`1R}8FN|J+jv9S-c72t*PCL?AliPB?xiYa%b4|YN5`~Qkdn~>< zVS8q*r}O$~g!xkCcT2;Y@2v`*`t0oN;_I>Hmb-eik;Z@8y1TjiZNJS}e0s&y<8swJ z;?vt?51PDr1u1x3T(mfOd7o~(omX5UX<GDrZn=<@)T<Xp>kuQDCRT^r`O8Z<O^r%k z1h`KRP(}<sU3__ErSRVB?`0*D;a^_I|DVMtYh{5tW_Bsq-}Y+4Z2SAA*JDBJi~95y zA43|Jd-CelsU3xn!N+aHda-W5UuXUJSa0@+-j%1bZKgtI1v)xHE-mpCR`Z>8M0fk0 zM=ydHK!*v=Fv%41on=ypIu^J!{?8-vKR?gcFY}#k#<zBH>FaBt-31^~zO{?>kZgYb z_U+l#>-U|i{eJiPgrB?1-=CBJ_krC<ZL;&T{b5L>#!KufDk==h-b8>FADQ2;DL(v6 z)+9rKnVoM>;^$a?cwjtP_UXmq{-W!#<sY9;k1zW2;^J#F|J`M8LCfBDJnpkzcU#81 z3!E}@?TeZ3F#0dhym02<jO?vZyYH+}a)m}m*6FORo3gL#J$n4uviO<L-rn1LDvJ*t zKK%0D-s-)*k@1i;YLQ+a!|<umX#s}@<C<^ol4}v;wUZ7eEQsEo2ij{PU-zR?*1Bv% z{(ZZyuC7-manto;U)<YkZCmwa#d9xNe|Q?Y^QG#`3&(yr+YJ#qpsBOi-DMx=|Nq0@ zeH1kMd-DAG<4GG6Or$=3`Le`wvYJG%Thz83&+F@AK?B}yi!WZxf4mEka{Ufxn0z`N z|8G+KzfaTq^p-ka%zX#*-LRi+fTsrB6DvEfem$^<oAqmC``X(Uaj>-j9d{g_6^qNp zHbF`#6NM;8*swFsNg+RY1a?dgh7b4-OXcUzUSy5&4_k2HRnyU|1t++UhB2#3Xl#-? z@ZiO(C4rlpW*_Y04vXOpyTg-U67kVs%8M(I$*zfR&zEs`co`I2e0Auk5Ho9-_?pnY z9^oH~*75|j9Q?+wozPmm?f;>}0Zzi=+P*xhA;oOaGRH*2+}9zbsj>K|-kj~btagbM zCWReHDm@s)lV12V%-Qg4jHn2-)qMEc3udL&jORpm7p=Pys@=Tgpk;pP)8|g%d8N9` zW@a0*J%vu>U1BhO)v)3M*MH5T?YUnAEmU}?TxEFf6|*zqkyG(?r#mI<AeMVDU(R4& z^hb#Kzh>d#RVf})ok~1&^va&s$8;NHX$JN_Nmu#wc9}}qyR#2Ueoz0A60~Bm_b$dw zH+Pn>+Q0Ek&Yw21{eEBShW^Fb;82)2J9aToN1a~b!<<g-C^MB_Urx4jBD+6wPfwb) zYl_9LIc)F0ESu@`_j8#}!}X4feR|K?Zk}rjU;be&t3lg^vyWa>feWW2k~=JRHQd_N z>YS$`GwImr1NGi_e(YRw@$b)A<Il4UOTK?TcK^I|{r-ToH-#mTNl_)HULA!^5xn1~ zIxF?wzbO>16PC_pW&E?Oj%oSnf7Z=UHwzh9Z-7>=8#7H911F093tltTxyab?!~7)k zt~pC(FZQ+Sc&ytI|LV&v%bM9w7eE~2vczXGM~By&hXI|36nCDSa>H5awXeL;%t&+n zK4*p*8Q1UKE4?}CNYnXCG7-}udCEaKGpP37E3d@ICpNictrZYI7a9A}NW^;Al-KIo z^H{TsbN=TU_hjbJo?-W<mXEQ0-^|0$!qYAv|9r|h!st<l<afLK>dOoNl-M1c_V3Q! zVg~>HLT4WwSjBfP?fIqeGyg^^?dD4>vf|$p_3M(A!HnwPZUUB>47pme6X#Do@~N^o zVw+~Gb7Y#1Tl}rk_s1WfcQyQU{a?sDRc*_@{Oc+kKPOln=T9rLIqoy>Xw${h^RLZy zt|&OdvdFC^Y1Jp$r^N+lWzx>aALOsTWSRT%$ZB5$+h4y5{$$NxZaKHq`}v2Tmw4Zt zKBdMly!Lkcrw1LJE_S!OPv=#o`K8~!#k=PAj1&8sC1p;XQq$+pc<H_SfWW+er=8}# ztJ&%aE}EaDg<YK_)BN{gldeM%yG`RV2jkz#>wcztPnQl%*eJTG`);Xq_0E-&8y-E6 z>Nw47b@uFYy?Zk{-+Vjw>a249jWDjQ)$gp${$4%O<X&xDyPVbF<LsR)YmB~pl2FZ# zli0uQ{?Rp2#~j?w#h&ePuQ~nKU~=kWwojjKomtiY@{3Tm*^vt?|HNb~Ri@R*w6B_T z=E&Xix(OfS51(q)Pn%{ddgS!%bs=*nmMM#E`qIoe)oFH)*?y}z&&8I<KHb}DpsP7? z<I_oN{`6R=xw&k#Tm4FTZ<SwiVT{P#Q%fVm|H$+nbWzV!H2UDx3Qh$c$q(N@pUc(5 ze(t8cctgzs0SzWEhSh%qmmSnUZJA#hYN29otIc-q?i$`3pC?CbyRonLjKrD8=UbQ@ zd87op1R0F)>-VWIXLFW}W-H1+UuSc}c*Zoh-~76gI+cY+r%&-t*k7n-eEN{0{JVGZ z2TweAGcG#9P*w72Vd?X@E!y#q`XuIQbGP?Yl)gHe-^TOU-1hIsP1kqi*Qs0%PYaKa zo}Cb#TU%ZDed!~MEhSvW=Fh?_a?f4zP@Bfx-lN<6^5S-R{%<^czU*6-<d>4=k`if= zk|TMh*}2VdMLoybx5uBV`lmmdKl#M^Jf6k;Z+CrN<bFTy%L@??@A(Pu*6o?%1<uBE z{F?72h2^w<_N&k?DD->2R_{)h?y;|Gr=34fetb$QP<pq!!HIoAN7G+q$kix!eyvQn z`BC$<@v)df(e91!bGFq925u8lw@+3SZud?5o2j7R$m)H$q9(|I;rRDulhf<xUY`&V zR%i2I)7!-9DVzTETE5xb?p$s!e*V(_Z=3SDPd|T<t}OYho%hMa!@nxEPe@rk+_W|` zVaajr)jxl8{MK6W$0Uu1JNcX+_k@$*@2gDw|JtCMH&bWE)`e^KP5Ya^xg?L}tvC0X z$P@X_>Yr;xPuG4sH|tQ*@AQ{fi>16DFM5$;uUGHRqujRlydJkqyk+~>^<R?;M5}M_ zX*-v8nLY7pofLT3?9m*ll3$bZOC8H~g`X#GnE%;a*!Z>h^n17NdGre&)@#*XW+3-I z+uuMZQzv>((b0)Lc6OrMGAr5o6sv+bmU8Fut@T{=r7a`QZu+E&d*&AE+)rLt_h1dn zw6`0U8^$HN?7Or&=DdRct^OGY@}q8@zBBvCI&GfPmm3m}+1*~fX4{?~p5N&VDJq|8 zGZ!8cQ2HOGC&TpN<JR?2t8{upvyI>U|CWA1Tlmx=MTYb50&VVYE|Co6nq7WnfghwB zvYTyh(~Cu0zeVSnsnj^<_?Wa`{vLn%&ReTHNB{5p$G892*~QmQ`aE)Dw(Kh6R_)VU z{O^g%hMdW^frj6b3hsZZZSt|P*dnjHKk{JagA2DTw(S)=^*1~-EH>`<xr19$tdBE# zhe;i8G;8p`&moty^We5!8rqF36Juw93O#${Sr46^wZAc+^4NW)TtmOHQ+ChHh_^jA z=bUTI+T|Di;PSC;wr@=mPM&_UW$(5>YfSp4pL;HRYOm?td#QfO@tGT3)V$k%Zd~$9 zy!h9aooTI*8t+0wxWLqigF)@l_51&w;=V4!$0%d<K{)@<`z6_O%M(vMFZknabN_UI z{I7~jrW=&cpT8H&|9D=~VeeWAu{#qbqhBRjsHbc!3cmZvF56eeev0X>lZkidANz1< zhj;(<>C>{6=1x7Z=}DIL^N_QrL$-Of@A<PSH~L4*=Xc`o4fh0RIwU=-D3UQgZhwS% zubYwe&r3!N{@8q;D(xB`^!U1zt^U=pe+z6*Fa7_;sA%alXVE85udjkc#l%|~8?-xg zO7Fx?EB?g7@RyD6>DKM(56i1xN6FT|x_`X#@m0^9h`p26EN;)Xt^fMzXJJ%*+PWL( z_isL5bdE_*%|4I+jaSAGZyWPv{M)Z5Jv}mY?$d%tUXw1JyJYrAwd!|RjhTL-&H4VH zJ;Dyg^BJNd{1QKYSv|k<a$Q3GGIR4MV&&$l%&ZayMaD~9X0C~!Rit_4gm>~^^UUyy zTE5rQ)e`=dR`g!q`{enP7_QbmKBC*wW?J<>+{^pWC9miC=cC0D`^=hc4ip(Q&Rp!4 z<P&lBhQlc*DQ<_;jC*#zP<^*9&uMYzwd+;e*MIsvb^ZTU$ER}7;Yj&$=cY~U+gHl| zQQNM+QUs^Sl{?v_1w<p(ul;_Z?W*?8ZI%<o|NpR3KJI(y=+jf(OTE0jB0hc8v8(vo zA7fGfZ`QMQ=VtcE-<Y4dJLa2#l%|3F;}hSKWp4iCl@@-sK_k(o{Mu=s-;q+Lv-YRo zJN*7vC|}1X&&W-agdL7^-u{u4)<0`~!UX9<Nu>ufG|EaOuj?t#ORdh{{!BIhGS{`) zhb#BE-E_0FU*oIw`fV}~&$@ziBWdBc^|oy@;`<e?l;^EntQ=W)fvM87W}iv##(JJ( z#s*W$j)}h6#IXGGNu?RfcVCZ=s-D^PS#_h9<^12(*Anc472e)D@SUB}$a2bK@9hi! zU0(}{{X#w7^6p64*}>90+a9Os{*=<6Y;L?LKIupE-JhCUf9ZzUFMXHxqxtSk!M{Rr zYWZopKX>^RUk^DxWB!e~lh5yaGx^B*x@p_oEGCN_zAu!$bMG=gzmM<F)Et<u$1K8U z>T>kDM4y>R_4IWc?o0CY+)dl?^-84C>MEIt1NmOl|2<LNl$HB+`=tFU^P9DmXU1)F zJ$quW^C7*jVn*qcLs!n+lAd7UKmB#%l<Dd9j<f4*?yUTxuh`tG@0S+o_SEmn&nIs@ z)t9T~|H-=bCAr{c%}ky8Qlr&IS)aDcpL(!w>FMb@Z>rLH46}{&ch9Y@^ZS+hJ{DYk zJjs&EaR`Yy-f$u-|G}mF2LWNr-#p(g9H)|;FXjJ*Gx6CJ4ZS~qif?A?|M_EVyxirZ z%X|T&Z_7U3=G5P0m1_T&jc@Jr?**ar>h72pshw|;YRu_dBCA{d>dUm9KC%}k#{aDT zboxM_jdh})eb|mXyQBS^-9P4Z$j82|ZJ8%yJAJ;E&j)?Gm$?t}CO7V`t=eEAyI@Pd zr&&Dj7W?#1$*;r|{<A;hf9(~qKt0x%ZP%^mf3M&4DoxK%`}e|*=fn3WdGh{sqL<pg z3!UEoLPuKp{ey73c_m->H><nvKi@y~_=K#hU+?5c1VwD!R$@JKVs$&;ibvNzlr1x0 z`>qpfl=85BDQ9ZAvbKKyS&=p#?&sV6TR*$3*RwIIbB!#{OkU3E(!XQNEVcBv5p{P} z8|L-5eLmD3=u>Ihb#n2c89ROiEx58S_~q+niJx99OJ@h_vOliaSuSw5y7l9c4UIM* zGxC42u?rX_7`<MtwdPur#J}Slw<Pt?nj5ZRu9cU~sLt;{7E;+=-H<nV(dl<9-0qc$ z^}TcQ$jEQwkv<`O_|OY^DTjjT_k8Y`C?84#=gOTkO>XF>mEKKA*1i64`%B&J2C2_} z^Yls_&DQTp`}pR2<o~lp%Z{F7O{lt3;rI8qh3xK<r@i}YPsPUWy5{_JYv{g@Yu+x> z(=W7HtYr7BgVn}It>+o@k|Vwkeonc2#(U1`+It_~xB44pp87t=_}3+~720l}>-tij zh3~T6Hc_lmHuE880sC1kUGc1E_59msGwjKH%~^41X3yU_hx>0cf3}>QIJ-P(pZRM0 z+Dm3--@M}Zs(Vale*0K!bMmx}*Sw3;7OC<#56wIiyye5kwmHd5)^#LJx;gu*w%bLa zowH^q6idE|IQXmiTfKC1<&TNlxvfSYA6$s5SnIptE61&kP471!i@6uCuHPJcQgXU% z?i-PVyStNKgl+TIo?m-1GeRe=@BN(vALmX#|Ke&UQ{dBW=`-tWn~&x{{cvW!@SAdp z%>}<6l=;c))Q4DEZ{Fc_fBr1vuX7Im*?!jM`zqTfn`T&UG46B@x4xi0r(8Vs)14JB z|0LXxo<4o*v2|VtuP(HeG%)#bi(3>N3(GGiFfW>9mABbYf=ARzsbTl7lGLByt$)<K zYp?lnZ2pW7M;sVt-K)~RXq;48_2>QiTZ>=pI$?iw|D#2bvyvEVGNtbb-Z-m%QNH*{ z(vs8OvuB#`Wskd=-N`9`Dm=4$#?P1DYdT(?c&NMEvVEeSq5X%{C$bC?pFV5nO1?gE zp>_AnnAGDL@p3cw&Yp4aY5le4lbSz$HpXW}2Q9ADdZYU-Kf=@N-{dc!&pbaaslQQ8 zcvkD5#>hhBo#(|Zs;Ak!?@H$HwLdjGab85wqROlT(Qo{JO<M9M&?anU;<lJ|>z>yg zo_K!SQqI)G_Km?7`*(V+NP1=6BNxZH<~*~G=9;L<CoiA>eR)&9$z?UQ4Y~Pj?VF4& z=T7#Go5#B6Pv%|A7WVd@#5WyrTUK5<w7m5HbcxJ+2iEO<DRcg$;&~=Fefg;E{7a8t zxY$#x*7HrY@8goco4q408#k(cejG7<&Y^{CWIpM*fqGlJd=<*S%N%(8_VsJyPfPxG zw61w6d2mwY{7remT)#IJojBYveY(DG?VrrM_spI*PYntU{;sjli!1r+BTJp=$%pne z&zy6PdGYklYq?Ds*KMC@HO>Kd6;3<_m2}}#4=)VT)6=sN{wcIy(rC`hz{iX;#H_bp zE4N(D|2w^8>1!U14KY#HSJs5{=(kil{fe4o#28#Zuk%%6^w!6>=ZmX-NlblW#iyS4 ztR%!e@BJmge$oH^S8fCzsc`#zX2ZWbFKgfSmi9ioo74HfQQ0#6;0%9be}(@d>1P_A z=b7bLu>H7{@71F#!}Q_Xx-CVVHa**-dKNl!ey#8RE9ri7KBtC45!1Xo|I4&y=3jp# z5Nt7jNqf9qP=bX2f5V>T*_QRc-51UH=n=BEkI8_QPvO&BMwe@EuG;)_HR})mUh-X1 zW&W(fqk=ZKTMWOgPwZJ6J2QbR?Zc9rJo7>}Pv2f?H?ik=wl!p!!(uX<w7^b@HP=&B zTkpSJJM;6^S5@-c!*s;B82BgaZ)g9eU{YgqzW3$%w+zpMpF}d;x8AY$&Z;@n_SID| zrk`=QWWHmXD0unO{FJmi-)ls_+QuI(c`$K?er2)Gbu06Ec5^M}6$;94-e2^8@+L<A zLN#fFUl*_KUzRw<T-T=8!A@+e>q<fK!)FV+tHHTSFw;jWXL44!yLf?YY0uBj+BEIm z#{LsGB&r%t{JV3nNxtFFhp8-Q+<%tuJa%sRX8(!o6*Jx~U~Ncumz%wLcKx!vq+2cQ zJ9YmvWG|ZcWUmN=e~;UPO~0jMPX=B)6LF-jyYs?~+?x5hsrNUU@_g0&FO@&*C)2dx zKfBe;XHBx&IrDri)D<(NavYv)S*_9ZOW+m%jO&{$zOjE|IG6WqvgK^e11IJt)@E=< zylI?hxPV_dt?nfE-kt-2eM{!E?%8?w`nUW4y>8{p@2D|;vue)Mo|{Y+Mb!o2QB_R$ z=2e75Xk3|kPjR1vS$5hvo$~U{o1eVYOZ|E*6J~MY3{Y%5S|fha_DAfQ&3D>buY7<1 zJp5nXAEOoe_5Pb52wHTlxG39LGij0arNhVjH%wT^!~OEq7hW-gvL(qI%nR5TCdz(1 z;B;!rx<5u2`s07yIr!y>_F9cs9vK-76V9IM=;M*TF#mbG>*SEcr4!8mE^`siYAW^& zuFyJg*>0Qs`QvZbr^T$)eQx_5Jb>VGBoGu3508kS)MeLuwE0Iw+qYK@;r}8HN)=3$ zrd4tlzkJJEAjbb+uH?(v=RU{wTg>6y-p=!|oICte)8D?-a=#yw%-!uhqJ`(2w(P#R zUs<;&oU6m;rR?rW=5F>r?)Nv#_(dJ>_x!E-VQ>3|4ga?2zI7J)BD6WI{!~8uox{1` zHhz5T(VhLiU$^XB&AV=J{_RK(xypJgp?*g~cG6qE3MSviv~R~_KA)eal|L^o-fK<4 zrW<=_39Y`qzL-IMv(f9NZMT`<J=lFk`K!@1kFyb(Pop|cm+rf~_vf9XudN#)CR()Y zpI@$JAO{+MKX7fy4#eoeI)x&`hK+pUCxh?*ny{@=c3tH^zPY<UEHD38cJ^_{m9~oq zO8MKt4Ja2Et?Uikcd}<BX&g&h8{7Gpjc4Kg2F2?ul_tJk-MR3_MOBDh9l}`~v^yAV zc$co8=Q5}9YTY@gx9&vnS}7EnIv9(`8gv(DJPT@Cy=^)qk9IJdylCKf5aw*C7v-vA zZYjRz&Z@Vm;0~|SBL!YNg`$gEN`*{kW4x}+iGsLBX4ye@7l!Q;T^}73C*GN3qw!E| zt(*`fb+c!QFit$k@c(gC%j#{jPWm1b)dsO0S3`Yrq*2P%fn{6URgmbrEH!ifXp1Gs zu0ZX}=v7l-`d|?8vFu`)%udTchn7n4H#41Q)3u+ySMuf)>s@_rr*h1!ceQArSnfDo zy?4q?na%qQWt8QM`~IzPb#Ynex|pkjA+J#L;B8m!&LxJMAH5B72{w&if9+spV##~) z!+z}7CvGm$QU14~=`!EC#rvMTpW$@>L8H!z9si1->hL~qT>j|9u7AN-9qnEpD@{1E zW=oZX_UzQfO)q{YDQ(?tV!HYJW{<WOHh~w<y`RTTT$7!1ecLk@wf3@y<=&fRV?CQU z=EaD+?Fp8De$`h`d!nTO*JafW`i+c^HiqwS*>9e+RJk%C#QE<zK|#Sx8L3zYmTePO zv}OzHadj@4Sa{IO`?^wI;h}<z+w*q`Sm-T0b=9Ie{=M&m;KEe#8*Y>B*WUi|IJEoY z*^?W6=7rww{xaLw?DjL)PcG{ftk{1DNnB}F^mpB;aI=i@edd<hb-K2%lh@Uh{nMOs z;DLvk_0J|w{rL(}+szZ#95wuT($MC+o7MM!sg~J6K@pbURjX#Ki|)Lxrrjv1e{QGE z2Gdy?H;>J~_O;l_)GPc~T=s@Dokwh>yv{4cGyUDe$-}WAeShPg4^=kouRr#N{GU7L z<a7PLr_t*#)=Zgj=-82pWwt^Q^}^j99UgOcTJCDtWhAv`ONs6i`=faxX6NR3&*_og zmJn>)zHZ&wj@BCEMP<jIy!A||-K2k6Eq4Aasph?#+diMMkw5mQRPnOa&xA9lQ{s!5 zs?UDo{&7zD$8Y;rnMR-4#MYcSnBkdl(ER2X$%oPY%;skMZ2o-9l3VvQ@b|Tx1D{S* zyVwhLsXNSm9S~J}(lhDrtejo71`8jZx2-lzJ(_j=ib`qv$%hx>UVL;^nt0bY;oP$y z_gL)ai=Mpj#An*Njzz(?DRo!t)Ss(t%=1@BHt%`(udU`@cSncCLN{pv#vPIimPQNO zN5`JjE;_o3J3q65C+tI!_A@bOLo3&(zdVz#o+^1)n`#-{Hm%Lnam#zTV-H>%M4!9W zT66!I>b=?&R$=?-g9inLGwNlZ?Tnmz&hYWm<U^I$?{y?sUfLII@b)%C?w`#2mQ(C% zn}5cxKY8Y!N#lOoBH8mk#b%W=KCC(`6euVtxKmN;?<HyGg4GLWguP?ElN7+5of(l= zx^eF8?OHOcrp{UVu%xcUFH*m=*<1PN+r<k@_&;s^n$7w4?E5s;iNP-|PA~Il`n%`j z_s_@dGk9Km%|GFvd~@}~FTC6GcT1VK=RW;r`{aFR@~7a$FFfB=4IXIyO;~3n#t_+g zMo!%Ayh8k+w_oiH^|n2Fz0S<fPiXUT-X--J0&|)7eB|d?^nQazSZYine+R3MnD^K7 z=|?WvYs?AVx^l7C%bMRe%ihTeo;&QUyrVi_=JdCaz;iEMlH70FwI5iZ@T<QovAC5@ zF|BOcw}+e?YW?(eeD}ZksqVzgv1R}N)ap~B;g`>!m~-g4KHrwBf&wo8moM9}s%x)_ zrF3%T!;5+)d>jj^_ZK9EEt`JZYRcJX*N;!Ry{~*_{;6Gsj9>l+cl|A$x#ss}k9jYy zx1M9%_k;b%rM>YM#@AB9X6ep%{w%*~?&`XGEZ@4HCS=N<ES_PbGvyrPz7js($E}f_ zqUXM5oxi^6ymG?<hWDH9KY#YbBFXLRzAyjWk8WCfsKN70#TM?n%rzhRITk$M;4$s( z$}c~ktbMTa(th3jdPm+ccqpowbexnv-9Po*D*M*U_7(@eS=VQI9lbAU`oDVLr}vAW zJ)YA0{iXxc>3hyE4^O|p)`a<Hjh#+|;%BXY^Uh4&*PZp~%Q8)#jq}w*ua+!*Kl{%b zmb9K%zTXvoZ(Oe)He>gn>TlmaFRfl*kQAo2@#em*CKu|?`NYkN`<<I_cd#UT{`rq< zysyT+jZx8VoKdv5<rm-VpohN~?|Prooyx3VzT=B^MIx_*+3UEsvETOI+<V<2N$>Y= z!_A*Juh_Kz@VSM1f8I@>zRy@Eve0MC|F^7crHLoHxo^I_^SjU0#U*R$MRu2^JPq5k z4cFe``dFrWEJNcW>&`m`YzHzlG_A#b^|;zz9bVYW`R4P?1AkgX%$DUOe$3u$VVkWI ztZjb$?N2#rei`Mr2MjL-rQP2CH|5jM7mYsmg<Y;J(#?taD91m)@9EBu+^6;SeEN3m zb8eWx#rT}W<V#b39gL~fIn(JQXErHy8l%teB<|?oZ5zJm?>!N{yV1FFtE75sX!hrq zAH!_4CkNe}wPC{Yy=EUiy?FU%&8JiP6WV{XZ_E!<F*ZxP_TkY6w$hMPf2PxXZ3aIC z>obfSj_+Rn`R%18r=OcVPk1SL)SWXr;<KwxbL7Edf7hw84$t!E96C~N^z!4iEVE@x zHa)wXX><4F{kj6X>h#vnXRK%5`91w=j!%qJ$a0fq_M)YldsbgepK`8gd7JQTQJ*i1 zT&}6;DORmeU#`8B<Jl7px1N6@r!RbunDs^W^Zf5m+r!<BjCYnS@G-03%;=_*m>R?- zE&OPv*_KuNG;iia&t`E>-)v&oy0)`(kEO`8e)-^)mOIqf&W}7>_WS3q+SXjwX_l2- z%5G;B*XQ$e3vb`>L;qpKw7%3MtEX4(45{8XtyXSz<m4%*X6Y|0{C-eko}_8}o_XMc zdsa(C)ssEvkJzimyyAT<dE&u-y~NBQt=p5sjMoNRT|Rz3CI4s9UbYW`tN!M{J|MPe zcX(-1%BGwz4$IzsNPlyDb>!wG#pK(|4T^7g*y(@2m;LE`&DZ<xy8Fc6)VS&B|K4+% zPbT4M_TCR!!si~_zTW<G@<v~MrTcy9zCl+_Lx2B1-TC}!;>4Q#SqI!XHP`%6VA>~n z`bg2)E2sBAU#l7Y<AtREwSM^%SA6Yk{*~ECPu^zm-!i_g!gNyW)?Byw^G_bs$#|Lk z+h$#zUfQMyM?Lm^pLyWVl8|j`YoDF%Je(2x@9~;X){+b4^OsHer+2CHyC6gSySit# z&+<JIt51nN+yCf1zrNe11#eET_+qWtTpb^I;?fb_HFK<cH`@NyKl}XU`3Kj<HW+EP znszVB+@8)Q{Qu3Hy)Ru{T(Z^$<{Pf=;ttC*6e;dr{njp>HB4M5jM+6zW1E!5L5GP~ z8`j-=IxFJf*@UC4+UwY~^Vp)}b@*8)ho}5Z<2jhUy6O;9?fRNE;j<HVvEI^SxwU2H z!7Z|#Hk*r>p9u<1iR+i>owvngrbd13r2U0z8?BvYOfzXdXvg5_BF%PYHf$|Goxs^= zb@M;v9+Oadd;N#o`h<6HWm2+Plizm-R;oJr9=m0oZFRrOb#qam$XqXe6Sm8jW`wOS z%sD>u#WmX*-_#cL+9%t0q!nlAtp0Xx!R=J>7xPMfKQ4MEeDcc0g*y564G$+T>X4E0 zDV@IGblu`fbG08^+_UYv|AXPj=h=!2ed^Ww<l|nu&M&eK?s==+@$dheyY)F!OXvOn zyS)6)oXNi5=KMRH`TxO`I_BIeW>eNTOUkl!4rNHr+1NOf^<ZiM`&!xFR8zl;>jUNl z{+hd>^#N0S<d(<b6Yu@=D1GBwDv<pqX*16So`f0Op1j+la(kNnw&y-&-{-tZ`~Gk7 z(k%|$99te#+D+2dy#8~}>#F$cmN5l;fBmdk=Pu4a_nb`Ho1P2%KiFkSUn@H9Z)|z_ z^4Xa$lH~SS=Wp;;`FkhC=C6Fv=C!kTZ<9;9yXc^D$G=U}gxTLGmpjXU|7Y@d)49M$ z2gJ60*O9O}wouqm*}DHpqwN*G@LT7s_upb(ZTDcSdpCP~t#0*H-uC^+XWg&y3%&Sg z;lc#QW#_acWTqLfV+c+cHO_wV$91!LVb%S)HGf>q`%~ucp2^F?<Z?*aes12q|5v3q zyb+G8F3QMT^hV~N;w|@=kEHHJZZ5d<{`Jvw$J^4Se!l%xB3DylSS<Nx&#HMb2Y$c) z{+YLXCv!td+F5IB9mBcR^W#q+|GKs2=D`n!4h;?}HqXjA+4lRJwtv2HA?UQflJoPb zZ`LeT?@}IT|Ni;$TI*rwSI7SUuGu;N_|sVNHrD2rX6N^BZX7<AYgiZaUF*BsG0PSC ziYCd1-^HHxMqfT^w_o{o){h)7)!*CJNyx05`PX8-O?}7i_^Rgh^Vi7!T650&nY;Oi zgj(+S>1$>AcClT*>-qVhoz^D(^t=rcw#WHD-acD@JipnyGPiEV>EC)~mv0ItoD=q* zA<fJ5(&gOm-Gv*oKRw_U;A-WZ|J|vi?BIv<6JM~&)x55*sWLdGeEN_;_L8z_`|of5 zbd{FRuT4I;V&U3G&7*gU%MV_tj6Hbz{Pqvm{cBHLJaQ=Tx|-*tlEV8t8#0z`-fPKp zZ=<()%Yi?>Z>l%`X!^RmZ0(ay?HaR>XDTgK__q~H9ow7v_gS~tqtC0_4)rKrWP0Xe zUi8F;X_Nl{bq_Dyezp8-g0=B!vH9HX>r#Cm+N8Pdvb;LEp;A11vfs)7e;S(o<sM(& zUbf+HYwMoPxvcB2TrGO<>eQPbeq7P+--`K`=XD;uxvkV47O-RAtnd3g0*vn6Q9a1? zPS@-CUwyubKQh%WE;@Rqa^<w;@f{l;o?LoHD$xDWkGj5~Guofs>vmO6Im7+oUngHe zkM#Y|=PsJZ%P85c@7jIr_oO3r=dY_@+WC6=QRQbWTt>?^_|4=Wi9D{KH+|aSGj9xT zTkmc>vvKy(s0_P_Cu8^PNZ6WRe6#e9=-q?Y-Sxh={hyOyGI`}jzH=%M-ncbi^jY?; zKVo{u^UG&V-~4+dvHY<o(?W)iDn6b4n;&*d*j&$cub=PneBCCdN&2<t0>${+Wu8la z{r*$SuK)BdJ(a$Ve^*LPT5Y#*)r()t*`}AT&3gXgVP2YEl#SL04slWAz5kv4z8V~B zIXBa%|Il&SyAJm{N*(XLewlt|zq-ugv_z||DxPYM4lOf3hkv-$9(qUmnbH34$~)EN z6V$JTZ?KLyduq{{)pLTik9Gc%+ID?=!4`G4g$9lPSQbX`a7?!NW4X35DQ<U@T>QZ| zHp`AnTgtMl|Cyxn^3uM`j1!kg`)JHvdDBw-kG-wru227WvNJO>om6>zW(Tu_jhu32 zfo%En(EdBhAB{P=CL6AM0*>*;>U_bA9^XGw|9ciwi*x#ONvY-U3go`q?VMYE-R9i8 z_GzDv1Y64d`0$ZiZpzo(R~|BV4ySLt9cf*E#L!Lb!{S9-b8>#nxv}WzW45w|88cGS zdn^Rb)Xmv0rF>=G`ozeCZfSa}lMa8@o*~+nV&iGFZ~k)bqKdqf(vNkMmOkc{kgV-{ z^s&xK{PjVDS1w07E}ymLfAZn>#Ph5Ck9D*g?>sc;$)nKLCY8t2C4Pwa3#$8kX_C`z zejW8Yxu^E9{k6W!oEHwRSns1S*Wtm93%exF?*C!vFR!0=SpR;4p9#<3-kh2Tz1p|= z1^T}Wcev<TTz}}%;;<(F&S#5P?>~pu$W7m;r(&@&Tle<lsaNbLo4=BlllW{K{`}Lr zP{XQ6p8IZot9`cDZqcNaNftAw^!&WaDa7GmG;_z1U7u4oe>z*f;sl?Q!kH<b)qVD# zd7pIh+Wn2MzxH0S33JFzQ4~F&|LEcF{jmX8;^Pmlia+|}p}zUX>^QZBF6R06Tc=!G zczyCmiIW9p;a|?XYWOs;oRlc&t?u%i^d&aMLFMH$lVf-9{4`Ho7%=0)A1$f6y$_nU zvp9v9ZLWQpd$fb)!R&?iE9!s0?Rn1iuCJ-m=F=0WZT1%qUA)oCcya3Wi3_&wn|S$S z-8^j%dC@x)d?xX{eR%rDqlXJ)#D(9#R5nnZyP4mBD@{N3?r!guFEUbo>tEaSW+BUO zyP6rA3mF<Uy(^#ozk6T~ch~L^{-)yR8X{c+@86`~@mCR1bCJ`2eQ)`rCiji4>hJa$ ziKw~s%&R+B{pRn3T>(#SpPOnN7f{gA&#$s0{q^cUPjd2SWtau;bBz+>a`lLN5_A05 zZ_hU6p5GT%P5ixk*7?UlrR9507T=z<=Ff+ZpXHv)sR($*D24o-ruRCgt+S2kOyoDt z^}5#oIhtFJS-<Fx71FDm$syGHOh7h!$CK20@yk0OUwm7$C5zep)%A}hKWo2S`71oz z?aP^6AszK)yVw5yCLFbG{;N%!Z5JLo)5X%xyvRYrLE)NzjZ6NH(?xqH*?Ugf*Sybo za)`HA?!tl@Ph6`s&*<!$d!SRyuk})=i<|z#(>qQ|RPL{MnVV`<Ts9+r*0=tjDoe8i zFHh|_Dx|{9$RxhgbJrs)A>Eo91<!}w`;+hgTkoddJ6pqN+lP<hkH5U@H2w5V-1FI; z+TX0-%OAcux~962HJGpd+(j0abo~^+PZI7)54p3tV-9-GvfSTr;i2uHvOS7D4{z^G z4l}<m;~%$U{Rx&nZ%*-Gqt&zZrTKdMO8V*#Ot-bXWB8q`nm=}(3QN;tnRJcG0Y+|r zgpB|4&3o-;C;j#5`^Tr-oLQdfr969jt@y58f8M=+uDl;p*KaEO#(LjjncHQ{+8;Mm zd^6@8o>Td9j@2DLahc+ZNAB*iFUt*QoVznWFFiL<el0s&`f<6}vuvh)lsmwYzMfOJ zrs`wlFICS=rU?!zFRc}Aw$FH}{%ynFe*$x5-^$#)exg%?MSShkiJHAOdy{0}%i6f5 z`&-X#|Ni;o!EfGq#v+{pFESsVUU<ADzAD<$YhJ|ZGl!)kzrK;%XLrx<`NzL|_WtDU z>)Y{j=d4-Breq{uezi3x|Hk==kKdM*$vl4DmNhTpzQ>9j)>iSIhxc5v5{iHG@bnWV zxtOp6J#Xe*JiSNM#zH>owRHR8jVXU5-1)a(zIpjvCv*OWca2>8<^*|O{o8Clz4NgA zhkK35CEvbWynOLcb$;!+nHgr6n;lX(MNdDN+b)+_?aZxiwd<u#UB|Op-S96bK0de` z8X~%N^T)>an|t32%$2=cBKP0c{anwUlV=j2PVTncTd8Vazjvat?AtFTGLKK}bL;Dw z{w20}=AR$+>l(JpJ?zYFE|s~ty?OrB_X?5Q8mA`vNY#~o($Mt!bn{u3o$Wo}`g(cW z<GVZi_eAzTGc^8GU6!Bs#KqlOozLvjox+E{RUh7YT|1YT`1sY<=KISZ>+bn}$jeOb z%)&=AKeo&DmDSqy-`JOxW!<&1!lXS#$4y5}S<HKagw>RpsogU_9d(;mSNs3L_qC5D z-20E~ZDv1nb@uNJQDgq~$!9m`U#QtJciy~(#kDm?OcPK4)GNCj^Pe%kyyWuz%V#^8 ztt;LaOnAAO{rOF)*RyI06S<y?7d%@mRVJUYeEI(VfAh-x`emj`MjpDAns~4N&G8Wa zc;RoKUmkpS+HRHd{#}!AvWlAgjxhF|q<2a&ZPGsJP4ds4KCeGtynk2!?#GVH&PAQM zb+db>=()v@?tbUoyJh0re%&WuBspA)XB7Wed#80u^7}GVi+bHqSJ5let{d!46)rE3 zynU)}PV9TO8$W_{{dL}{$(>sA;hoR22{MLP9^SrgvW=rS{m6~IJDc9x{yj38aoHJ- z1qD~Fuh{P_=*f-qlr`L!^Fv1L?X!8^c{*ooPm68%xRU?Jrg~QUIU6TbD^;(keBkGI zTv6m~qTfrkSMwtcZMHo3@#lV@8+W{T?q7i}gW7vRadn%sGMFAIl>hluTjpvWwEJgb zmi2GNDJQ=yI$oJt_feF`@Z=M9YkS2ltJ~hb4i7T6uxndsELP-yac80RL)Y~|{=BBQ zuWfv_H1Cni47=4cy4H5jv~Db(-qM}5vVQZl-r3hTW);i3eA<zH)q0QVv-FCsmwsNn zR&Mb*$5eXy8;L(_mZcb#mL0q>`E5gjVfJ>rBbU#I1#HuHRERpzAHQerByOhFGIDo5 zb2d(2b@T6y+BsfqGpzCrL*>IhPuAwyzV7(*!Ywb0&&}!lSaNVn;Olg||NbVnGo1_W zv6cO`I#_&LZedO>50l`sGbbL-+qCCn`|()qi=uCS891E%rEBy3fR&$mqSuy&>UsO; zPU5bziLIahM^EjS#nlb1clEdM|CK%ec%A$GMCY3q%uCl~f0Fp!ZMSRg^<UQmKX<<m zzC2lC&gMKf!}7Bh)em`$zE6MuIjlt1bawbBKmR6&ln+&*5hmxJyq~1<a#QS^pK;rH zbpMMtGhT`}_!0kcKg++YjGL0buRqBZ4qdV&Tl?Gd`uT5!f=+*o@{+f3ySmW4=E^1& z&q+&OYZ)uQ<#(|B@O<IZ`x0|ze6nx&&+?D^$NPn;Gi*ClUPisLcPmbBT6xjOsZr(Q zJm)=sFY!I<-WFdnW4emxB$c}yJYYqc58sNHUAT4A*5ZuztmAWjXIH+S*(z**aScdO ztQxbD=dNkbY|q)({QHp-uIM>Q#WVcK@);m{lFCvGW+gCdiAcHwNWJHzDUWzMAgrJ{ zj1$4Epe|#DNnn;&A)5<?rFpKw1I*GqDk%Uqf(*m9`;{?H+E*QSXHWJf?+GfNlT19X z*>6tU<b7c~sKnm&L7vsq%T_<{-qWw~lY-{#*V$JIw(RAsu4V1&yIDLhsl0gE?OVpV zi|d>t*nu=~zVC|l@jH5NdS_Wq+;O72{d%Cu+eEv$A69|v)7&a4;5n<{W3#Ev#yb0r zC-uOg!y+NzIg6!n=TV=V-^*>bug~A)4Gzde2bD}AmPP!ZPp!{?{$g|e@#B9VZ+-Ll za{Buv8tQY;^prdkz3={Y-#fwe<)2@2Ywz4|(SGytr4w_^dKal?SH4f+&bQw^<!9x~ z6#v<77n|B|*8bS@&#N<ePx&_AbGdi^-{9M~&3m#+tbJ~@#>uk^x)t09x9D(9&tF)Y zaO8Do+A6NiCpg%4s?Kl=JDK(BmRq0uyQK?l=C9eJu>FpZit_fBQ*G-4cUwempYvyp zNz--~&a@}NVOL$=yU5H|@x0H-<}yjmwIoni|9)*x@A-F$Z+bN5&RiXrdi{C(kG~7o z-}vgIw$?v%!|vyAUf0&#z2cN`Q~JvL|IGh){I9*{m-%p~D*tD>?wcRph0EOdZ<n1e zzj)c6Hs!<LCGYO}d!aVRX5QgjyVhHLc)0pb^|EQEPxCJne{@pu4A)*gW!B!aTT1^L zt4EgynFSpFbV{vF|Lnn-Y5AE8ex`{3uh}$H_ow>Gm^k0tAJ~je=->BrzU}$%=l|@* z3$41JU0r?il4+8->eM$mS&LuK_rJ7l`<w^&u1<Mxsx(REWf3TzR1&@7YNqb?3;7)L z_lEP?MVq;2h@MpuI-8hxlTB_;ZO^l2<=wwnW>~GB5qWc_%VzE$C-vpi{S+q4udSRh z>854#>v{3siS^uT=Qh9hkXf<t+lRL~D{dd@fA&;h?%oMqYeUc2{88KgcE>(<T~AGI z-RXz^#B4G$I&n&O>8e#cQM29H9a?`rNlTqDajJi$ujtafXHDkXZ0}t2$LZ7NO(#yA zT3S%a`}Ak7iRt{;Z6as1mKd0K_w?u#d7oOTcYeXng}vRj;*OJ4ddps?h%0Eewu*0h zSg)IMF}VKt@z3`kx{I516fWA=_V%l;%-c>!4W9+}jv8Xjhs5uvskFabSZ8&f;b!{v zR3p<%?#~0lm*(%wP_$d$Rjs6aPh2;_uSD71PesAHf|oyN5{pB=aP+Ee8@7K{+1sg* znaRmk<t@=yE~K8hVqKbduyialXH%vlo6rQqI|&Wjc4cL~nw9xhs$q*s(_YR?Y-|l% z4vMX{Ub$-J;+<=!yBPFtaS`vl6DQOVUgkOJSh|BsW>D+<dk5MUz2E$CsT)^#Z{6Dc z`<g=ccYQn@pO<ufkB?Jl-o3gk&9#s73>_5aD9p3Sm-T$)T;Fv(S%rVy<9B;r3Fb~Z za$ZHl=hz1`r%CHJx@d>0p3Xe6KF#~CSdnoPk4bo7Smm~Z48Bj7uF2C*JUwl%NZL}z zeCDZ3t=r8nMsJ^WX%*wN{F_eBiDH?ZdS&bMmj29Xo*b>Ad)F!Is@SWnPbWF}E`)8K z^E6htYRM#(yIXiVRD3s;y!-o<?Ot?%@7tax!Pm)K-re@kxLLRA^ryCKtusYA<CGMn zoFCljhj)k)p1eAkw(v{-=2Fi~6@F$HE<`(hJ?G_hx$WB1bU~SUPP?Y=_2oSEs%+D) z6pbb4PpKwbte0P~b7AL}t7~&2=h<)3>;2R7pupkE)h*Mv{qgb(n>w-dTkg(Gmfh<f z7kW<mBKt_jWs+Kail+2D&*$53OIaExl^RvnmYHvUQO2YmWg+UNE+o0P<*kj1=k>Ux z717TtuHRr`X-+oxh`HwC6n8|`^Vc?>4wbtCi%y$uG@A7wMonZ{K^<ed-Kxazjb&B8 ze!qC1`Ml)MtL0L>dQqp9gQY5~j#}NbuIM>8ugr@7{qx7oZ^QTIdR}sUGCgR<H6P!n zaZ$UgUcP<%=*h`@f|K2!2S-g>uy9vb+cv$b>gtzSuagpXI7+E5ZT<3YZJPIG&s|m3 zFW*{uUf;=<GIh#?tGilP%{@Ek&D*8hzpJS47V-<w^}Li?)G>33w6j5f*YoM0{y9JY zr!8MwV!i(B`o+)0?=N4b&bY8-**T48>m;A^^Xv|)4B7MBZsByZO@BAG&aq=|%-}12 zcmGJNt7Wopy{_l4ZB0vaGFL3zv}x9+JNB2{XM6!=tJ5bL6q=uw@_v~X9vHc))&8i$ zoO!Ncb&99ir6+_&9=~_bYt<?4mA`_S4oRjwofa_5`bxIO{#k9iSf*Y*eRBO9=0hnd zPlGmDovw48q!QZ}eJrA!yLoSS9_zoRga3BbbN;z{VUzK<^(Swut@7}^9`@$^|GL=i z{~tYzT~nWSw)Aeh%FAQL-+syanrBU45_09T_~*C>Y!hZq{KmdO=Evs?pYk1;e(*oA zZ~V{nuR25WnSe34-lcNYT@ETrJSQ!AKW*N=8!6KjJSVN2z<q>qke=?p6a=xgUP% zdtN$wvccn0>BfIEO((}Tsbn_o-BCIHdcCJt;lD)>o~44?5=*kRX35QaBc$Rv`GDdv zb942T(?C_GCuMDjB_g7W?WfInqoktQsv;q=<4b9ILP7#l)<hN0=f(<?rcAP{ePcE) z*Y2C{y_?6YR~OItf2A(z@av>GKYUrgi~A^BE6=@oRJ2A)I$e0ulqRWZ=>ZXU&GKg7 z+ZD9Q>-CFSGbX8cUg7}Nb)HSi`XUqNhC6=ty*5!@<YeNj9)re(_Ue3Lo1ZN$d$#9? z-EThGMTzOEtq)n;>w+D>?%U_NHWbt((mTF(a%{sA5z*gs?(+U+nbiB{--`Z8sV^tT zUQG3RelNcM&|c+hHJjfTPwI|ania_C*r4Ii6YSe7qq~YFZ(8zX70*diR=sgl$qf2p zzW3nti(YY+Mw74Iukm=EB3>eT?#pqG)<ew?LCqzVyDgxSsHv>(_w4(|#W#cA=|&$s zBV1ka{zs+nujm{9Zq!Z@dty)>B{lPM(Tx2my7J{c68+OMp6^Y6pIjGbb@TEv!}S%K zxB2^TxIL11zjwowOHG;1>+hSt`f41%=JCHrGHL$a>17A!{>h2v{;PcN-pvht^Zzbr zsI+{U;y2sv;w#%P%=7KcdVlK6NbOYid;807retPH+LDQT7nEsy@GAJS^!?oE{|Dse z%<>4*lFqn&=+h*fOHGbVk~^n_y?gqk@^FvvUf+=EqLZeIsmz$>SQjbk8#_5@or<UC zQN^@LYWF_6-Fv-fF1vWDQ;MPe%<!|{eu-T>r)PJaTfMBKf3}dwzMqWzY3-axcKysL zX7#t<GI8Z^b3=0ub+h#;k3Y8V`Sh;rnacy8^xqdg=r!csiz}2j?NrUV5p{M>Mnj6f z`5B9FH-#vlqm#X7O7a#w`!GAFrcCv`>%Y!=38{BwS@-4o+{`v)zjj*2B78(RQAyl( zfkJS2t;6BZmCm1qSUDy?(J=Vjc|Y)f%DD@Chg;Tv-8p5+Y`3Pydn`Y%mWI4N)37cr zOY5}e%hqjsPoK27owH!Ni>GOIc9EyFg{QNxYU)yEldbQTsN@>Gp04t8_t^%IOD)!y zHnd;<e67fzMPYLFJN<;m&uq8Y#rvE*Q5e-|Q2hL<p)!w)ab-%j=vmgSH8n}X#m`kO zuHHO5Ws&F|Yir>K50&B{Yde`uugK{?dpa$uuEgwW=d+$w%8(fX-hCo>kF*{B9eMSG z<;GO)w&pnjCjC2a&W!O=5Ks`3ll-sJsL)t2qu@q_$0P-huuRd=)7<R;XUsl*uZ@xG zbM}o(+vd#rvoLJu>Xj>Xl(RPohE^NDIIF*~Dqr;M)5ys|J5@Ya9stGK4al&1DtBA; zV;8Zt3k>$n|Gsa>k;i8aRi5c7Dc+^d$f6muWx|i>?8xx?j(?x;{W>e&-XX60a9wx# z&z&n~elGI(w!Qe57oYp2FK?et3z}9v>Dsk>8*j64Yigfduy*Ct*>4t3pQLg(1eEkw z964xPBer|4{8{;rDeF%#)rE*WKHYX+-_YH^p@3u3$tMqPPkXy8@p;mt_5Ww=*NZrD zKHlEEJ;3IkzeY`}^RA{whQ^dhPo~OFQh6DDT0xhWjg9SC?$l{h-I5X-K1O>^TCy6{ zXlGK*SeyT(<WKQDZ4dS8TQ{GY&HJt7`KQ~qrt)OuoaV)KefRcG+yDPhzs!wYGk&a_ zy5?3HPeXu)kB!*wO`Z#x!^=#j--%&3tmY{dt{=-hVVc>$Cr-?<ds&Q)3b>R!C#{ob zR`L{9zj)|4`y`QlKdisK{h#&a(vHqUDcth)A9Lq@HkA<ByGN}*I9_HE`;5pE>xGBq zKc)Uxy<anzg@aY$-uvRyDw#T+*Q})co&`lsGAvu%$W~^is-dGR^HrP4b5cpJrRUZq zoRfbf@yDx)Z%B+h_~6Lp#Y;Xv_#-uMb^en5IY%Y@xuw?@-<R`q%}Y-+@!0fSBHvs# z*=x%rO^1R&QPJD`&KIw~KB?we;<FTXk8dRfX{VUHHmN@nQ$BHKk<Gb1+gk5-n-yH2 zBC*_h@|l>Bn#kj7p7&juV{^A`TRKtD=fc%6_tK|+5qDiG-|aN(Y&46C_Mdd3;mFCf zvas-rQvzK-e=2lR@tjn06;$dq@tiX}vPkq!@x{)@Lw7dkFg6~Rk4alUUt&4``-N#= z=l=PcyM1Fusp)+e^AESWx!daw&pE98exLu<H+<Xdw@z?9dO!W_X6uZ1b9TttPE1|@ zsVGo>cliC2ce%rZg72T3$$5LX%H4<}@6#vVuUfdqVE+G!@rORWn*1cp{NkR?DHSgw zqVhCTC38cjKKoq%zrV)oRQaXQ9j(unX?=QYr{a03wDh#Z>%2q*n_Z$mxY^YI{_uXV zzHQpvjrG3w%mQ7#c5O?l|M&g%uD{~u@00!-XRmv0r{ZZoZ}av48Na65C^<~}5_^$A zy`IKTlP-Dr;I7wIJSVC7CM7f+St@N<@Y0PZX4ga&PpM|m1X0-Y*W5F=FPNn~IkrRP z<u8j!=frDSvyPoDouzsH?DAEme|*2b(@|Z$rte;M<a`xR%_E?q^wpoUUS8ZqGi-Hx z&-9d}iQhSS-)39icK)*X57JK@EGC0SRfNN0o0RvjTu>E%zvXQpsOrvR0ag81W}Zu) z)3t7C-GBKX$Jg&$RF^Gk-&L}?`s>^&w!7#56U<$F`rd=ZyV_?OCSFywyn5xt#d9~{ z27t#jf-X$)S(ctI#B$<XV%Wu`x;<;Ag?h_9?2L?Waawj9wie*y|34<ho3y8>cura} zC5d0j)4b)uo2`5Pq?ozK-#&QV`Sq{Y(~W+!TfdOJsCV)5iDg&Ijr7wCDsG*x+gg9+ z_1v$bf8O$Q&6qyf@7o1|ZS!-pC9fKH&U0HOzhiRc<x3~$O*{NY_4SXc9hU=|7VFpc zpXo6%GQM=8E`k4>`lKb<ijLvVqNzV6S(+U$ZQ_cIyIgbd$>q*%R;Rp+PI9nuracMT zRHd%2Kci;X^k=i4ili+S<XJXxYP?%$@cX6eyQismCL1YCDmgqOaMz5Ne|2SS?cAFG z@mExNvc|W`Ki_)H*(4{HQQr2D@a;ZcbIZ~N6Z4h&H?RIEz|L2DH2S=FaoTOKd8_TM z*9VyIp1<nB=@XCNWc_6Rf8!IUzWv6Ql@E(|&-{7hy~VfV_Jwcy>mPm3U#HNc@-mCp zWNPrHJ&g}uS<SkAD`VYi75j^(RY5P;SxuWBc4=1V$$Qt#Zp|v&WR={oF7Tv()3sAU zUgdlN+m?22+ZOgMY`Vkx%fa50N=#*v)LtGFJe#6bTk<Xb&r_sX^EuNseiz17{u3zQ z|Aj5yKJv7z^INBjHqX-d`GULM%r`##P#0!e<Ck-j>re^G^!Os>??Ng9e8POv+@6=V z7EhXcwc2xaPHKMYzXz-C#C$T|b>nu)yN@Yrqq8#3tzEcw-JCTC-JU#ietqxibF-_v zr@z|87-qgDC{#%1URYQ@GjFx}vkVo_UwWI^CoY-oV(rdfZd`ovQQ+jT_U^8k_wFBD zInVI^3DErb@7tEV4sze`$v)ZqRrJli6O%8icwRr~pnWzsa*E!0`Q;ZqqoQ}8(ASpb zYS+`dc+Dq!L(8VkpvL1aHBe{IqH33=ua)s4@oGaif18u$xA&djvu94R_eZxrA!R$i zOTs)X94eDl7&(GBeJy_zCHmy?ajqS;2fen*8)!^g@;WP_f$`D_59#fKvCI?9>Xe0; znN=<so!GIA)oYSU`wY)ri6v&WCsukGw%!!4HuW(PNjSI3zalsC$)4*?E$8A*gC6`5 zeR=2Oi!!^Yt&PfGUsvq<V^{U+U#G9D0EdByisz(tGq;#rl31`>{Mb9WDQ;m>TfXrz zB)7X9++xziy!VS5gSDXNq>{5YnmsP@Di-dU_Iz7u@Q)*p&+N_UmU(u@`}viJWgSa| zCAYThziaDcFn6c@-E+4V*+ub}FfckXc6|SR$H;TnvP)hXXWuVcxNc^nq4d+Bph>RL zcl~Z1do3Cj;pMrga~GTX(rGF$qd+myS-xy`zSXXoPE9{%^7XyDefZrkF{aaHpRf5F zAFsK6$9?sTpUtIfD$S1FN<He+@33civ++XKDQEWG=~yxQ*)M07XJQ7n9O+he5B45* zTsA$G$uUjrY2mZ2x^LpPH11w@#NzJElxK^Qj=f%>;<;;z&Z+EEE45?&A~&?Xy4sq; zx^Vl}+$+iNK5J)3>?^lSO$`X%I_J+Ch0b+myM#K6W&1CkTCwh)r)Q<+YW6G*{gbM_ zaemu)En*@jEm@u5ppxn2J9FakE6b#&>BhJlNh*k(O?-AINp9uuE_w0PzWc%&yP9I< z*;YjEZ+$Koar~u<Pp4SH`On+q>l~)McpP$AtZe^<b1#295I+B|>Wi$|6kfZnI-A~v z#@PiqzI|nVa|Vxbah>RT2?5Vbq1@AQ7Vfm1zUq~(j=rU5JkurPqLaGX>aX9Z+AQwb zbxmzsNNDih8t&Ly0iW|q=KFglt$C<BG5)4Qv76~t)2CCy{&h+uE_?bcc$>}j!1PHf zwcgu%Hog;MYoC9Y>kn(Q@}B=fKUObHO@9+VdAo1O#7XPc-kAUY@2<T6N6+q#_<v^B z>s|bwmwKPS`Dzd9eFmv`PF}EF|JmLHyb4I8?F}p+<PX#{{b&92{esaM%MNhIbP{z3 zyzhW|fhwMp_C;6yN&<C~J$E^=xlCHuEpGmP7NlGJdcTUNxjM6w=k=q%(y#fHaZXyo z`R&oO*tq|ynn!<jH_e_79)VxCGNY;jG(hgl)Gl%V&YUGtpt?$hl96{dmq}AP1igLA z1VKibRPuDFEZre??QW&Isk_>4KF?q4yf1`>`+4TEWoBlkJehvkz~F~hxU=fgpOMY4 zi%+k3J?n~-s;8GHsJaY0Fa7827MZ$z`etd9|Fum$bFOlRfBvmFTh6{e%bH%*)`IHo zy9PpMLv_~YC~vRQKf89V$y=S}2D}!Lhd*8QT{87L@4EG?m#JiLT0K=o^Xna}o2(vQ zh8y$Fsr<Iw^^@01d~ND6R^Gmi)y2vmQw-A|ITSqd-c#l2XKGrsWrdK({5MG|FWW9$ zyKunarr$OleaX_y_gPsFQW8adpQ<kLjVhg_a#GG^l3G~3{YTA8pZE2X-?HnyQ4+Zw ze){(l!?|`<ztk7nd0r~Lc-z_`D(V*N&ief83`<fa_&g_>oCJ3=B5d4@cC~CheW>Q! zEx9VUy|>Q&z8y8=bBb!~LWz$*I;Qu%e~{l*3~Fn<nR9!`|BbRTl7?Qog%#}f^$Cif zKQEg&*YL`-mF8|+89ij~AKs<PdS>=Czp^;S`p;LS=SZ14m&(t#t5$cle3_EA#CZJ= zyH(#y`z!X&_K%M^d0%Ho@6F4XPR^NjZV#*XO_No;4rsM`GXJW{OF||*=#PH?U|MwE z!)eiZiZkL5pIrEL<1g34uk%l8Ew2oEJw-*+6f{>6@G*kt&`S}!UlzrE?;pH<{5;NE z=FY))#@&@q{>eB^RQWjZpl=CdsI`6K{e|{L3qFRv>%IQz$gjV1as}VtIiGH8xn}Ke zS$4j^jkTqrKKA?i)UUm_7eDjm&BIRiYlSAiEY_RW9o<)+{qy7$iRF`(wSCf`tqQ;S z^`~N8{R{0f+sU4<gGJxS`EC03W7kU7Q`>^~{}=ebquySB`oZ5%`8V%Q{<860&7*Re z-;d{m>i&<v&BF!uwLK4<lxOF-%=R1W|3CWw5AFYRdjEynF`n-(Xg^GS&$s^n^liFR ze9~r4Qdz3;Tw#*Q!bi4-9Ic!#VjoT{lA3pW>-??J;zBCN()VYkoLc3-Ls{a<Y=au% zenT71K#TUB>B7@ItVI3wp1n=Ce=aR%RGv|)Fy;81N=p~UMcNfVe~SJ4wUXa*R)mMA zK;ND?@9b}E-*Rg!Ht<@WnZfIBw@M;38FMAvIWd8RS8I~eQu()@zjx$iZTY8<;&*K( z&9%Iu=Aj^?CSxWxY02iMg9?(F;*vgMKD&QZc}_A(1Sho=BR2&ZHIE6COuadDZywB_ zAAiDslKh8n2W{m3r1A+Ui!@Z^xLlw2@9&$sOm=zscMp7w95kk=+>7_AIb-W+VBP=n zqnqFH#sqMaVRO#I01K0866&wAZ^Yd{ba8WHSbbA~4qNg!##4!DWi#H+z3cEyA{SKp zy*&0*z}Qn*OU_?_i-qmK!S6!3Ie)9~t+PKi@&2BZFL%p7Zx?J}Xmn_*_<!NSh9in* zx|J>4g}Eblf31CG|ED2bZtvU+OUuN#gcTf(*aQ}<^DR8_!?x<zYwd`ytCM{qw|2(L z*E#(?=X=MvZV`)vf{4n@Jq4F?K?9h(Btg|Ti<dyZD(4xC-#oKR>UN|tZhfs?p~q-n zQ~vNm!zP7=1rt(gG!$OtJlXs&>6)3H-^rUb>0xS&dXEj$8#mjxbhbUn_+Me$n1nP4 zf8ShNXvtTueiMO)Crf98Y`VmI5L6BXOiB@AYAj~-t@wBN&S68p)b$Sz-h3X##>Dt2 zz50nt`=V(K;fn2t7WwR3S>G)Dxa5mx+~g2-0}GdR_n%J#nX}6hG;!o$IO!xy<AIJP z>JdIy=lQR=|LekvosCS53MV6qK4_+H7Bf)4bLiVw`GO_O`~UsRv$FoZen<PcHSVi_ zCf2ZL%dL9$xcT^tH<{0m988|$H^;Z<kjOdx2WQ+(-`HL7^RJixYx{OiU;N7p8x@SZ zKUrMf(t4Nu_RBXGE}!>JJN@!KD9Su19|DcH1T<CfFdclbV(Y^<j~=Q|oGZ%FqA01% z$<oYy^TRVXvvuneeGA#sIgC{&o&55X-|(qdnSA7#)xGi?elL~ElD~cMrLn+_NhiPD z?B1EIF}Dk461*Y6DmY!F_<E1_>wO}T-?a4QS1u^~Iyc9sZKmb^u5d9?;hl@tdVq#Z zkL*b8Dcx>xWA}@&2l^5<=f1=<)thd4)AKj`)3#2npi5gte}CQ|fBo(L9hKs*=SLRD zepmF|^>NPLf9{u$*DExryxhH#P%W*P2CAx5JgGAC%m$vQRq@n(ckQH}!z2~Y`?|KZ z8&B#vPEv_g1Xsx2v&(%!6|(1pukn+X%$^Jy0|)i!!DHYo)rFt+*8iV0<<TG4gJ(~J zr^2s?nAqCfRP~so*67@mpXV2(3rZ`LPDt-MC$v$blk;|@{6_CLI@bz&=G{0lrPwlW zOO=Z6nj;4eEL}gblaWpDZbzfH`6Lz3WCMjsOSr#$y!T4xnf=!JtIz3LWoc@!cyO9? zXS$`!*SY1JK0c_(jam`8amp=W;lT4xcU*im(PW|DwSXC0XDusSKk@98=g)$#TK!vA zRX%M}Xqfx^t!w-zEfGm_P{|BB!uLM$ax(YK`R2WEGGCt2+c9~6<*I4^)p<Sl|FtPu z`pgwnGq~C6GeKEj#Nd6S?Uy;c$Kx_)?uhdTMV#7QP<v>}mCKR)CxxDuOM10w>zcp! zw;S7vsNAdXSuFqdc}cy%qRFv|R^R{q5`H)Ljgi`gDL0RbxEXN@ro7sd^vp$xMSZsh zC`^TqHF#V)VikA#@_D)BXV?DzagKb}A^vH{<9DKy!@^c|>#ctJzP)bW<CEq)l7m)* zrru31$|R{}GO1?V+u9ubS*x-##KI)(bMl_=Z-SmZUpjeivGjNQZO!Z5{kX2&KlJVR zyTw})q;6im)OOoM{*Lq4SJs-RJk_hC_?E8D{<-V_9^daKn=-%7J#$)8=H9o>@o$%> zA9)QM2LD%_UdvklyP4_P(<PJV8h)9VtJ`xgr)gg8)jv6o=Pqp6+4|?tR<TDXwQbhH zy6SAN=kHIsyW+aAY;R7~-hvN5ii&3ZZ!R_A-!Heg^mFZD=kL#SBTg-=z59616T5qH zM!mn|<?pJ6?Vobf{zl=uIX%I_{|`ph?R#LB<}YnEZ@HaBY1}XVE1y2g-#PXs^YV=C z37S`V-}1#z4hm{o*QRyqlQ9Qd^O982O?#I8Y&yAIIJb1l^e2-9d4$fKSeo+H&o9p4 zXNmq<)6<$~yp$z;l(qNwtXdYgUU!m8EGuZ3@`c1%_T)2r>J2A)Z+rXfZTq|A#~)>` zU8_CX$RGdop7GW-n)Q!kG6b!U9QWnq`hQ*hP4-Xb-}mkwICCy5Z0$YAJuAAdOYv`9 zzj4~3f4VjwogVMxT>jhs!An)q8p*mj*QNL`ZYX7~`NH9!V{MjZx}4AClkbzlGE=!n z2Ntfcc>Oc!Tu$`K;;*%bbCcNr^`$=TWto<{yzYPamHgT{k)3(xVlEbzZvMTJYhRDe zxpmX*KlJO)|L{rJdxn%;;O{Q3eLQO(JT2d!6#tlg&!00wX>I4<CZ5{UUh(tp{lbL* zb#Z#l-%rb@l^<92|FL8K(HW*k?H=sBnm;LK+uSzi`UmpT<(tbQ?|pbKZM|b!D*s;3 zO>aV9Mb{l)=YBb}woKKOeQ)pNptBCama3<vIo7RPymM{uvt3@Fgku-0Pkpy4xiV9A zZRFH9xw(tiW~#3?W_ux3deY-URHWC-bBw39nOwYf?bN+jLN7|IvOFiPYjZxM;ycI1 zKK)m-Pw%q$T`wD@viR?xYn$f#M}ujC^U-Tsv&8qD%(s?Xrc}KmQQ^#;%E~hw%olyk zY%ZV3zrOtQgT>u5xgFF({q-LF{rdZ7+tE9WGB?8xrw41@++NCR%&<xR`PAq9h2OpN zKYX3MHJNWcm+R*lvu$sD)|5h?B;dGw&U&`J!j?4q`u`dC9!PI0o?*IlcK`k#e??`& z&F9K8KC{`_vh$+C1izFcb9~g})<4{wA<F*m`{BdEre{y2wHRD}uK%>}W^;X4TK=Oi z`>cQd=+2WnxvwWKTHMsn*Y>!@)HBI%H$6IdUSX17%8q$u_kLcLi}=d8-Zsj{V)?~Q z;WrC@RImAY_IZe?ZrMC#&D1$5>0je6X+__Ro@u{B%Y6Eu9=&g7bE|D4Ur&>oRh*r% zT3bDPgW%4e7j~6@-Rb-F-O^oo4Oe;BhD>E?-#+!~ZHL46IxVF<C++Kg<EZkIO>ptg z)}?=9|2_y<4qp3^ulc>_O_qpmg5Q?e%Ie47)e7~b8JS)?JM&28>tDayuWc><QebW@ zt}DmW-qr#ghmq5}4I73L_-z|M|HPAZoAwmmFMj#>)Z=@*n`^f1Yr4z6`@FQ?Mc>y4 z^U|j2?Q5#sQ#@m)?6Z>R6^GC0rOug^rt@r`r0$g|*FR;t=X|-HwEy{Q;g@$p!)%l| zz}p7=WFB1!4N-ZiW_-b`I9hD!>CeYAOD0{rruXTzSNoxb-QHVFFH7kxTyvx&a?+A) za979A;LsG0ru?d34cyg&b6@5>oP8kSgh2ms54o7*cPp<dN2zqq_Y9cPb1<UTpXnvb z3x%077gZ+sDHP;n#P-aqn3TV*c7Emh{)&!TBhNWLUh5K`1RDq_Oz@e+(s8^)SWQUo zzwLCpbtPWg{`JMK&tLLvBU6?#_sWVoVgCDbJtx>zJu-M2WNqoMAfh5E|N8(_^1h<5 ziZ`>GSl9giP@A@A%fw#p?E%4CnzriaJ#fEyaAEN!=o)%!PtX$j&iIRg9=lfZ@)$Ts zNoGDaTa?Xk=~%u?QbL1El%C}EEe@WOQXEt=nVuFNzoYQpyw>l(e|V2If1rkln#umI zws`#=3I{k^^h{lH_e@dufekv{{3*)98CzAfM6k8zhb3ekxWxME^G{{Nt;%h7&Fv4% zec<ueYM$Qy{&~CVlY#?hcyRQ6JKmtp-FZw*MZjx<Pn?#d^y*~_E!;m&uD5@veqR3Z z-sxHud7i8_|JdxgS~({kKeg-o${B_Kz8#uw$Uk+-`yRZ5R}!DgStqHyJY{*r=MoE7 z(e=gJGm17$o5j4bF!~(os_xah6i+0c+f(8vn<qa<KmCf(zi;2A9wvFEm41$_<$f%C zQ&ct_Wpv9@<ec~O*~>2a$NUa!`@Fy)c=5|Qb~QP7b{$`r*-{{9|MM%`yM?Xmts6hQ zy<@m~c7C6_zQr|<CwrPp&t<*bt-H46(jPskSF<D~HV5jdszz?P`gTd~oNT8J8>UQh z5iaHR^V0Rav=tNwPOQ&!A52X@RP*hE)4y-w)fsko{L<a6)%o5%KhcrCm>t*h>ecHK z-z^S3W3#8v^!z@@&kxJ0s%}{pZkYJ&aroq*lue)N?R-}JOT4ycL;L#v?UyfKJU3DK zxSQ>>f0vG5^)3F(UUT=NZ@s^{I^P@cP}=!(GVAtkNLJ34yKNXzecZ6`&F%A@r@hJ< zlw6h{`SGm#?-w4~cV{*o_4%2k?7x5Cd|}zUpf%brK1w`4CAWOpKe2n+84q3j<^S3q z|MAPb+G5t3L^lzI_No4Q&%QjH`sdGAx4x1&Yqu93Nv}<`owToelg4^Y^|g7HsZ&c$ zw$EMi`iW;$^ldlWXLkEHwLN8y*3e#^lwT~ZzT5B8wL5O%NiK`G7_C}eoT;Us`t_Vz zlz&;_rxfkAxy)&2L6vIz49{5!j?e6Va{f-+d-7YXb;Y~2Wq!vM4OHj8yxINp;@xz1 zxu=02-~DchyLIB*aj~LbJS>YW&+M!hE*E_obC+TD3$C(Si3MqY#pYEf$S$93pc-|+ z_WXUnlW+3x+iFH^>HNjNdF9PL&Fa&(6svItD_Q#J*LJKtJbUkvLRIK;Se|*)15EmN z%hk5?rat7(s;}}i{pc`brLkC$VYT9Bz1K^ge0ZELx9q35sEzq=?SJPtl{9@e+wl52 z=e*nBI8t9H3v?Kyy77IV@>GyXV*Rqdyjk(<6CZcxJ!+Y0wRnd7yF2HUoe#e`)E&2U zo>bPhwaHh#?;hzis0}j|jTSdHFZx)eQftoYz3sxCIo_dP#imW4vqYcqrR2^h)22=? z{U$Xt&@DDwIC|Bpm2vx8*V%C_OP@G9-p%vchiNC)=Pa;XJnPl0A}{U#E<Fa9i#}^c z&wIVX*mKgpr6`MU1n&{Q_-23D=Ovz#^3-f=4d1ioG0c?AtY<jYXwR?v|JZ{ieE%8$ zsDFq*P|vS>SSCpg)EcF<g%4^RFF{&<n>Y6jlZxl0FLy6p7M~3oC%hzTq%f%@cF&H= z>!9^GvsmK(t9tITloasX^$fCH7Q7ZDmhrg)$Sf5KSJ;5NmNZ-P%LeOs;a)%d-@f|0 z+|$t7``rI+nSV+9&QbJ~d|}B`AgA{=@R+ht)RGiVFXd}j0(`rY`V6I%g=$4+Pi@E) znZ<3QE*Sf4LFd&BDO0moj=ZA5`a7IDb(_pOjx$%t8BbVlv}K~?;&c9bpZ^##^L+0% z?%5Q-erug~ef77eo9lmXx|6^E{(H6s4_I6n7#J8>)fJc+7#K7x7zG&^7#t3Ac7Q~= z{2W*q7#IQyn3Nb87#f;{1sE9^7)0hYa4;}1jA|W*!BpX&8D(bvKle-n&uaPk+0V^O z$}Jff7+Mt+nC>}Wdwwzh+)3l?S(o-a+-dV+>&~C4<<nUh7y=k<ckgC+aN^pQDo42; zfA86BO393iyglPtk>=ICzn9#f(4Tgt<@2YPo$1ey+>-q~-Ah(%-72rl?WX&tZ%sKH z%>Q)eRP9Zlj()ZL$X)*IlHlD~VFrc+|2R7u^e#=BS{^^^^t$*7rBC}VpU%8@VZwAX zlP616`Jc}Fx%u-I`<RKlR6OVZxfy@{?5EfHXFvP?Ej||?J2`mQ(r?aNt?d6lyK*LS zrpnfn>AQE!F)%bRD=RSVayh*za_1*)?oD~Wrv$Bf{cCx-rlz@BN^G&Er{-bxxp(FG zwyu;ivfTWBcFm2~tPBhqMvQ_NSff6@>6bgBeS6=vxwGHjwbp;mv+|am`{h?hfBrlq z`qFk|{q_(J28IKCOiBy5P15e(TK4w-uio7$%L_C-v)X!2E^qI-nR{}py~O;>>+AKN zs$88cccR<8|9)!Uv^AA)+IK$w$Nu@vrmK<H?@XGKb!qoD|ElX>&o4MAe|Dv?`t!@m zzurVVpH%(%MRND%nzO6cL|>jz+UuLCH$8aOyZLp8?Pgt8i=CJ`*=<?c_9U^CZ{_dK zeqJ5^bgC(DW}cq<(pz8TV&(@5>z}-G`rNq(t764(eU!E-$Xjo7A<--I&K{fc`%kW@ zM3#JQh$*SRop18uRQ!{d`&Yf+aM${?c=Eclo1dyI-CX?p|33Bfy!+>Vt*Lo+(q{9A z&Oe`yidLrjCYza<t6tsuGThwc@cLQPrCakD7!EiJ2{6VkNLzkznYm8%gr~mAMW^zN zcCfI+)&g*zam<RGDDS`1V6&K6%Jaltsm<$l8os`^=EP@z{S)VBzqV#^@vZzeEpz7Q zlFIE@r_PrCbZS!Do=qu^^CFAV-|heT=1SR|g@uK6b^n`Wbr){S&3-z$GU4gupFfkY zKXK<jdq%UGw{zElO|y%hK8Y@0r|CIM`tzw%%f9IC-{1C?je+5wG>eOa_==M&3YCMa zstQkep3=@gyX52QqKDI$J-x)498~V%7#J+~|5WSFyhP{U--D{=Tc|B=`|4l1a!%=K zu_rU9`u>h_o;2mvt750v+*RIBb1Dim<8B4`1)bCWe*VN9|9KOo{ohac#<R|U|EpUm zA1-`Zog1Ha_L9y1O@>cZ&YsRcyGGvk+~IhMUCVV-FTB`X?DU>5*p27qlkJ<PUV4Az z*O%36J!eU6&dW8bDVYCPpN)ZG12?1K1=Ux2y9~{3{&vQEFG-%XWY4#gcPhV5-nsdT z{bBVQz3FkLmd|;tI}DP)&YfvpA8ipb`|`hE2k-oA{gu;QeC>{rUHaM@z1`b|U#*xD z82>BsUtUnP)74E%o6pP6kDfk#vdNQ~?c&Rye))L&`pj7;f9?+5%{Sxjq^I|PO!oP8 zuWL&1Id5+9<sZ47%kwI)Y%6H1e|heX#jgY99~WGWo%G(;@^|gGW#$YF5B9Fuw40lu zFCf(U^UU9M6Mz4&Dr)=w?n2(OI}@JE&zq`!{D0!H*qZEV@AqHypOkX;GWVxb+rB(M zqHVO-*`nly>9yyV&iCECw`zIi*H<|={ySNwUfL;n<=@&nJ9ZtOeT#vC;of{u+`XC{ zyx%~dU;l6Dv-@SvcBXkAtG54NtGQlh&P31W=gxeZ_IG{e;aRee`9k?upYNO-l9(I& z|E=lN+0td49kVtS{W}v=eeg%mYWWF@%vGr;8W<&Qe_oSacwygc9YzL*J^CCS4eP?M zsxSAMGfnz^^sML8>?XVv{*|A<H8`#^`<dOIe+$AZ8D?H;)C_$qA)c{(!*WIYy+4v? zT0C85^WjTzWvX-Vsi#X~@=opA+MD@q&0A&$hCS>Y9Sw(9t;(xecCXZ5@8&(06?2|X zUvuMq(O<Ur98+gax1BkC*Qx_$zWrzKeB8F>)vrG{!{49im-}_x=GzhbXa8oa=f6+d z=KtGcqnB*l=P<qUs5`6-3<Vx6E)M1|<{#WD%QR`(vcKCnR!Q5Yxod2Gb}pv;>)yzF zHzqAn^<6Fgd}eCz+*`L_PgOmio3DB$|IwR2{j1NNzHw2x_|b-mmZc@NtG@rR+BA#r zpnveJ+28ktU%hG__jFrgt}|bOh8hDygPtO|<eao~=Qru^X&1X+mvh!fZThxx=Fa4k zeHP2(WB>o<x3GQF<?}n`|2O@odrJOa@v&K%|LgnP*}wX0l{Sl+y(#|Kyj__wD=(_P zfzdDb*VWwHlZ)of{U30x>`(FOzWAgI9lvCg<!x)T-&F=`D={!E_+4?<_5$myPiO9$ zKW%KE{prB>NmH^euV1Hj)pM4#^rm$?oulVpa{v6&Q<*<uZf()Cv;0qXhfYts_E&pX z4bK9{#jk^Ff4?$O&#e1#%O|JKXnC*PrEgZhxB92um7A>{n)>6Vyzke;{@Zl77i682 zs!aD=vD$0rO2ze4&Y$ZS+rD?&zN{~mmTSK|SC%+W`cyo#_?u^Cic4+P^hrgRU)kh; z$Yx-8U?3#GICp(&rd<4`g=c+1C78)OyZB6xe{XJoHY&ZrxNdt^hF$Gv{ZAjY#h=eq z_1;|Mn;i6N{y}BCS@%w_JDYkx`eNqYGg;?m&3pM+?D?+c(vwY|PF?=~thWFA`klA@ z&z-rld;aM;Pji3Y-}7y!&F;05ftjIknLd6ieS?b2@_u~VSy^|=IX5wQr=h-X<)+E2 z*clisESQuQd=BkB-`ib3(fIv-^M0GXCi-h5=a%;7<}+%CUSAd;Tk9uLTW0sS^`vC< z_WS2jcdwK*QhUxLIk|Y7f9A<Wt*^JYJMXpbd0+gZ?V0iSze>&T_Gy;e?6J__yJOYf zr@@*_U(Ncm?)7}f=G)&E#~(ks>Xq@=ee;*zFMsx=Z~63ROSkrFE?3+8`jv6bol40o ziEkF&+WhWJGWW6cce>x7%~aLil;<3LYH84_)xVdN=l=g9ZKJZh&rbg^|37sm1_lca z(dwCD6SsZrtWvYo@(i7nJXz-YznyDep8e$6zS?6!vFYBAW#!WgJfg0xJE6T)(Q;$i z^CL?#Z{CS1JGjQ?_8b+{pPS|XY5jk^<{U>SsI-Xx_5JPF)hfZ0_FVi|sh#^i;@*^$ z;z?^gqi);Z&U9qilW$Xhx^?E4#b00AR%EbUy}E4I6ch7x=e$o#m-Tptl;_zQ`&qCs zFccWDxE%QH;v831SUai6Y)#}u-t2D%-tP@(*4;icXO*`YsMZq{V0<sUl;{5&(VZK< z?X=myOi^0u`tqGS=Y(8ecK^XI9{JihyU(pBbD15O85jxzz$VV0W0aZZH}lHfQU(SF znM$qQyFo2)hF#N1Yh*7lh>{9VeR^vepYXNxr?0+d-u$ifo>4b5>(x6czA*1uv+mvA zpLM;$UQU~D{xlO)xn;sjQfs*?Ihh#VcQtTmbWF4Pyw(2X)bjQB?3RA~=WYB_n?Kdr zJZx*eZsng(_9vD^hn18ovM>Gk&i`q@eR;mr?%fmiMtpAmC|P*yjL!QjTi;c!x%Pay zIRDultLJ-6cV+VBE_!=n@~5A_ua{pH+ZB6x($1fc=Fgjw2r6wa^rt?X^gaL8#ftx} zKOc9$KYPnLVq5CXo}ShJUEW3P{a-nG>CB%S`%|w?a=szJ5Rk#7w7~n%r)>45_4ng; z*S}hxc2RNtR@Kw*=gpegFT0cfNV|WqSZr;OTl`)H-^i(z^;RbHYv!{CR$t!q>)@F^ z6*X@BZzn4<v!xuF;s2!je#8XRw>O<uF021_^{aoW`1Qb8Ym>ih*O!!>$c~sF|1Tly zU(%TiJkl4`o!jP3@sBgmE!WAk|L<-3GWNRt->UG^prh>TGEd%#srD9ci}$?rC1Ks} zKi5p=mnOffe-vK%YGLKhFGs%B=I$|{zh3^Pn1t@^iG^REKV9BFX^%~rXWN_7o2)+{ zU6^e2*j8Xm$kbcsZl1Hg@@^@^fp=A9<%|a=t~Pmh%;wwMkGpLYt}pqnxPIfDa523T zpBJz9y!1RaEWBjt7rRs+x25%7D^D&EOg5@1$SoKD`p#7MMEtz!+&Ig>Z8fj=8NLjU zJ=bRH{rSh`*TH%9JJ!uENtc^<<!bAflQZxCi#%5&o*hwndU?@B{;cAY*WaJvRlm0E z%AE<*r|FzHwd|YhN~y_`{D0R3ud<CetFL$B{PZs;dBaQZnng|1Ibm%2{Hc3*@A=N% z|2AH+U*01(^WNUoldhy+d2#ED^_3&}hbQlR_i3i&mkVd+6#dw|joJ83*PpxgCC|9- zdNVfM<?Lu!7kpR!@2g+W_x?H)niFdIar5V*<lozk_t!n&&1HN~J8IrO^Yc&c-1%od z{mGSY!ucO2{F+l0_WfGvhp;CTf37zA<ISIP>_{&E2WR7oBR}R`URx?__w?DaB~?%6 zF+ZJUIP=$E!?*Ej>EFKJKiXE+e{#higZiImKhFIB)o^8{_-ZDG3j51Pd0v=hKRbWo z`Tvp>H=ehX|1q<rd^wu?_?n5{%-Q<$3NQ8LnTFfnNVJ(f&F24E`#bkib5F2-&wKyu z(xx)UwD><8dn9hDA9kzLng9QoFuVOd_tRZ}zMOuZ8dLjwoBn>&{ckSxFH60-_U9wk z$HwdG9NNCTy&89aZsflC`^<X1^UiL4-gjmLW35rnlOHu7r>U38FJ7LRSy%H_{nl<b z-m@*-X-_7a?(W-pY0A@b|FiKuG7}V;+tTjry!`31xOHAltyt~jNql!FwLR0X+t9u) zS-0Exx4-|X4#v0p|LzR_d|BK&XLVuWv)F%~J`$EDhuOY({r{G0yQ%7W)wSo-x5rHK z?*kdgmhweXJnh`&*TMHn|Ifc=HtkG9kHzCXXXfnBT7K~0_cFaTJL|LlMgRVySbMww zwQl!!t9^l%o|aGVZrdNM`+ffO#QLh&e$S8ndv*IPqs;2#`tlPB<D+jCF8nLA`)>KN zn0wdf>6|??(Yg3-u&mnFHK&y0t@VXp-L6}&=<I*0rC9%DfBYRYXJ@(pw_1O8e|x?9 ze}kQ5;jzk@e<Kc`TV40@+PC5r*T20^xL&;H&zCD#@?Tq7eVJr4PsMv#>X*E`9@EpF z&EP9F(>*5}UautV#&==@W3ADWf5|iVw&%q>ReAc<_|x&*+YBG<`LktX@%D)-OIQ8! z*;`rm>+Jk#k^XOgJH-|MSIvF>=JvL8=j)Tdzur-J@=ndiI};@h7x=ebeP8omYyDpH z@OLHox1ZkIxP4dn`LitxpFf@0_j%iz6aM?l;(qVRjn#avdwbs^o8NQ&x7=O+t*qz% z(Y;?1)_XHN`0L26wBYuhPdD~f?)%nur|$EQFYB^Ai@klbX3L#<uKzFb)6&YB_Jtm+ zW=nm#)HbW+&7YD(Q~%HSy<Y0px1}MMzt#Vdmd|+|Wl~kPZ+n7IRer<-%kcPF+Szr} z+SjkLKhP!h>GAnmrQ%s?&!fxFp8F8wEVs8VOK*12spRjmlXj_`&7ODS{B^#w<?m-r zf4DVNbA9Zb%J|vSwAa6%e>_ia|M6?=zTRmmmyU89y;ybg=f(Rxp4V(<R^H!ZGWpuQ zi9he(+jeHvox+35jn-!s<?YBW^Luf3Qt4^=Q+x7DVuHQH?iI!9{c;S|`}6Jmr@IGr zEC0D07u{vO9JKexxjB)SxAAw&)fw%4(RgP54fUndmYH1Vxw&`6Dn-lZufIRJymjkJ zzvOxU4{rJMbc&^A;>R=F-r4wie?D<&TF<YC%|Fjfm^EdV)Thtyea^<$<%RvSHQc>d z+s}Ji{oCN38Hu^e{(fct`R>6ill7HG_WM!`t<0peql|PX+kH=AtNnWH&i}vvH1&6C zUa$Rm=*-H$u4#SiZvEal;mObCVo#RxT{hSGotRep^H5CqZ~dRQJ$IM)u9U3J^E-Xz z%&sb*s`~08KbwYU3hY7m&+$Epc>BtsFV@|;=vm9cou8+zoM~GTw`^{mg6>DDPnR|4 zpIEc?vGLz$>PA@}zR?%VQ=`PzW}ZxM3ssGrAFmfPC#J;z-TVvoS2Is}bEiMsr8#}c zw@&q<m)nAuzU%SX|F-ALy0xCO!k%1wz5Lm!*X>VM&OZKrMe>*4%2(~rw{HKSDO+)R z_OYcuU;Y6F%K4(-6J|}BJu66R&-6<For?W;%RPVP-gfhyWIA_GugX%z$)DHmkDAaK zKXan1|C!S__P+7ie=+<?^!IZ<`)6&dK6q#K@@Kme_n)}GZTqJzP+;j*7&Y%RvEKgw z?1Yf%vp22V>7O-u+lM8q>d*arWonu0F+ausd*9xxd!sMiognZ3&*j;cIkTnn=FNOq zx^&8QGZooy8^3p)PyMz1_2u;;_dXk*TX^3)-txq2A%=>20RhI?Wq&@Xu8hA?=oM;L z_j&y%d$o5JzgDeVeO}Y~*ZUbykBU|<jhUZ0`B+MU@1$FHD`hu*w(>GHUAgk+PtLrb zy2YP9-@E=~<81Zqw#vLamG1w2b!pDOv(}$auYUII3iFEXPgh#b-2G<p&cu&z<^<1H zaW?+?>}6!hG5*glUU?gB-P;#bTHDqyF>9B~%Gq=BYfB6N{dm>>spj;Lp1W@~_bKw% zJU*9l>HMd?tKGKQ#_&td+P^k>K4<#*leW`)&tFmWJRNMFdheF;t!;PrWjD89S^nqB z-kG~|LwosC&*}17zJ0cIW?|TEpVIjGv!{C7O|*Wt{`}1OcfTcsdF>Z=Pb;{)@7p$i zKbec^zxU7oc{Q{0$-kYIX{AMvw%y+yGCA1o%68fIUH^7|dG<2Wq$p1=($ac)PsZx> zcYl3<UWxrbW999pDT>aQ*B3h0{rj-(?V3}z_jj1@d~vYmJ$Lf0Z}pdYcP8GHf3|7& z{4-xJrswm^lv#^^GuXQ>uPiU(n~UD8|0%Q7eDB##Sz)VxfA9J^k@53pb}Bzl`Ef+s z=<BNUsX2G=J(|kAK7Tf|RoHH;2g%!gL;ZfPW-qE<_H5Vr-ZRY2=g%!)H*4BT;n&}# zj%?AHIeVvfTiUP5pFhpaJ-+YVV#%1;t*51Ld%Y}wG~?~@op~qTtf_vJT>0c>Tg<Mv z-`7jd3f`8xVw?Z6xYDw^KTp*^2OWDpB{y3$bZNQo*@dMiv+TFO%9`}%v5oFht*fzn zdUIc?-JKyV_d8<U?th(o+xCW*DsO*ZpZivIX4yr4<BuCfGiTmV56wKme1C`e($iKk zuWxE@_FVaWM$Mlu6Mye3mvOkO>wos-9r5E&qPw4OyT5wU72dZ7?!Iij*80o&vj1P6 z*Y|Pvp6PN|N;w(!=)Xu}E17v|$IZ%|kC$w={{7s2#~{(ZpRf7+x#R5m=jLb@fBx}` zxz_#CDx3Xl6xHXHe)Ho`HeGx?CE)R^Jw*+F&%{+#70z;>Grhk&XI+T7(c#xpn`)lk zvz7_vU3q@Nv$i$a_YTX?7E8Z)>YruqqZ4zR+Y+BY-Lgyc=hIJL-`<X!^-M7R`Ig#0 zHoE$D6Q3KaJ@0vK5nOw$Pvhy-sqA0=z2?)7o_c(Lq36FxJrgBuKP~C8u1=e$YreG5 z|Mv!8-&(&FxhHmQ)qVR_=iKL|hL*+sYjbXy+D?yO_h#~CwZ4}d{)bB1?Xrv9X|i4> z=Bno;VK*M%orR&--mX29IJx+-{U0s=yQRK<5!LDIWInh5%(su&_1rv9)~S}gXiZsZ z#_@Ij$NpVyj{LM*{nOgc(8_Pwk3Szz_c{Hz+H!t;RaT){&x|?!@(vQ4HZQbH^zgm5 z_T>fEl^;9r6n?Gz`DDgqqpBw-e16=ToSBz%YM)>K_x*O3&u<$S9}2#nb}nw$EK}Xx z#>RSb^9z;zPrWddKRwkx%VX!xjcdIhZ_EC>W+J=IyIXeeWq*ITblLl|&96Ii$__j} z_5Pv6`-=<jdw(yFWny?=8zsOP`#gYc<vOXElKi$44&I+LHS%%(sW}%X8^2wjf5OuF z+tz8z*5v9vUmE>SMY-<6!?~GHi)LN6PyTK>;|$-~v%Z@8GbdhtonAI0%I|aAv>q*U z)#}@mU(K3wX;M+}q*(bIvu0nKGwaIRZwlAV-rhX6Or`eHojW`3PZN6jtmxEP|0nwH zd}m9oee-=P4;|c7ut&3d-=~#-o^~e}9lrkl%!ggGmJ~Xs#TGoTo2I>VS=H?w7NMHv z=1XIYQ|{+4&Cc^GmMS{W>ijw5`1PApXJ3lB{C@&d`>G(#rJwd4m-Jc{Wd3W?8JSwo zWp<{zlkLhg(|G?)zf<u`@AwCSSJo4fx2`TPeUtU7_*v-ZqGze$Px{W!ovyuJZq{<S zT}j)Ish*XV3SPDL?pqNXfu*ljO__aLf6BC_Gi%>1{rR)=a`EA_n~hg&(>m*&_H5I7 z*+X6T^Rv{Sx9Qu?=)8XZ<Z}0(n?Lhc=bv>IzccIA>a^#(<JbDXU$tyc$!XP{MbR0T z>egPDJHvS6`rc%DzNa#GUP`>by70a?|C?Pb4EIj6xE!eVKYOC)*KPaL%lGe6vj6++ zN=*5?D^E^Z7yIP~X{GY>E10fat(W>^$^56)lgnyPt@8THXjc&$etk*RoiAtpf0NXF z`)Pa7*Scd@Z<IE^)n4maI&0H5!`&s~nX|)Uqc87!d&^{frcdyu>+So3N;Q|>d;WCy z{{rW>_hAnX+Gy#WRrcTd<gxkv8UFd%e}m0c_I}^SZ+%m6!<1FoL0MU6+NQlRwa&i% z|5r@Kb>^A7Zc7-Lwu_{_`MUjH_pQszpI#FD{;W@R_2kRtlKrnB;T(N(ZsD6%uZmxW zJ~n>ebhL8c%dTyD9@e>w)t+wky?Onig+jL2ljpt3M!5$?t&csj+*t2bEzwl5J$qxw z)S#W3Ps?ME*p+-Vdu3;B9W4LPCGBp|ZM$!Qv$y)&&zRm8J8}6stLo!RZFZ<F&1Jk8 zxBly2ixZzMGk1rZuFthvQCzV7Y}vQHUj)7}GgRbXJjzq?e$~qJ%lFqh+s!-r^XV)V z&847Gh<CRhC1terznC08ZEcqH=8Wb3XYJ-Io|gUB|ATX}{j5u;j#e(Mx?cLl^Xx*q zj%z(9ZwO0&I`e0#^?uRUN7+B0xwX*p>y&K|UbYk}2k(7z&t_M@o=oWBW9b!@uG7q~ zz6pzedr&OG&nxu(yO+DNjz~&|)+yP??x=fje6_}8`MetwrpM{Lk1Ng%SLN89<y9OU zwCd(z;Wvs`$`y`hh0iU0Giz2<klxgwTZh-pF<4}`G?n|)nS&;3w<qW3``tdyTwm(z zd&>89d46JO`24!3qLFn9%%1YA^zI+K5cA{u<lui7eJj(xv*f(*-a6m=yxq2>`}qf6 zv#9s{%UCttc1k+m&#j4b>-AX~?)_(Rak!otH@`GndQ;hS|Hu30&65&;zWlRz`qNuq zGh=ou?cekJo=v>mExQLrp?(sv^Le@RPsw_RrJjAYH1bQt?bTELe;)cWXG4yg-tSLy zBe&#)URxJCb*i^m%EfQt+ryWZ=lYuI)GM97&AnpXTHnmKk8CdgTlI0(=4DSW-Q)f= zeRBGf<=$Z_XK#f@Zhq5gvnl23?jM4`o(I>PTK>GabmymOtdaYwLZ{i6W!u?5y*5St z-URO3>|E=tYO9v@$4!kCkC|jG7d^{#we+TEN1t!1ac-Ai{q2s=+$ncH@ANj#|MzH3 z%-sp5`rH1pu}=(DS$Y1(#ixJ%SQ~%-(aoEg6ElCSzS)wW3BTK}%$b`RFEuND-=CE+ z)!&69_w7>54%0vTS$nqC79WXO-0Q8ZU+*hU-1nn-+u!)zRj$+Qw<(<7{b25m?Dz9$ z>DRqIXR|NG_1c=asZ&qSJJG*>-mJ=O_h-h!ZSN90o7cZ@=)1a(@7s;7I_KVWFHgPq zM}5<uqoI+Tt6b|W>(kclsdHSV?ssm5t<B2oK0DOJuj!pAoj-e``?R&EZe8{M{DVL5 zlyWw|(K?HdJv{3p=Tu&|pYb&N`tpq%6|=9Iyt{I1$+Ibjl3PCAJF~k!6Xb-a{kkVk zEmPT={$$R@-kr}+8-McnZMvoCX4jhRS4aBX+Y_Zj4=;P()@f=TD_pwx_>%jZqK%)w zI~sX;hh1;)>QAR`ebRgWt1@%n-$UQB_bO(G>z`e8d|KJB*Y{VSn>BA`X?OA6qnAHj zUVf{-S(STJ#@9x<*X70fwg#v7f859;ZE4zlFE@dcLB?#?3{ac(%T~+UC+mW}fBwkb zf9}5Dozwrj^RiAXl0S2D%~ak@Ki^-xa+B?M=f>&fzTXsR{qk5%_RlM4KqLL3>rQe$ zUiN%<daq~h-6wbc1!xwp+pl>&)<F67DbM%2CjR^pZa-_|;al5EPl@N9IIcf`>gj!E zCjY<u-5hM17qzT^-mIO$&r&Wtx@l?pb!OFl=9T}RtvR#1rsi6%hgYey@t?_?i*LPH z*nVf~;<PV!?)*QzbLQ8%k~?2mzn*;S*POD8wm&b1%HE%H#eV+2x9KbQ)%rb)txtTm z<*U8-{)3M{f4q46S82%8E9>ni+<u*w`mS8><Q>yq&(i-qQnjx8tn<z|mTZ4Hxj1j1 zy7WF9<IU&xn!cVj`PIF@m-BC&kj;0oQV6yD$o>7vzgw0wt50v;`QlgZ@ilhx^DRoM zqq}Eq&O7sW=48w5XHK}@&+#bEGJbKyaAwu#o0d-}{F?DLcICUpE9>6eJF~0C?OLwJ z@{qgs&2DohO3Tff>Cb=jvk`mz{YIJ9v9fPAu0E^TJiF+4`LeWow~m=i_kL+xk>VCx z;{R@c*7^J!URO_?+4271m73hNXE6ooW>d0_GVaXyvhJi@w9MPkt3U31I4o`S`j_R- zoHMU-JbbIJe>=aRaQ<z>dsilSe_FfVZu;weA3NvVi<w%dK5uU3;dAFYO=~~Boc;b} zoBsI|Yq;~ywt*+7(=Ti&E`H|7KX0#jd$M$><yY^^#kc-gTC4HSo_9N6Fa27%-pR=8 z=4vZF-|teCG+p`s-1A?##YV5EZOh&pb636DEoS2Td8S48lS^f{EZq5JAA8U*P&`)E zTr&+{S{_?_`){89^PlVPo!u+KU||&cCN;|SR+RWxpQ4ak|1N*Mp>lj{eO`9e=9)_n zwS->8_~!4qdsmgA-TCyRGe2%@nUWVhYo_w9-4YB8eC_{gtN&`9oT8GyrT(7RrAaBl zlg@f>Q_IZ#pR=4*kU>UJYSW*UZBt(TT3+s}`E=RU%5UE!e^!3I`Ez0c2SdYO0RhGX z6Bn#h?7wfP+^-kCb?@y5oQu_;@BZ$4y7O+VGy}u?N+u-+3!y7LCwqR^O_aPF%g(^? z-uqq>8<p07yuNvtmBD@9E<4k^u}lni6W;z>_D+wH!NMhqtTiPIqPOPUnK8{d-b&iM zEXfeGf<;w<Y1jGF#YR~Vjz->4RJ^q#!|$BDslnb=T0vJ|KZ)6#k^eE!``P^a=E=|Z zTu8ih`sc|h8!h+chpt*xmHObw?oV0a*Z3J23R+%(T$;1}qx#IEf4(;>&c;TTT>tp; z>Lx?Uh|&Yy`wK4rocZa^$(@=1awTt@-@I{2n|b%TC<cZG<+cWnit`zfCidLbbLY2S zR)6xOIqug}ojL!r++sIti1)v`%6gTNfk9?xi6Qen<0!K{pDJFT`_55S$#K<dwQ7HJ zwKFg<@J(yru<(ic^y<&cnH5F%LqbEBUOy0MS$}R(PR>gU_e-D7U;Y%Yr4<wyII(LL z=g!w#zuD*2m~D@>F=MU{UAk&jzTdn8-?~qq);$(pd;V_vR{iL}iH+BFtZa6(F))0v zQ&(W(>+a=Vp7Q4B=it(hv5{X6aYvS1H?`dP^y;2%uY2lEtk3WNR~1+P_v@a2xBkT3 zG53r+=PRt1@@%zw`nf;ppAT_=Hh%tR)t+s)51Gy^xxas_?(bi(D-+M%IJ_a9fq~(D z{V@e5zUJx0x6jO9a^3X&Gxh6R`t?fwe6-y8e)Z3jhtkVuZPp5X`M;?}oPj~+nx~6n z$ko;1R%IgDkrwL3adRikj@zgC{QIqKKTc*wR)nX$+f}lD-^-=bB|+0G7n?X<R7uZ2 zyGWcZ?a)tl`!6Mv_H6iYGe^eMP?*J@fq@~`$$_P0Z?E)b!@Wf-9=qq?`Ee_6Z5IOr z!wVZGr3J6QzM2|$b4GZ%wDAiE@%OWP*YBOyJ2zUCfq~&IsFCs7)J)i~&h+#9s1gsw z^CyMfmR{dn{#1Q^Sy>_j1A_|NN;bak#+gRxUhifV)TxD?J$a_vJvAZp)2+?=Z@$d> zy?5m-1LNXjeW#{yK3|@C&U9u$&HW`$uiE^M@;2IVx*Ie#_lUEj;qaoYH@=ZuUi|Qx zUm1K({&&%}?JBju<mNwC_d9uD)n8p(1M&YUfmL@+jEmRJobhsh-25wFP9Auyp7Q9% zzV^j6poA86G;UewlC{4h&#SnruJkI(ne_OU{dUv6k#;W&L^(^=Ei=FO?$X!mUst}o z^p*L;y)9+6!R6B#7+SCI&tD&}I&;#K-f!olJ)<V&cx|#gc}->Q+xc&M99c^Cwzb_| zZu__7y8r*P`F#7r7#JFuK<hZ(Z=UZPSDAYJyJ_~M=)9M|UWUhBE&UCe6Js%C6TI+s zUY(Vs`MS6BJ&SIpTL0U-dO0%#!-jY!r3W8=+}@wdU1;}d;*)lJo0`jv3=B8)83hX} zc%-KMxqE+W>3=DU4<CHl85k1wv$!01czJ#N?dJvlApU%wAYLk!Jfn-&M%VU@u4ANd z&1OUS(@&@M-@g-LXejq|U|~3*xckqi)1UvouiwA>Gy}suRnWT8b{7j426sLXlie4@ z6azC;uNRz<aAElH50nlcG`!W6xipCb+_7U|kP&z&z#y}e#f5=EW<u;?1rW~?G838( zZ6Yu<G%sK!eO2o9&7f6CIsEHZoOt|yx6=9l%Zy&%U-RN!(Y^9tH497+|Nne#&QJEW zmh1Oz-F=#ofuSz|G|jx`?u}XN|2X&S)NOSypZ;mzwtr{4bYiY5bBC+)ue&j6|If?1 zD_^T-Ff%Y%P1j3vSe~7md-nh50{@2r>d}9)`eXhUoZqr7%aetHp+t{S@WRV~|Khbb zy)n<zkA1lFe#o=;|3kS!D_e>yo0zRav$M11YCTUcT=(ULx9t`sCI$wpsSO-2Le{Qb zTbb!x9$uJIo#_k;8i(bebtbE}ZZ-Y?Z&|c=_^<Eg+N>@N3=YdbiLm1@CU^g6eq8-b zyZ)MSy4>}<Q$cGC<d~Ee2>g4Ux%AKN@>NCmKm0v!{cz1<<Mf*IJ+{kUzh+`!sL%&D zf>b=uHq6`k@_bd=p#xoCY_)FwkdNN{;^*0&&o1izELC4q|KPx>FSe_c)cM!=%)5V! zGn<8h!J>$xqv2h7O#dCzr!RbLw&_Y#J$$?5db_sqL;LV0ODCIs{NVi5=TGRTPp1zl zGB7m6a&|Q2g-hK~PVV>p^vc?@^4+tyx@~MS)7SV<nm6_5sptLYj{e`N#JpNNXzNN- z{r$Tv&24vS-hY2#&x?LH`MI-?eLr#X>d9mG^UnS`e($8|`R&W*JlWr8YxVhfc-qCk z`Kfm%$$maBd0Tn0-JF!*Y%#m2bMy5xbK|33m&KI&tXt_9^)EU5nSPCW@V}+GvA=JJ z&41i~DmVS>i50iHzSx?9d~Eb||NhCnkG*Fa?=fOtt$peBifcJ{4p%WUFzjkJ>}YuR zy)4^I%`>-uj{Od$rQc5OuS>qoBPwaS!|1sD<UM<;yv5e~v+-GKZTHoD`svm-%YO+a zn%wGN&z!tD%Qbsj+T%i7qo;?0p7GrHtj50Oy#2SsCr|IcIZM25_LiKyyP5N*ZQuUv zW_a}E{x2tv)(4(4W#6%OpL12pqXVZx_U<+9{&)S_o<Fy*?b)VjSy#|M=g-8H$G>zV zx76-+&yUw<U~niG6kxo&Zcke9x}VF}-mJ*!KeO}Ij6G$sn%n!<ooR@@ZDE#w&UE`! z<9GY_&+Yub$JBD0`?CJEJ}c8x*Gb-2-h1!Xq?hG;CTrIJ_fz|K{_M?)kW{sQflt33 z$lN_|>P)+R?p3MTdAr}f<(VISZsq^Is^WjVkI#%MzJ7n2abBLc+P}-!o~-Edk+`$% zO=I5cR`pYo<<XYQ>+*x=-Q1JB*M8^j$5q<5uW>UlT<8V0iG}6<{hlWC|GaI{*&FjL z_wRFG=JRUe=l>bOYIini{@>I7Q~dAgX?uRTPnC>_o*8#sMZI3dv+Bt*efi0=t<Hp( z#vFaeEgyW-?Ef#_o!MvqWmhN0W=}fx<(J3NzEu8_X!c$Aw!F(P1FdCKR$#hkeC>ag zciNr3s>Xe*&#VofYLuFA-e>*&DfaOj+h>}W{`kK5*8iJ(R4>clniFpQXXVrF(Pi@Y zpRb5jf8$>Ldj2Zso7WoGi8C-Pkml@Y_}*f_!uMZ!^6%;9w~n!R&F}iM>fYx+$NAq) z+~*nh`|Y)y9KX0cKey2ECqK4tf07?}@BFb@+qa#)zuf(t{07bce_sDRvwu0rji44Z zGn3MS+f)1Ot-9B}n7HbH#@W^R>Xyrt)a#ch-P~e&zU&Rtw~6z9p4@V3&z_y&tao+U z+MTcGZ(Fv<a%bknX>;oR`eXk5Og4ID9{o8=%jm=5wKG4jE!y}0o1XNYJ*MV=PhXp3 zzt8A;OsUVYe`(of%alUb@0+~wfAQ;m-FNqVeXxxc)K5s5khS1;=-$1ipZ|wvNA;~d zaq_QLaZ%}~SG&&6EH1Y+uDhIg%-8d@;Z#Y}4N5=zb$7m<SCqDG`@f&p)lbj-aN^mX z3v+m6ZhY(dX|g@-v0?SSXZ!7LP3r8=Imex^eti4+`USCj`O2a}-Yu<`3f#KrZ}7}* zVs7qBb31x47kphTJsYzv=jNpUpUmgltnxcA_j7)+*UTGxG?VvV{n(pu^y~k+rK+}7 zUtYX3Vqj?aJ_D_*ylrBPx%$mn+qOS>^JSTgF6zz(wv}x6ew*c=oL~QP?YnhM3=9uC zmg1^y7F_;&Z)5cC-7U(q?u#=pyvSivT5$RA{jF>7#vT$p`<|PDp~Q?)@WM(hEv=%1 zp0juD?oqzQs-ElR>grlPosoe-#*xLvVfm^RD^AR;-(V^)y<z8WZ%d_K`7M^|{|<(M z>dFf%p(;F5Q&aa<Rav@!y&$^EShhMOJI`YA968%6jt&Nf2EVJ|%FSl#)TxrUcAILi z{}=mg{hNvPF_(@1|B5<qvQKleUBp)T8?*l3Dlh(*^5NN^pBvVKirWR=932gQ;eml0 zZBJOdU$XY+=fw9*wr-uXB`dJxf|k~{?Wb0)c{B6WDKD^NUb472Our!}6dD$`Z0lCj zwTBiuhh3Bt;%sAJXjrGDz_e>h0yAjA@A(D=(3&+?Q2jm>_mJ$E*S;&^|NrcY^lPB~ zEe_@voA7OL*_+S2=vsN)X=&*=-^$|haL~q?5C6(e<Qv}J^6}}OsrUU$*Ut)h^YDH2 zy+8GzcTao#>0tk#xT-zfOy8F+dbA?s+l@(Gwz+=_Zf-Kn|5xU$mEHDa#^Ueh?`LOL zKHj?L^EvCxwJS~q%K!K)Q=D^Eu6}p<)-%_(2mQO-wkNpGI(qvywW;pQpI<b!{MEdF z`r;~;%*g4>%(p$6!Owr<;%?a)&-Ps1VJEux+ZOw$TmF3eza-}4Z_9Vid&~UA?*IJ$ z=Uwmh&84TGZP})_^2N+k^NufhZYb|})$n-U`kkf4!BKVJZ|77kS6#bSbmfb{sq>cd zFaL7z)t41F!s7dD7JPsIzOHEB=lsljJ5-Nf`F1)`R&9G;rSbbcKi|LoJtyRg#!~l} z&YH5fwQaY*eQdq{Y47#=*=wu+KJ4?o`kvQkrM6!f0|P@vzx9)b73o*mCp~+Xb1Q1{ z;&OlPO*`*QI<>fdzxSbqDklTwPqN$H3Dv&8f9?A}?)UPt&OBRdyLo?(##-IXn>Qwu zS6z8_gTK~5G&=75?X&yO-JaT9lyfzX@8Ck6$>l-!ZcLbV<;jd$b}s`XC+6gyd^T<S z<z2xa^Pjz4_I2f-fcal+4m7O&I`{hK%wpF|zpBh~-%Y)=PBka@<g~S+D}M##_O0@X z+MaW6n(zAMe~zvHy!-6m&j%mdP3T&Cw(|Ga`qR@EXBYdd|3Br_scT#E>a=IyyE&(J zdED<6*_Z2|obBzsdF!*YrtJ6Xx4-|CneE+bm;Y~@W~lrs@0IDPMIrBN9(><6*I@0< zD}U;P*8TDSd4Rn?^L|OHR*N%ePt_Ggb{A3i@a5_MbZ6hcIcf3gvdT^OKJCuARZ`Mt zweHp3Yv1LzsLsAuVVb`+<k<`UYtL5P|68`-d&{){w(oOn^+M%;c~pg|S+2_OyZNcC z?)$T2IV*1!bFX%eT=uryUTZ1;|GK_=_l_)^BIkbnjZOU1jW1_j|NQN}-3_rjG6(GP z>sD)8KC@q%_4)tw@_TjKOCR^$JzQgZ`SFUN=+}$nmVUAL#ca9idH$zk$Lh~7OSYe| z*vvFFIO|j6EB^N!%c{bbK3_Ob?SFms_pNtM6t*S)nES5tgpagJWae98`5(J#Joo9z z?>Mz|($YzL7VUU4>BI~hyBUm}4IC=w8M?Lpq2ebVs_;}at^fCL_blQ5djYKVi*CPO zv!`Dy@5XVy`UJyW$80T+T8Sl3_g{O&qM>l(w}d_FN?`D5_xC3a9G4G%Pn0{q;?TXQ z69H<;T-%+u@Mx}@QBveM>5Qhf_-lFLZ?hgSFPJmYN6+)}kFuzc3-zuqRF_OHo|NJk zX=Pz{=zXp03+A7qlV3|7d>Ou7)F;$XZRQ?T-(;=htJhz)-M5=h^X8K#m0rzHyDBF> z-uB_PKIdUI4Gp(5>+6^1)cP)$&8d7WCcSUL<-FvxQ+|HA(5!WGvgFk7O!-SMonnhU zQ{ogiC+YoCTYt;6l}USJGG<R$V6L#!GW}t_^Xm(HRwX&j+Ew9h`zOi8Msi|#6#pu_ zqCIBQw7Z(pq9Q7Pe3M(@b#GEwY}DLy(<Yog`hMPoxY$W5$G0^7zg-p$4gw`5`8(D% z+1qv`vR^X%dCUCY9G$p?Lyo~uCr#q1PnpQh@;Cpb+}<O)>u2<a{W>^>`_hg>Z)<(O ze-WK~@c9opk<0TVpC~?jAbR(5e&%<-S9VsnMUus?@1Jl{-RjpgzyCbj_oSHZiP*V+ zj?FyBAChw?hnM*8Q{+;V-5Zx(7AxCf&~yEm-H($`r?_@*JXqC{Si5F&P)_cqzf+PK zZXf$xH0h;fX55?oy5$a6I8PkkKk04W8D@u>JSTJI&#%@#z9-9PmW;*!x6z&&8zs2= zt{+bIv5^Xr+3_qf^>1X=-Kh)(&2Jx6s=7+;e|;2k!@En}^?7lQEEbOZ=PlK}x%NCY z*_`Av?RUlAUB8xj>3MGIc=5#bvWTU^oB0#>?^Qh8zcY9FV~I85Njz6h26;xMNaQy> zH@#|Gy^LA(vw6z5o^ua&a4ut7lfH7@KX0M=58SqkAKH<d^Lce)e1O`2MeiV{>+H9e z*Iv6{H&I=4rB;ENu<G$g7OJVCMfS_9PZ=^W9(>>}@&C}Hx8*7a8y1vyJ>MO@eB#U( zs)?U$yHAR2-@lfNT_Klg|FZd0UOxCK`nkeOG%r7Z&tYnCO7f(Wrc?iK;{5h&3!7;7 zN!H7&y>lvjF4!HqT{HhF@8<4@+a@<%-d*dK8kuO5e_q5=K6%crLNouoViic7f7<=s zk5SN%JwJI?r0w3E14jLtmn^52Z;Shx9KGWkuWQ_<-G2^0V3U1x(vthTrQ?lNzmMfi zos=$V_F~=lXN6W3jfZt+2D|Q+Wpr%V+P37xgM!^J{oOy!x>#`K&!dFh^$RZ-9o)jf zR)6gL@+F_OAI*O6(KLO_ujZ<$8%*`;zFXe>YFYS6_u@9m(w{R-xbvC!-#)eR;)FFX z)~|0VlYV0&8gcA6Z~Ucqch*)tt6+{gZhNZ4!)SL}U1{&_pL4=~=Pfn%>3{L!P2K#Z zZzkP*V#xn;?&&Ge==~>fPgmj412@|_4?EVpc{qEDPT$6d>D%Mqt=_a^y2SoH5ti!~ zX=&e?JJsOq&Bf<m&d7fB(%)wpW87=W#NB(JcI=6~_vhaq<Ku-3wZ4Z>kZ=y&xBi^P zcfY>J4qGjkuhLqf)%-Z8`ai$Lv3kGfPnMial9Ac{FVHHleZlpE`TUVF^Nr`Xm25ZV z-Ojw|TgS^MLg#niuh<pQqp{cS-l><bPi?%u#Ix^y)X(OZg0i-&tA#D~j=kag-&61N zL|$0s`I)x$kvrCh{bGsik-o#<;l(Xd{@j2sb>iEfIiHuE%BW_Y+5rJq?ingD9e@9L z=KK?rWbR8(ekxd35Z?J%g8QK4+`Q-iHa@%XlvmASsi;h_+I5{{_QsF1cfCEk;BXR; zh%2M?MyJrH4`$pqQ21bYEkI0D^x@rF5lz>pkMnC;_$`hVZhZH!|NKVgrVm}2W{Xws zNFASfjl1cG`=gn=KYpK~<GEl*N>$;`!VuPvGd7j(De5`8<KJSb=$Q{#?n_TvrpeMD zdG1U?GsiOFPn-5%JM%ltQ1vv=w|oD)A@1&2Q}w)oBkIS*<0Xblr`xCe+r0H<%C+u- zN0P0Q4{R-$u54bk!ZdZ#8O__X9o-wg+B`~ex@fnvyJMAPWYEL1sQsC&ozhzh)sjDL zDwj?XIoWb4_u;#YU4N$}Z_{4+s?DwX8|R1J%$H_sZ#s3)cZ+v>imOAxm!p3f)OM$s z$xReJE)&J__QT(U^L{p4&-@@#|4aB|N!RV$Zx&9O<aaM<hq_DDK_5sWN?HH?)7hJC z?l;~{`nl*(_S*Wu@<YKj)`^9mwKJuHML1opRDCBmKi7Sv7&$9IOw-j$%`-{nbv|$P zookYDg(qt&e5a|3yqr<-gL|c=5{LZ6W>Mv5)BmSgS=ZF>4moK#+5Eon@~<L>>NZEs zgT)?af3jKFp&xN3_|8;=*P6%gOx~Mnw@bnInMkG6#Iq;T_HT%ovLi74ef!&rbeD&} zW`0g_dMW$xH{-Rt5)TFEb)J0m<>2|HF?-VNcB*+l{`K#Y=E)bPo`MhAZ%Zl2KG?$f zJKf^rd7r#G)z0)MFX!0QoqqI-U2LZR4f}h4_dtB>!cw6x>eBG`F?)W*6Wf}4<2DXX z_V`CW_b2q!EzrrFCBFZ_=VsffwyddUDt+fQPjmJ3f1Q8v)w_t?)89J#WG1~-?Vio8 zb^P$J<6ElLOa14#SNy-*;dJPrxWUeZx?0DlEfsIqcYI?D_qRC4BC$;6vGl25j*lyH z|NOho&vB9`?>CQm-m*!d#+!B=c>84=ySJaT{uhtQhOWQABr5jw7EBWCzUX@Q^U03} zaqTZ&-0WLf)^7Pv^X=r0k}_8-$-rr%eY_hE7T@}NP<i!QsDJ*=*ygJ4XUtRD@PtwE z0@JRuKivQSjQ{^_V_pzcg$ti_?4Q^358Q9`G=Ap5lj7jF_euFtx7waro1rPS<Ih1` zGlgB#4LYF$C)A%_{CRd^!-`uKckk#y%1|Yx`F*jH=kDn|R}^(wt*$j&5iY(gweItR z0uDL5qdBHBT5?56f>7}Dh1RP#X~rtIvadgSbamQBF#*%qjb~34gtb8}>Zq}}Z8SSo zVT+_dZeMkoZZUu9i{zEgD)XyW{_d#S`Md11l<DoiY4)dMLnk#UK~0_bJzMgFPIpC- z!qT`?b&h-2{9RKSYjXQ?+WypnEmd*})vSR>V|Q$x<)W)Ui;=V3G2mv-=Cc8!6QOpV zXy1G$yDLp+^Q;|}XCwGq%(UCzg$ll%m9(vD<JFa^rxh|J8FaT--U;Q`R1kt%`Ln=` zyUOU5*1}ZPz*{-D&93IGu4TOV%GLYTlanUmk$Lf9BD$;Fr!m6p=%}$+&3MsBC5pG} zQ<}|+z^@A%GPb6i%+zCf%{jGODil^m)acxn3ejg?nDew$Qts_qxu(OxXCADp4BWV> zwz4tx>V!jzPzOxxPrrWZ^XYrer$5FmpP}o#@T_GXS34|*>!f#2+ZF%JjJ<i`(%Qzp z%}+~Bd2WgEAi3XS)zs@(7i4^Xezx|#rN|2lY5V*($JwFITpcho?E20weI35K)vW&h zo%*xROmolHmW6U_%D{tQhne&I*r`s{%V*lEUAeh+eG}Ym_phyEc#-g5v7&0n;s6h* lfln@fSperi#jsLO>i4b_oqb}*O>t1C*wfX|Wt~$(697q#az+3E diff --git a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/dfoerdermittel_with_anlage/3ecc7e49-5dc2-499a-9be8-ce8b9d8c8714_Fachnachricht.xml b/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/dfoerdermittel_with_anlage/3ecc7e49-5dc2-499a-9be8-ce8b9d8c8714_Fachnachricht.xml deleted file mode 100644 index 14aa5016..00000000 --- a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/dfoerdermittel_with_anlage/3ecc7e49-5dc2-499a-9be8-ce8b9d8c8714_Fachnachricht.xml +++ /dev/null @@ -1,32 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.dataport.de/dFAD/ApplicationDataMessageSchema"> - <ApplicationFormId>08dc645c-6704-48e7-868c-6afa8510384c</ApplicationFormId> - <Timestamp>2024-04-24T16:32:54.696248+02:00</Timestamp> - <ApplicationDataMessageVersion>3</ApplicationDataMessageVersion> - <Title>OZG-Cloud Test 2.0</Title> - <ProjectName>OZG-Cloud Test 2.0</ProjectName> - <ProjectTitle>OZG-Cloud Test 2.0</ProjectTitle> - <TransmittedApplicationId>UGLAG4ILLpz6a0</TransmittedApplicationId> - <MetaText1>9795669</MetaText1> - <InboxReference>hh/hh/4dd01647-b9d9-4775-1b50-08da3d83800a</InboxReference> - <AuthenticationAccountType>ServicekontoBasic</AuthenticationAccountType> - <AuthenticationMethod>UsernameAndPassword</AuthenticationMethod> - <AuthenticationIdentityDetails xsi:nil="true" /> - <Pages> - <Page> - <Title>Willkommen auf Ihrer neuen Seite</Title> - <Navigation>Freimodul 1</Navigation> - <Controls> - <Control> - <Upload> - <Label>Dateiupload</Label> - <Alias /> - <Files> - <Name>Admin.png</Name> - </Files> - </Upload> - </Control> - </Controls> - </Page> - </Pages> -</application> diff --git a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/dfoerdermittel_with_anlage/b29d45cc-9aac-4452-ad08-60f5ab3bab95_Geschaeftsgang.Geschaeftsgang.0201.xml b/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/dfoerdermittel_with_anlage/b29d45cc-9aac-4452-ad08-60f5ab3bab95_Geschaeftsgang.Geschaeftsgang.0201.xml deleted file mode 100644 index 021987e3..00000000 --- a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/dfoerdermittel_with_anlage/b29d45cc-9aac-4452-ad08-60f5ab3bab95_Geschaeftsgang.Geschaeftsgang.0201.xml +++ /dev/null @@ -1,128 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Geschaeftsgang.Geschaeftsgang.0201 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:schemaLocation="urn:xoev-de:xdomea:schema:2.4.0 xdomea-Nachrichten-VBS.xsd" xmlns="urn:xoev-de:xdomea:schema:2.4.0"> - <Kopf> - <ProzessID>b29d45cc-9aac-4452-ad08-60f5ab3bab95</ProzessID> - <Nachrichtentyp listURI="urn:xoev-de:xdomea:codeliste:nachrichtentyp" listVersionID="1.0"> - <code xmlns="">0201</code> - </Nachrichtentyp> - <Erstellungszeitpunkt>2024-04-24T16:32:54.7247984+02:00</Erstellungszeitpunkt> - <Absender> - <Behoerdenkennung> - <Kennung listURI="" listVersionID=""> - <code xmlns="">010200200000</code> - </Kennung> - <Praefix listURI="" listVersionID=""> - <code xmlns="">gad</code> - </Praefix> - </Behoerdenkennung> - </Absender> - <Empfaenger> - <Behoerdenkennung> - <Kennung listURI="" listVersionID=""> - <code xmlns="">dev-environment@ozg-cloud.de</code> - </Kennung> - <Praefix listURI="" listVersionID=""> - <code xmlns="">gae</code> - </Praefix> - </Behoerdenkennung> - </Empfaenger> - <SendendesSystem> - <InstanzID>HH_dFoerdermittelantrag</InstanzID> - <Produktname>dFoerdermittelantrag</Produktname> - <Version>2.1.999.0</Version> - </SendendesSystem> - <EmpfangsbestaetigungAnInitiator>false</EmpfangsbestaetigungAnInitiator> - <EmpfangsbestaetigungAnVorgaenger>false</EmpfangsbestaetigungAnVorgaenger> - </Kopf> - <Hauptobjekt> - <Dokument> - <Identifikation> - <ID>5d142b11-7b52-4bfc-b14d-8d02fee84aa3</ID> - </Identifikation> - <AllgemeineMetadaten> - <Betreff>OZG-Cloud Test 2.0</Betreff> - <Kennzeichen>08dc645c-6704-48e7-868c-6afa8510384c</Kennzeichen> - </AllgemeineMetadaten> - <Version> - <Nummer>1</Nummer> - <Format> - <Name listURI="urn:xoev-de:xdomea:codeliste:dateiformat" listVersionID="1.0" xsi:type="DateiformatCodeType"> - <code xmlns="">030</code> - <name xmlns="">xml-eXtensible Markup Language</name> - </Name> - <Version>0.0</Version> - <Primaerdokument> - <Dateiname>3ecc7e49-5dc2-499a-9be8-ce8b9d8c8714_Fachnachricht.xml</Dateiname> - </Primaerdokument> - </Format> - <Format> - <Name listURI="urn:xoev-de:xdomea:codeliste:dateiformat" listVersionID="1.0" xsi:type="DateiformatCodeType"> - <code xmlns="">018</code> - <name xmlns="">pdf-Portable Document Format</name> - </Name> - <Version>0.0</Version> - <Primaerdokument> - <Dateiname>06d36643-2883-4b74-9231-8dc7f2693af2_Zusammenfassung-01f903b0-c61e-429d-807f-5011d180c073.pdf</Dateiname> - </Primaerdokument> - </Format> - </Version> - </Dokument> - </Hauptobjekt> - <ExternerGeschaeftsgang> - <Identifikation> - <ID>3ecc7e49-5dc2-499a-9be8-ce8b9d8c8714</ID> - </Identifikation> - <Beteiligungsschritt> - <Nummer>1</Nummer> - <Status listURI="urn:xoev-de:xdomea:codeliste:beteiligungsstatus" listVersionID="1.0"> - <code xmlns="">001</code> - <name xmlns="">Der Schritt liegt in der Zukunft.</name> - </Status> - <Verfuegung> - <Ersteller> - <Behoerdenkennung> - <Kennung listURI="" listVersionID=""> - <code xmlns="">010200200000</code> - </Kennung> - <Praefix listURI="" listVersionID=""> - <code xmlns="">gad</code> - </Praefix> - </Behoerdenkennung> - </Ersteller> - <Adressat> - <Behoerdenkennung> - <Kennung listURI="" listVersionID=""> - <code xmlns="">dev-environment@ozg-cloud.de</code> - </Kennung> - <Praefix listURI="" listVersionID=""> - <code xmlns="">gae</code> - </Praefix> - </Behoerdenkennung> - </Adressat> - <Erstellungsdatum>2024-04-24</Erstellungsdatum> - <Erstellungsuhrzeit>16:32:54</Erstellungsuhrzeit> - </Verfuegung> - </Beteiligungsschritt> - </ExternerGeschaeftsgang> - <Anlage> - <Dokument> - <Identifikation> - <ID>1d8ca22a-9d20-4507-aa5e-b764bb5642f0</ID> - </Identifikation> - <Typ>Anlage</Typ> - <Version> - <Nummer>1</Nummer> - <Format> - <Name listURI="urn:xoev-de:xdomea:codeliste:dateiformat" listVersionID="1.0" xsi:type="DateiformatCodeType"> - <code xmlns="">019</code> - <name xmlns="">png-Portable Network Graphics</name> - </Name> - <Version>0.0</Version> - <Primaerdokument> - <Dateiname>1d8ca22a-9d20-4507-aa5e-b764bb5642f0_Admin.png</Dateiname> - </Primaerdokument> - </Format> - </Version> - </Dokument> - </Anlage> -</Geschaeftsgang.Geschaeftsgang.0201> diff --git a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/dfoerdermittel_without_anlage/269562a3-9142-45b8-9bd2-db840b8322bf_Fachnachricht.xml b/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/dfoerdermittel_without_anlage/269562a3-9142-45b8-9bd2-db840b8322bf_Fachnachricht.xml deleted file mode 100644 index 618c4813..00000000 --- a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/dfoerdermittel_without_anlage/269562a3-9142-45b8-9bd2-db840b8322bf_Fachnachricht.xml +++ /dev/null @@ -1,32 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.dataport.de/dFAD/ApplicationDataMessageSchema"> - <ApplicationFormId>08db3c1c-db1f-4d27-8dec-73af167e87f2</ApplicationFormId> - <Timestamp>2023-04-18T11:40:24.9940624+02:00</Timestamp> - <ApplicationDataMessageVersion>1</ApplicationDataMessageVersion> - <Title>Testantrag XML-Fachnachricht-Erweiterung</Title> - <ProjectName>XML-Fachnachricht-Erweiterung</ProjectName> - <ProjectTitle>XML-Fachnachricht-Erweiterung</ProjectTitle> - <TransmittedApplicationId>7AtSMHpx3LfJp4</TransmittedApplicationId> - <InboxReference>sh/sh/4dd01647-b9d9-4775-1b50-08da3d83800a</InboxReference> - <MetaText1>9795669</MetaText1> - <Pages> - <Page> - <Title>Beispiel Seite 1</Title> - <Navigation>Beispiel Seite 1</Navigation> - <Controls> - <Control> - <RadioButtonGroup> - <Label>Beispiel-Steuerelement</Label> - <Alias>beispiel-element</Alias> - <SelectedItems> - <SelectedItem> - <Label>Beispielwert 2</Label> - <Value>bsp-2</Value> - </SelectedItem> - </SelectedItems> - </RadioButtonGroup> - </Control> - </Controls> - </Page> - </Pages> -</application> \ No newline at end of file diff --git a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/dfoerdermittel_without_anlage/c2170d27-7a58-4d94-afdf-62c89b9e1557_Zusammenfassung.pdf b/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/dfoerdermittel_without_anlage/c2170d27-7a58-4d94-afdf-62c89b9e1557_Zusammenfassung.pdf deleted file mode 100644 index 7b21e652f0decdd019673853696d5ea448f44643..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51229 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 J)z#mP3jl(wZSnvB diff --git a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/dfoerdermittel_without_anlage/d5be7468-e620-4126-a40e-61a7f9b46345_Geschaeftsgang.Geschaeftsgang.0201.xml b/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/dfoerdermittel_without_anlage/d5be7468-e620-4126-a40e-61a7f9b46345_Geschaeftsgang.Geschaeftsgang.0201.xml deleted file mode 100644 index 7f6df652..00000000 --- a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/dfoerdermittel_without_anlage/d5be7468-e620-4126-a40e-61a7f9b46345_Geschaeftsgang.Geschaeftsgang.0201.xml +++ /dev/null @@ -1,111 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Geschaeftsgang.Geschaeftsgang.0201 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="urn:xoev-de:xdomea:schema:2.4.0 xdomea-Nachrichten-VBS.xsd" - xmlns="urn:xoev-de:xdomea:schema:2.4.0"> - <Kopf> - <ProzessID>d5be7468-e620-4126-a40e-61a7f9b46345</ProzessID> - <Nachrichtentyp listURI="urn:xoev-de:xdomea:codeliste:nachrichtentyp" listVersionID="1.0"> - <code xmlns="">0201</code> - </Nachrichtentyp> - <Erstellungszeitpunkt>2023-04-04T06:59:15.4231885+02:00</Erstellungszeitpunkt> - <Absender> - <Behoerdenkennung> - <Kennung listURI="" listVersionID=""> - <code xmlns="">010100200000</code> - </Kennung> - <Praefix listURI="" listVersionID=""> - <code xmlns="">gad</code> - </Praefix> - </Behoerdenkennung> - </Absender> - <Empfaenger> - <Behoerdenkennung> - <Kennung listURI="" listVersionID=""> - <code xmlns="">noreply@ozg-sh.de</code> - </Kennung> - <Praefix listURI="" listVersionID=""> - <code xmlns="">gae</code> - </Praefix> - </Behoerdenkennung> - </Empfaenger> - <SendendesSystem> - <InstanzID>DE_dFoerdermittelantrag</InstanzID> - <Produktname>dFoerdermittelantrag</Produktname> - <Version>1.0.1.0</Version> - </SendendesSystem> - <EmpfangsbestaetigungAnInitiator>false</EmpfangsbestaetigungAnInitiator> - <EmpfangsbestaetigungAnVorgaenger>false</EmpfangsbestaetigungAnVorgaenger> - </Kopf> - <Hauptobjekt> - <Dokument> - <Identifikation> - <ID>be180ad4-da79-4de2-99b9-86aac2ca7c32</ID> - </Identifikation> - <AllgemeineMetadaten> - <Betreff>OZG-Cloud XTA-Test</Betreff> - <Kennzeichen>08db344b-0302-478e-8bc2-37edeb652460</Kennzeichen> - </AllgemeineMetadaten> - <Version> - <Nummer>1</Nummer> - <Format> - <Name listURI="urn:xoev-de:xdomea:codeliste:dateiformat" listVersionID="1.0" - xsi:type="DateiformatCodeType"> - <code xmlns="">030</code> - <name xmlns="">xml-eXtensible Markup Language</name> - </Name> - <Version>0.0</Version> - <Primaerdokument> - <Dateiname>269562a3-9142-45b8-9bd2-db840b8322bf_Fachnachricht.xml</Dateiname> - </Primaerdokument> - </Format> - <Format> - <Name listURI="urn:xoev-de:xdomea:codeliste:dateiformat" listVersionID="1.0" - xsi:type="DateiformatCodeType"> - <code xmlns="">018</code> - <name xmlns="">pdf-Portable Document Format</name> - </Name> - <Version>0.0</Version> - <Primaerdokument> - <Dateiname>c2170d27-7a58-4d94-afdf-62c89b9e1557_Zusammenfassung.pdf</Dateiname> - </Primaerdokument> - </Format> - </Version> - </Dokument> - </Hauptobjekt> - <ExternerGeschaeftsgang> - <Identifikation> - <ID>269562a3-9142-45b8-9bd2-db840b8322bf</ID> - </Identifikation> - <Beteiligungsschritt> - <Nummer>1</Nummer> - <Status listURI="urn:xoev-de:xdomea:codeliste:beteiligungsstatus" listVersionID="1.0"> - <code xmlns="">001</code> - <name xmlns="">Der Schritt liegt in der Zukunft.</name> - </Status> - <Verfuegung> - <Ersteller> - <Behoerdenkennung> - <Kennung listURI="" listVersionID=""> - <code xmlns="">010100200000</code> - </Kennung> - <Praefix listURI="" listVersionID=""> - <code xmlns="">gad</code> - </Praefix> - </Behoerdenkennung> - </Ersteller> - <Adressat> - <Behoerdenkennung> - <Kennung listURI="" listVersionID=""> - <code xmlns="">noreply@ozg-sh.de</code> - </Kennung> - <Praefix listURI="" listVersionID=""> - <code xmlns="">gae</code> - </Praefix> - </Behoerdenkennung> - </Adressat> - <Erstellungsdatum>2023-04-04</Erstellungsdatum> - <Erstellungsuhrzeit>06:59:15</Erstellungsuhrzeit> - </Verfuegung> - </Beteiligungsschritt> - </ExternerGeschaeftsgang> -</Geschaeftsgang.Geschaeftsgang.0201> diff --git a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/mantelantrag_with_anlage/03d5bd15-2c1a-4c50-809c-0efcb21f610f_Antrag_Max_Mustermann_SGBIX.pdf b/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/mantelantrag_with_anlage/03d5bd15-2c1a-4c50-809c-0efcb21f610f_Antrag_Max_Mustermann_SGBIX.pdf deleted file mode 100644 index 5b07b65f3a5355f3dc096a260129c5e9aaa0881e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39794 zcmY!laB<T$)HCDdQhoIJ{AFG)Rp+AA#FEq$g``S_<jfL<f|Ru4(#(=n1	Za=qlt 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 Vfs`f27G~xqyj-fPuKsSkTmWTc5#9g* diff --git a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/mantelantrag_with_anlage/1d8ca22a-9d20-4507-aa5e-b764bb5642f0_Admin.png b/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/mantelantrag_with_anlage/1d8ca22a-9d20-4507-aa5e-b764bb5642f0_Admin.png deleted file mode 100644 index 9ec0d7a08d0be142997505dd5b6d13015054d5d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 64973 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 diff --git a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/mantelantrag_with_anlage/6082c5f7-61ab-4746-a482-0a400cc0301a_Antrag_Max_Mustermann_SGBIX.xml b/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/mantelantrag_with_anlage/6082c5f7-61ab-4746-a482-0a400cc0301a_Antrag_Max_Mustermann_SGBIX.xml deleted file mode 100644 index 5d7032ca..00000000 --- a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/mantelantrag_with_anlage/6082c5f7-61ab-4746-a482-0a400cc0301a_Antrag_Max_Mustermann_SGBIX.xml +++ /dev/null @@ -1,229 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<myForm xmlns:t="http://xmlns.cit.de/intelliform/transaction" - t:uuid="1d4a1b9b-b456-4d76-becb-eff301665993" t:id="20240404370530710707" t:timestamp="2024-04-04T08:17:33.211Z" - t:sender="test.afm.schleswig-holstein.de" - t:form="Antrag auf Leistungen der Eingliederungshilfe und/oder Sozialhilfe" - t:form-id="maa_mantelantrag/maa_mantelantrag" t:customer="Schleswig-Holstein" t:customer-id="sh" - t:client="Schleswig-Holstein" t:client-id="land" t:lang="de" t:vollstaendigkeit="true"> - <gebiets_id>9007404</gebiets_id> - <egh_sgb9>true</egh_sgb9> - <bes_wohnform>false</bes_wohnform> - <hzl>false</hzl> - <grusi>false</grusi> - <hzg>false</hzg> - <hzp>false</hzp> - <hzuebss>false</hzuebss> - <hial>false</hial> - <ambulant>false</ambulant> - <stationaer>false</stationaer> - <sessionid>4cb66bdd-ad27-41c6-8f4b-fc7f023970ad</sessionid> - <anliegen_id>[8969232]</anliegen_id> - <anliegen_namen>[Eingliederungshilfe]</anliegen_namen> - <TypenIDLN>233034601</TypenIDLN> - <logopath1>https://include-sh-schul.zfinder.de/IWFileLoader?tsaid_mediaUUID=21734555-12d6-47aa-bd2e-5794634c592c - </logopath1> - <logopath2/> - <logopath3/> - <gebiet_typid>300004</gebiet_typid> - <gebiet_parent_id1>9006398</gebiet_parent_id1> - <gebiet_parent_typid1>300003</gebiet_parent_typid1> - <gebiet_parent_id2>9006398</gebiet_parent_id2> - <gebiet_parent_typid2>300003</gebiet_parent_typid2> - <gebiet_parent_id3>9006398</gebiet_parent_id3> - <gebiet_parent_typid3>300003</gebiet_parent_typid3> - <gebiet_parent_name3>Segeberg</gebiet_parent_name3> - <oeid>[266237176]</oeid> - <link_datenschutz>https://dse.segeberg.de/pdf/50_30_001.pdf</link_datenschutz> - <link_datenschutz2/> - <link_datenschutz3/> - <link_bankgeheimnis> - https://test.afm.schleswig-holstein.de/intelliform/templates/land/default/default/maa_mantelantrag/Erklaerung_Befreiung_vom_Bankgeheimnis.pdf - </link_bankgeheimnis> - <link_grundsicherung> - https://test.afm.schleswig-holstein.de/intelliform/templates/land/default/default/maa_mantelantrag/Anlage_Erklaerung_zur_Zahlung_von_Grundsicherungsleistungen_an_Leistungserbringer.pdf - </link_grundsicherung> - <link_schweigepflicht> - https://test.afm.schleswig-holstein.de/intelliform/templates/land/default/default/maa_mantelantrag/Schweigepflichtentbindung.pdf - </link_schweigepflicht> - <link_abtretung> - https://test.afm.schleswig-holstein.de/intelliform/templates/land/default/default/maa_mantelantrag/Anlage_Einverstaendniserklaerung_und_Abtretung.pdf - </link_abtretung> - <link_wahrheit> - https://test.afm.schleswig-holstein.de/intelliform/templates/land/default/default/maa_mantelantrag/Erklaerung_der_antragstellenden_Person.pdf - </link_wahrheit> - <kontaktsystem_oeid>9795669</kontaktsystem_oeid> - <OrganisationseinheitenBEZEICHNUNG>Kreis Segeberg - Eingliederungshilfe für Minderjährige - </OrganisationseinheitenBEZEICHNUNG> - <zust_strasse>Hamburger Straße</zust_strasse> - <zust_hausnummer>30</zust_hausnummer> - <zust_postleitzahl>23795</zust_postleitzahl> - <ortid>9007404</ortid> - <zust_ort>Bad Segeberg</zust_ort> - <zust_telefonnummer/> - <zust_faxnummer/> - <zust_emailadresse>Eingliederungshilfe-Minderjaehrige@segeberg.de</zust_emailadresse> - <zustellung_nachrichtenbroker>afmsh:010600000000_Online-Dienste</zustellung_nachrichtenbroker> - <zustellung_email_ln/> - <zustellung_webservice/> - <kontaktsystem_oeid2/> - <OrganisationseinheitenBEZEICHNUNG2/> - <zust_strasse2/> - <zust_hausnummer2/> - <zust_postleitzahl2/> - <ortid2/> - <zust_ort2/> - <zust_telefonnummer2/> - <zust_faxnummer2/> - <zust_emailadresse2/> - <zustellung_nachrichtenbroker2/> - <zustellung_email_ln2/> - <zustellung_webservice2/> - <kontaktsystem_oeid3/> - <OrganisationseinheitenBEZEICHNUNG3/> - <zust_strasse3/> - <zust_hausnummer3/> - <zust_postleitzahl3/> - <ortid3/> - <zust_ort3/> - <zust_telefonnummer3/> - <zust_faxnummer3/> - <zust_emailadresse3/> - <zustellung_nachrichtenbroker3/> - <zustellung_email_ln3/> - <zustellung_webservice3/> - <grund>Hilfe</grund> - <a_grund_bescheinigung>false</a_grund_bescheinigung> - <nur_egh>true</nur_egh> - <nur_blindenhilfe>false</nur_blindenhilfe> - <nur_pers_angaben>false</nur_pers_angaben> - <nur_pers_mehrbedarfe>false</nur_pers_mehrbedarfe> - <antragsteller> - <anrede/> - <titel/> - <pers_nachname>Mustermann</pers_nachname> - <geburtsname/> - <pers_vorname>Max</pers_vorname> - <geburtsdatum>2000-04-05</geburtsdatum> - <geburtsort/> - <sh_strasse>Musterstrasse</sh_strasse> - <sh_hausnummer>12</sh_hausnummer> - <adresszusatz/> - <sh_plz>12345</sh_plz> - <ort>Bad Segeberg</ort> - <kont_email/> - <telefon/> - <mobiltelefon/> - <familienstand>ledig</familienstand> - <deutsch>deutsch</deutsch> - <a_ausweisdokument>false</a_ausweisdokument> - <erwerb/> - <erwerbsunfaehig/> - <betreuer>false</betreuer> - <partner>false</partner> - <kont_telefonnummer/> - </antragsteller> - <angaben_antragsteller> - <sozialhilfe_p>Nein</sozialhilfe_p> - <eingliederungshilfe>Nein</eingliederungshilfe> - <leistungen>Nein</leistungen> - <rentenantrag>Nein</rentenantrag> - <sozialversicherungsnummer/> - <rentenbeitraege/> - <auslandserwerb/> - <lebensunterhalt>Arbeit</lebensunterhalt> - <zuzug>false</zuzug> - <pflege_noetig/> - <ansprueche_dritte>false</ansprueche_dritte> - <stoerung_vorhanden>false</stoerung_vorhanden> - <sozialhilfe>Nein</sozialhilfe> - </angaben_antragsteller> - <weitere_personen>false</weitere_personen> - <fin_antragsteller> - <groesse_wohnung unit="m2"/> - <untervermietet_wohnung unit="m2"/> - <raeume/> - <baujahr/> - <wohnung_kosten unit="Euro"/> - <betriebskosten unit="Euro"/> - <heizkosten unit="Euro"/> - <heizart/> - <a_mietvertrag>false</a_mietvertrag> - <pauschalmiete unit="Euro"/> - <warmwasser/> - <miete_vermieter/> - <wohngeld/> - </fin_antragsteller> - <wohnart>Mietwohnung</wohnart> - <ver> - <ver-item> - <name_id>a</name_id> - <versicherung_vorhanden>false</versicherung_vorhanden> - <name>Max Mustermann</name> - <fruehere_kv_vorhanden/> - <frueherer_erwerb_v/> - <bedarf_hzg/> - <kuenftige_kv/> - </ver-item> - </ver> - <werkstatt/> - <leistungen_bezogen>false</leistungen_bezogen> - <einkommen_antragsteller> - <lgh_hzl_bg/> - <nselbststaendig_vorhanden>false</nselbststaendig_vorhanden> - <gewerbe_vorhanden>false</gewerbe_vorhanden> - <landwirtschaft_vorhanden>false</landwirtschaft_vorhanden> - <vermietung_vorhanden>false</vermietung_vorhanden> - <kapital_vorhanden>false</kapital_vorhanden> - <krankenkasse_vorhanden>false</krankenkasse_vorhanden> - <pflegekasse_vorhanden>false</pflegekasse_vorhanden> - <alg_vorhanden>false</alg_vorhanden> - <leistungen_afa_vorhanden>false</leistungen_afa_vorhanden> - <wohngeld_vorhanden>false</wohngeld_vorhanden> - <kindergeld_vorhanden>false</kindergeld_vorhanden> - <elterngeld_vorhanden>false</elterngeld_vorhanden> - <rente_inland_vorhanden>false</rente_inland_vorhanden> - <rente_ausland_vorhanden>false</rente_ausland_vorhanden> - <rente_sonstige_vorhanden>false</rente_sonstige_vorhanden> - <unterhalt_vorhanden>false</unterhalt_vorhanden> - <blindengeld_vorhanden>false</blindengeld_vorhanden> - <sonstiges_vorhanden>false</sonstiges_vorhanden> - <einkommen_gepfaendet>false</einkommen_gepfaendet> - <einkommen_vorhanden>false</einkommen_vorhanden> - </einkommen_antragsteller> - <vermoegen> - <vermoegen-item> - <name_id>a</name_id> - <bargeld_vorhanden>false</bargeld_vorhanden> - <konto_vorhanden>false</konto_vorhanden> - <sparguthaben_vorhanden>false</sparguthaben_vorhanden> - <altersvorsorge_vorhanden>false</altersvorsorge_vorhanden> - <bausparvertraege_vorhanden>false</bausparvertraege_vorhanden> - <aktien_vorhanden>false</aktien_vorhanden> - <paypal_vorhanden>false</paypal_vorhanden> - <lebensversicherung_vorhanden>false</lebensversicherung_vorhanden> - <kfz_vorhanden>false</kfz_vorhanden> - <sachwerte_vorhanden>false</sachwerte_vorhanden> - <haus_vorhanden>false</haus_vorhanden> - <hypotheken_vorhanden>false</hypotheken_vorhanden> - <erbschaft_vorhanden>false</erbschaft_vorhanden> - <sonstiges_vorhanden>false</sonstiges_vorhanden> - <veraeusserung_vermoegen>false</veraeusserung_vermoegen> - <vermoegen_vorhanden>false</vermoegen_vorhanden> - <name>Max Mustermann</name> - </vermoegen-item> - </vermoegen> - <datenerhebung>true</datenerhebung> - <vollstaendigkeit>true</vollstaendigkeit> - <a_befreiung_bankgeheimnis>false</a_befreiung_bankgeheimnis> - <a_entbindung_schweigepflicht>false</a_entbindung_schweigepflicht> - <name_bank/> - <iban/> - <kontoinhaber/> - <name_pdf>Antrag_Max_Mustermann_SGBIX</name_pdf> - <postfachnachicht>Sehr geehrte/r Antragsteller*in,<br/><br/>Ihr Antrag wurde erfolgreich übermittelt.<br/><br/>Bitte - denken Sie daran, zur Vervollständigung Ihres Antrages die unterschriebenen Dokumente und erforderlichen - Nachweise einzureichen.<br/><br/>Die Bearbeitung Ihres Antrages ist erst nach Vorlage aller - erforderlichen Dokumente und Nachweise möglich.<br/><br/><br/>Mit freundlichen Grüßen<br/><br/>Kreis - Segeberg - Eingliederungshilfe für Minderjährige<br/>Hamburger Straße 30<br/>23795 Bad Segeberg - </postfachnachicht> -</myForm> diff --git a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/mantelantrag_with_anlage/9f1b47d4-d6bf-4ec4-b0ff-1e30bee42ef2_Geschaeftsgang.Geschaeftsgang.0201.xml b/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/mantelantrag_with_anlage/9f1b47d4-d6bf-4ec4-b0ff-1e30bee42ef2_Geschaeftsgang.Geschaeftsgang.0201.xml deleted file mode 100644 index add2a33b..00000000 --- a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/mantelantrag_with_anlage/9f1b47d4-d6bf-4ec4-b0ff-1e30bee42ef2_Geschaeftsgang.Geschaeftsgang.0201.xml +++ /dev/null @@ -1,123 +0,0 @@ -<?xml version="1.0"?> -<xdomea:Geschaeftsgang.Geschaeftsgang.0201 xmlns:xdomea="http://www.xdomea.de/V2.0.1"> - <xdomea:Kopf> - <xdomea:ProzessID>9f1b47d4-d6bf-4ec4-b0ff-1e30bee42ef2</xdomea:ProzessID> - <xdomea:Nachrichtentyp codeName="Geschaeftsgang.Geschaeftsgang.0201" - codelistAgencyName="AG XDOMEA des KoopA ADV" codelistVersionIdentifier="2.0.0" - languageCode="de" codelistName="Nachrichtentyp">0201 - </xdomea:Nachrichtentyp> - <xdomea:Erstellungszeitpunkt>2024-04-04T10:24:07.468+02:00</xdomea:Erstellungszeitpunkt> - <xdomea:Absender> - <xdomea:Behoerdenkennung> - <xdomea:Kennung codeName="WebMethod_Online-Dienste">WebMethod_Online-Dienste</xdomea:Kennung> - <xdomea:Praefix codeName="afmsh:">afmsh:</xdomea:Praefix> - </xdomea:Behoerdenkennung> - <xdomea:Institution> - <xdomea:Name>Schleswig-Holstein</xdomea:Name> - <xdomea:Kurzbezeichnung>Schleswig-Holstein</xdomea:Kurzbezeichnung> - </xdomea:Institution> - </xdomea:Absender> - <xdomea:Empfaenger> - <xdomea:Behoerdenkennung> - <xdomea:Kennung codeName="ozg-cloud-dev001">ozg-cloud-dev001</xdomea:Kennung> - <xdomea:Praefix codeName="afmsh:">afmsh:</xdomea:Praefix> - </xdomea:Behoerdenkennung> - </xdomea:Empfaenger> - <xdomea:SendendesSystem> - <xdomea:InstanzID>AFMSH.MSR</xdomea:InstanzID> - <xdomea:Produktname>MSR</xdomea:Produktname> - <xdomea:Version>10.5</xdomea:Version> - </xdomea:SendendesSystem> - <xdomea:EmpfangsbestaetigungAnInitiator>false</xdomea:EmpfangsbestaetigungAnInitiator> - <xdomea:EmpfangsbestaetigungAnVorgaenger>false</xdomea:EmpfangsbestaetigungAnVorgaenger> - </xdomea:Kopf> - <xdomea:Hauptobjekt> - <xdomea:Dokument> - <xdomea:Identifikation> - <xdomea:ID>9bae73b1-2ef3-480b-8acc-8bcd9979a788</xdomea:ID> - </xdomea:Identifikation> - <xdomea:AllgemeineMetadaten> - <xdomea:Betreff>Antrag auf Leistungen der Eingliederungshilfe und/oder Sozialhilfe</xdomea:Betreff> - <xdomea:Kennzeichen>20240404370530710707</xdomea:Kennzeichen> - </xdomea:AllgemeineMetadaten> - <xdomea:Posteingangsdatum>2024-04-04</xdomea:Posteingangsdatum> - <xdomea:Typ>maa_mantelantrag/maa_mantelantrag</xdomea:Typ> - <xdomea:Version> - <xdomea:Nummer>0.0</xdomea:Nummer> - <xdomea:Format> - <xdomea:Name codeName="xml - eXtensible Markup Language" - codelistAgencyName="AG XDOMEA des KoopA ADV" codelistVersionIdentifier="2.0.0" - languageCode="de" codelistName="Dateiformat">030 - </xdomea:Name> - <xdomea:Version>0.0</xdomea:Version> - <xdomea:Primaerdokument> - <xdomea:Dateiname>6082c5f7-61ab-4746-a482-0a400cc0301a_Antrag_Max_Mustermann_SGBIX.xml - </xdomea:Dateiname> - </xdomea:Primaerdokument> - </xdomea:Format> - </xdomea:Version> - <xdomea:Version> - <xdomea:Nummer>0.0</xdomea:Nummer> - <xdomea:Format> - <xdomea:Name codeName="pdf - Portable Document Format" codelistAgencyName="AG XDOMEA des KoopA ADV" - codelistVersionIdentifier="2.0.0" languageCode="de" codelistName="Dateiformat">018 - </xdomea:Name> - <xdomea:Version>0.0</xdomea:Version> - <xdomea:Primaerdokument> - <xdomea:Dateiname>03d5bd15-2c1a-4c50-809c-0efcb21f610f_Antrag_Max_Mustermann_SGBIX.pdf - </xdomea:Dateiname> - </xdomea:Primaerdokument> - </xdomea:Format> - </xdomea:Version> - </xdomea:Dokument> - </xdomea:Hauptobjekt> - <xdomea:ExternerGeschaeftsgang> - <xdomea:Identifikation> - <xdomea:ID>8ae49342-8135-4f11-9930-5c4cc55b7ec2</xdomea:ID> - </xdomea:Identifikation> - <xdomea:Beteiligungsschritt> - <xdomea:Nummer>1</xdomea:Nummer> - <xdomea:Status codeName="zukuenftig" codelistAgencyName="AG XDOMEA des KoopA ADV" - codelistVersionIdentifier="2.0.0" languageCode="de" codelistName="Beteiligungsstatus">001 - </xdomea:Status> - <xdomea:Verfuegung> - <xdomea:Ersteller> - <xdomea:Behoerdenkennung> - <xdomea:Kennung codeName="WebMethod_Online-Dienste">WebMethod_Online-Dienste</xdomea:Kennung> - <xdomea:Praefix codeName="afmsh:">afmsh:</xdomea:Praefix> - </xdomea:Behoerdenkennung> - </xdomea:Ersteller> - <xdomea:Adressat> - <xdomea:Behoerdenkennung> - <xdomea:Kennung codeName="ozg-cloud-dev001">ozg-cloud-dev001</xdomea:Kennung> - <xdomea:Praefix codeName="afmsh:">afmsh:</xdomea:Praefix> - </xdomea:Behoerdenkennung> - </xdomea:Adressat> - <xdomea:Erstellungsdatum>2024-04-04</xdomea:Erstellungsdatum> - <xdomea:Erstellungsuhrzeit>10:24:06</xdomea:Erstellungsuhrzeit> - </xdomea:Verfuegung> - </xdomea:Beteiligungsschritt> - </xdomea:ExternerGeschaeftsgang> - <xdomea:Anlage> - <xdomea:Dokument> - <xdomea:Identifikation> - <xdomea:ID>1d8ca22a-9d20-4507-aa5e-b764bb5642f0</xdomea:ID> - </xdomea:Identifikation> - <xdomea:Typ>Anlage</xdomea:Typ> - <xdomea:Version> - <xdomea:Nummer>1</xdomea:Nummer> - <xdomea:Format> - <xdomea:Name listURI="urn:xoev-de:xdomea:codeliste:dateiformat" listVersionID="1.0" - xsi:type="DateiformatCodeType"> - <xdomea:code xmlns="">019</xdomea:code> - <xdomea:name xmlns="">png-Portable Network Graphics</xdomea:name> - </xdomea:Name> - <xdomea:Version>0.0</xdomea:Version> - <xdomea:Primaerdokument> - <xdomea:Dateiname>1d8ca22a-9d20-4507-aa5e-b764bb5642f0_Admin.png</xdomea:Dateiname> - </xdomea:Primaerdokument> - </xdomea:Format> - </xdomea:Version> - </xdomea:Dokument> - </xdomea:Anlage> -</xdomea:Geschaeftsgang.Geschaeftsgang.0201> diff --git a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/mantelantrag_without_anlage/03d5bd15-2c1a-4c50-809c-0efcb21f610f_Antrag_Max_Mustermann_SGBIX.pdf b/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/mantelantrag_without_anlage/03d5bd15-2c1a-4c50-809c-0efcb21f610f_Antrag_Max_Mustermann_SGBIX.pdf deleted file mode 100644 index 5b07b65f3a5355f3dc096a260129c5e9aaa0881e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39794 zcmY!laB<T$)HCDdQhoIJ{AFG)Rp+AA#FEq$g``S_<jfL<f|Ru4(#(=n1	Za=qlt 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 Vfs`f27G~xqyj-fPuKsSkTmWTc5#9g* diff --git a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/mantelantrag_without_anlage/6082c5f7-61ab-4746-a482-0a400cc0301a_Antrag_Max_Mustermann_SGBIX.xml b/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/mantelantrag_without_anlage/6082c5f7-61ab-4746-a482-0a400cc0301a_Antrag_Max_Mustermann_SGBIX.xml deleted file mode 100644 index 5d7032ca..00000000 --- a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/mantelantrag_without_anlage/6082c5f7-61ab-4746-a482-0a400cc0301a_Antrag_Max_Mustermann_SGBIX.xml +++ /dev/null @@ -1,229 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<myForm xmlns:t="http://xmlns.cit.de/intelliform/transaction" - t:uuid="1d4a1b9b-b456-4d76-becb-eff301665993" t:id="20240404370530710707" t:timestamp="2024-04-04T08:17:33.211Z" - t:sender="test.afm.schleswig-holstein.de" - t:form="Antrag auf Leistungen der Eingliederungshilfe und/oder Sozialhilfe" - t:form-id="maa_mantelantrag/maa_mantelantrag" t:customer="Schleswig-Holstein" t:customer-id="sh" - t:client="Schleswig-Holstein" t:client-id="land" t:lang="de" t:vollstaendigkeit="true"> - <gebiets_id>9007404</gebiets_id> - <egh_sgb9>true</egh_sgb9> - <bes_wohnform>false</bes_wohnform> - <hzl>false</hzl> - <grusi>false</grusi> - <hzg>false</hzg> - <hzp>false</hzp> - <hzuebss>false</hzuebss> - <hial>false</hial> - <ambulant>false</ambulant> - <stationaer>false</stationaer> - <sessionid>4cb66bdd-ad27-41c6-8f4b-fc7f023970ad</sessionid> - <anliegen_id>[8969232]</anliegen_id> - <anliegen_namen>[Eingliederungshilfe]</anliegen_namen> - <TypenIDLN>233034601</TypenIDLN> - <logopath1>https://include-sh-schul.zfinder.de/IWFileLoader?tsaid_mediaUUID=21734555-12d6-47aa-bd2e-5794634c592c - </logopath1> - <logopath2/> - <logopath3/> - <gebiet_typid>300004</gebiet_typid> - <gebiet_parent_id1>9006398</gebiet_parent_id1> - <gebiet_parent_typid1>300003</gebiet_parent_typid1> - <gebiet_parent_id2>9006398</gebiet_parent_id2> - <gebiet_parent_typid2>300003</gebiet_parent_typid2> - <gebiet_parent_id3>9006398</gebiet_parent_id3> - <gebiet_parent_typid3>300003</gebiet_parent_typid3> - <gebiet_parent_name3>Segeberg</gebiet_parent_name3> - <oeid>[266237176]</oeid> - <link_datenschutz>https://dse.segeberg.de/pdf/50_30_001.pdf</link_datenschutz> - <link_datenschutz2/> - <link_datenschutz3/> - <link_bankgeheimnis> - https://test.afm.schleswig-holstein.de/intelliform/templates/land/default/default/maa_mantelantrag/Erklaerung_Befreiung_vom_Bankgeheimnis.pdf - </link_bankgeheimnis> - <link_grundsicherung> - https://test.afm.schleswig-holstein.de/intelliform/templates/land/default/default/maa_mantelantrag/Anlage_Erklaerung_zur_Zahlung_von_Grundsicherungsleistungen_an_Leistungserbringer.pdf - </link_grundsicherung> - <link_schweigepflicht> - https://test.afm.schleswig-holstein.de/intelliform/templates/land/default/default/maa_mantelantrag/Schweigepflichtentbindung.pdf - </link_schweigepflicht> - <link_abtretung> - https://test.afm.schleswig-holstein.de/intelliform/templates/land/default/default/maa_mantelantrag/Anlage_Einverstaendniserklaerung_und_Abtretung.pdf - </link_abtretung> - <link_wahrheit> - https://test.afm.schleswig-holstein.de/intelliform/templates/land/default/default/maa_mantelantrag/Erklaerung_der_antragstellenden_Person.pdf - </link_wahrheit> - <kontaktsystem_oeid>9795669</kontaktsystem_oeid> - <OrganisationseinheitenBEZEICHNUNG>Kreis Segeberg - Eingliederungshilfe für Minderjährige - </OrganisationseinheitenBEZEICHNUNG> - <zust_strasse>Hamburger Straße</zust_strasse> - <zust_hausnummer>30</zust_hausnummer> - <zust_postleitzahl>23795</zust_postleitzahl> - <ortid>9007404</ortid> - <zust_ort>Bad Segeberg</zust_ort> - <zust_telefonnummer/> - <zust_faxnummer/> - <zust_emailadresse>Eingliederungshilfe-Minderjaehrige@segeberg.de</zust_emailadresse> - <zustellung_nachrichtenbroker>afmsh:010600000000_Online-Dienste</zustellung_nachrichtenbroker> - <zustellung_email_ln/> - <zustellung_webservice/> - <kontaktsystem_oeid2/> - <OrganisationseinheitenBEZEICHNUNG2/> - <zust_strasse2/> - <zust_hausnummer2/> - <zust_postleitzahl2/> - <ortid2/> - <zust_ort2/> - <zust_telefonnummer2/> - <zust_faxnummer2/> - <zust_emailadresse2/> - <zustellung_nachrichtenbroker2/> - <zustellung_email_ln2/> - <zustellung_webservice2/> - <kontaktsystem_oeid3/> - <OrganisationseinheitenBEZEICHNUNG3/> - <zust_strasse3/> - <zust_hausnummer3/> - <zust_postleitzahl3/> - <ortid3/> - <zust_ort3/> - <zust_telefonnummer3/> - <zust_faxnummer3/> - <zust_emailadresse3/> - <zustellung_nachrichtenbroker3/> - <zustellung_email_ln3/> - <zustellung_webservice3/> - <grund>Hilfe</grund> - <a_grund_bescheinigung>false</a_grund_bescheinigung> - <nur_egh>true</nur_egh> - <nur_blindenhilfe>false</nur_blindenhilfe> - <nur_pers_angaben>false</nur_pers_angaben> - <nur_pers_mehrbedarfe>false</nur_pers_mehrbedarfe> - <antragsteller> - <anrede/> - <titel/> - <pers_nachname>Mustermann</pers_nachname> - <geburtsname/> - <pers_vorname>Max</pers_vorname> - <geburtsdatum>2000-04-05</geburtsdatum> - <geburtsort/> - <sh_strasse>Musterstrasse</sh_strasse> - <sh_hausnummer>12</sh_hausnummer> - <adresszusatz/> - <sh_plz>12345</sh_plz> - <ort>Bad Segeberg</ort> - <kont_email/> - <telefon/> - <mobiltelefon/> - <familienstand>ledig</familienstand> - <deutsch>deutsch</deutsch> - <a_ausweisdokument>false</a_ausweisdokument> - <erwerb/> - <erwerbsunfaehig/> - <betreuer>false</betreuer> - <partner>false</partner> - <kont_telefonnummer/> - </antragsteller> - <angaben_antragsteller> - <sozialhilfe_p>Nein</sozialhilfe_p> - <eingliederungshilfe>Nein</eingliederungshilfe> - <leistungen>Nein</leistungen> - <rentenantrag>Nein</rentenantrag> - <sozialversicherungsnummer/> - <rentenbeitraege/> - <auslandserwerb/> - <lebensunterhalt>Arbeit</lebensunterhalt> - <zuzug>false</zuzug> - <pflege_noetig/> - <ansprueche_dritte>false</ansprueche_dritte> - <stoerung_vorhanden>false</stoerung_vorhanden> - <sozialhilfe>Nein</sozialhilfe> - </angaben_antragsteller> - <weitere_personen>false</weitere_personen> - <fin_antragsteller> - <groesse_wohnung unit="m2"/> - <untervermietet_wohnung unit="m2"/> - <raeume/> - <baujahr/> - <wohnung_kosten unit="Euro"/> - <betriebskosten unit="Euro"/> - <heizkosten unit="Euro"/> - <heizart/> - <a_mietvertrag>false</a_mietvertrag> - <pauschalmiete unit="Euro"/> - <warmwasser/> - <miete_vermieter/> - <wohngeld/> - </fin_antragsteller> - <wohnart>Mietwohnung</wohnart> - <ver> - <ver-item> - <name_id>a</name_id> - <versicherung_vorhanden>false</versicherung_vorhanden> - <name>Max Mustermann</name> - <fruehere_kv_vorhanden/> - <frueherer_erwerb_v/> - <bedarf_hzg/> - <kuenftige_kv/> - </ver-item> - </ver> - <werkstatt/> - <leistungen_bezogen>false</leistungen_bezogen> - <einkommen_antragsteller> - <lgh_hzl_bg/> - <nselbststaendig_vorhanden>false</nselbststaendig_vorhanden> - <gewerbe_vorhanden>false</gewerbe_vorhanden> - <landwirtschaft_vorhanden>false</landwirtschaft_vorhanden> - <vermietung_vorhanden>false</vermietung_vorhanden> - <kapital_vorhanden>false</kapital_vorhanden> - <krankenkasse_vorhanden>false</krankenkasse_vorhanden> - <pflegekasse_vorhanden>false</pflegekasse_vorhanden> - <alg_vorhanden>false</alg_vorhanden> - <leistungen_afa_vorhanden>false</leistungen_afa_vorhanden> - <wohngeld_vorhanden>false</wohngeld_vorhanden> - <kindergeld_vorhanden>false</kindergeld_vorhanden> - <elterngeld_vorhanden>false</elterngeld_vorhanden> - <rente_inland_vorhanden>false</rente_inland_vorhanden> - <rente_ausland_vorhanden>false</rente_ausland_vorhanden> - <rente_sonstige_vorhanden>false</rente_sonstige_vorhanden> - <unterhalt_vorhanden>false</unterhalt_vorhanden> - <blindengeld_vorhanden>false</blindengeld_vorhanden> - <sonstiges_vorhanden>false</sonstiges_vorhanden> - <einkommen_gepfaendet>false</einkommen_gepfaendet> - <einkommen_vorhanden>false</einkommen_vorhanden> - </einkommen_antragsteller> - <vermoegen> - <vermoegen-item> - <name_id>a</name_id> - <bargeld_vorhanden>false</bargeld_vorhanden> - <konto_vorhanden>false</konto_vorhanden> - <sparguthaben_vorhanden>false</sparguthaben_vorhanden> - <altersvorsorge_vorhanden>false</altersvorsorge_vorhanden> - <bausparvertraege_vorhanden>false</bausparvertraege_vorhanden> - <aktien_vorhanden>false</aktien_vorhanden> - <paypal_vorhanden>false</paypal_vorhanden> - <lebensversicherung_vorhanden>false</lebensversicherung_vorhanden> - <kfz_vorhanden>false</kfz_vorhanden> - <sachwerte_vorhanden>false</sachwerte_vorhanden> - <haus_vorhanden>false</haus_vorhanden> - <hypotheken_vorhanden>false</hypotheken_vorhanden> - <erbschaft_vorhanden>false</erbschaft_vorhanden> - <sonstiges_vorhanden>false</sonstiges_vorhanden> - <veraeusserung_vermoegen>false</veraeusserung_vermoegen> - <vermoegen_vorhanden>false</vermoegen_vorhanden> - <name>Max Mustermann</name> - </vermoegen-item> - </vermoegen> - <datenerhebung>true</datenerhebung> - <vollstaendigkeit>true</vollstaendigkeit> - <a_befreiung_bankgeheimnis>false</a_befreiung_bankgeheimnis> - <a_entbindung_schweigepflicht>false</a_entbindung_schweigepflicht> - <name_bank/> - <iban/> - <kontoinhaber/> - <name_pdf>Antrag_Max_Mustermann_SGBIX</name_pdf> - <postfachnachicht>Sehr geehrte/r Antragsteller*in,<br/><br/>Ihr Antrag wurde erfolgreich übermittelt.<br/><br/>Bitte - denken Sie daran, zur Vervollständigung Ihres Antrages die unterschriebenen Dokumente und erforderlichen - Nachweise einzureichen.<br/><br/>Die Bearbeitung Ihres Antrages ist erst nach Vorlage aller - erforderlichen Dokumente und Nachweise möglich.<br/><br/><br/>Mit freundlichen Grüßen<br/><br/>Kreis - Segeberg - Eingliederungshilfe für Minderjährige<br/>Hamburger Straße 30<br/>23795 Bad Segeberg - </postfachnachicht> -</myForm> diff --git a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/mantelantrag_without_anlage/9f1b47d4-d6bf-4ec4-b0ff-1e30bee42ef2_Geschaeftsgang.Geschaeftsgang.0201.xml b/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/mantelantrag_without_anlage/9f1b47d4-d6bf-4ec4-b0ff-1e30bee42ef2_Geschaeftsgang.Geschaeftsgang.0201.xml deleted file mode 100644 index 8f742978..00000000 --- a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/mantelantrag_without_anlage/9f1b47d4-d6bf-4ec4-b0ff-1e30bee42ef2_Geschaeftsgang.Geschaeftsgang.0201.xml +++ /dev/null @@ -1,101 +0,0 @@ -<?xml version="1.0"?> -<xdomea:Geschaeftsgang.Geschaeftsgang.0201 xmlns:xdomea="http://www.xdomea.de/V2.0.1"> - <xdomea:Kopf> - <xdomea:ProzessID>9f1b47d4-d6bf-4ec4-b0ff-1e30bee42ef2</xdomea:ProzessID> - <xdomea:Nachrichtentyp codeName="Geschaeftsgang.Geschaeftsgang.0201" - codelistAgencyName="AG XDOMEA des KoopA ADV" codelistVersionIdentifier="2.0.0" - languageCode="de" codelistName="Nachrichtentyp">0201 - </xdomea:Nachrichtentyp> - <xdomea:Erstellungszeitpunkt>2024-04-04T10:24:07.468+02:00</xdomea:Erstellungszeitpunkt> - <xdomea:Absender> - <xdomea:Behoerdenkennung> - <xdomea:Kennung codeName="WebMethod_Online-Dienste">WebMethod_Online-Dienste</xdomea:Kennung> - <xdomea:Praefix codeName="afmsh:">afmsh:</xdomea:Praefix> - </xdomea:Behoerdenkennung> - <xdomea:Institution> - <xdomea:Name>Schleswig-Holstein</xdomea:Name> - <xdomea:Kurzbezeichnung>Schleswig-Holstein</xdomea:Kurzbezeichnung> - </xdomea:Institution> - </xdomea:Absender> - <xdomea:Empfaenger> - <xdomea:Behoerdenkennung> - <xdomea:Kennung codeName="ozg-cloud-dev001">ozg-cloud-dev001</xdomea:Kennung> - <xdomea:Praefix codeName="afmsh:">afmsh:</xdomea:Praefix> - </xdomea:Behoerdenkennung> - </xdomea:Empfaenger> - <xdomea:SendendesSystem> - <xdomea:InstanzID>AFMSH.MSR</xdomea:InstanzID> - <xdomea:Produktname>MSR</xdomea:Produktname> - <xdomea:Version>10.5</xdomea:Version> - </xdomea:SendendesSystem> - <xdomea:EmpfangsbestaetigungAnInitiator>false</xdomea:EmpfangsbestaetigungAnInitiator> - <xdomea:EmpfangsbestaetigungAnVorgaenger>false</xdomea:EmpfangsbestaetigungAnVorgaenger> - </xdomea:Kopf> - <xdomea:Hauptobjekt> - <xdomea:Dokument> - <xdomea:Identifikation> - <xdomea:ID>9bae73b1-2ef3-480b-8acc-8bcd9979a788</xdomea:ID> - </xdomea:Identifikation> - <xdomea:AllgemeineMetadaten> - <xdomea:Betreff>Antrag auf Leistungen der Eingliederungshilfe und/oder Sozialhilfe</xdomea:Betreff> - <xdomea:Kennzeichen>20240404370530710707</xdomea:Kennzeichen> - </xdomea:AllgemeineMetadaten> - <xdomea:Posteingangsdatum>2024-04-04</xdomea:Posteingangsdatum> - <xdomea:Typ>maa_mantelantrag/maa_mantelantrag</xdomea:Typ> - <xdomea:Version> - <xdomea:Nummer>0.0</xdomea:Nummer> - <xdomea:Format> - <xdomea:Name codeName="xml - eXtensible Markup Language" - codelistAgencyName="AG XDOMEA des KoopA ADV" codelistVersionIdentifier="2.0.0" - languageCode="de" codelistName="Dateiformat">030 - </xdomea:Name> - <xdomea:Version>0.0</xdomea:Version> - <xdomea:Primaerdokument> - <xdomea:Dateiname>6082c5f7-61ab-4746-a482-0a400cc0301a_Antrag_Max_Mustermann_SGBIX.xml - </xdomea:Dateiname> - </xdomea:Primaerdokument> - </xdomea:Format> - </xdomea:Version> - <xdomea:Version> - <xdomea:Nummer>0.0</xdomea:Nummer> - <xdomea:Format> - <xdomea:Name codeName="pdf - Portable Document Format" codelistAgencyName="AG XDOMEA des KoopA ADV" - codelistVersionIdentifier="2.0.0" languageCode="de" codelistName="Dateiformat">018 - </xdomea:Name> - <xdomea:Version>0.0</xdomea:Version> - <xdomea:Primaerdokument> - <xdomea:Dateiname>03d5bd15-2c1a-4c50-809c-0efcb21f610f_Antrag_Max_Mustermann_SGBIX.pdf - </xdomea:Dateiname> - </xdomea:Primaerdokument> - </xdomea:Format> - </xdomea:Version> - </xdomea:Dokument> - </xdomea:Hauptobjekt> - <xdomea:ExternerGeschaeftsgang> - <xdomea:Identifikation> - <xdomea:ID>8ae49342-8135-4f11-9930-5c4cc55b7ec2</xdomea:ID> - </xdomea:Identifikation> - <xdomea:Beteiligungsschritt> - <xdomea:Nummer>1</xdomea:Nummer> - <xdomea:Status codeName="zukuenftig" codelistAgencyName="AG XDOMEA des KoopA ADV" - codelistVersionIdentifier="2.0.0" languageCode="de" codelistName="Beteiligungsstatus">001 - </xdomea:Status> - <xdomea:Verfuegung> - <xdomea:Ersteller> - <xdomea:Behoerdenkennung> - <xdomea:Kennung codeName="WebMethod_Online-Dienste">WebMethod_Online-Dienste</xdomea:Kennung> - <xdomea:Praefix codeName="afmsh:">afmsh:</xdomea:Praefix> - </xdomea:Behoerdenkennung> - </xdomea:Ersteller> - <xdomea:Adressat> - <xdomea:Behoerdenkennung> - <xdomea:Kennung codeName="ozg-cloud-dev001">ozg-cloud-dev001</xdomea:Kennung> - <xdomea:Praefix codeName="afmsh:">afmsh:</xdomea:Praefix> - </xdomea:Behoerdenkennung> - </xdomea:Adressat> - <xdomea:Erstellungsdatum>2024-04-04</xdomea:Erstellungsdatum> - <xdomea:Erstellungsuhrzeit>10:24:06</xdomea:Erstellungsuhrzeit> - </xdomea:Verfuegung> - </xdomea:Beteiligungsschritt> - </xdomea:ExternerGeschaeftsgang> -</xdomea:Geschaeftsgang.Geschaeftsgang.0201> \ No newline at end of file diff --git a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/waffenschein/8248e115-4aec-4253-bb2c-9788823ff9b1_XML-Daten.xml b/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/waffenschein/8248e115-4aec-4253-bb2c-9788823ff9b1_XML-Daten.xml deleted file mode 100644 index 4dabcc06..00000000 --- a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/waffenschein/8248e115-4aec-4253-bb2c-9788823ff9b1_XML-Daten.xml +++ /dev/null @@ -1,132 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<myForm xmlns:pdf="http://xmlns.cit.de/assistants/pdf" xmlns:t="http://xmlns.cit.de/intelliform/transaction" t:uuid="2b1b5768-e9b4-47f6-859e-c197ef4361a3" t:id="20240321325940124004" t:timestamp="2024-03-21T08:03:14.724Z" t:sender="test.afm.schleswig-holstein.de" t:form="Kleiner Waffenschein NB Test" t:form-id="waffen/kleinerWaffenscheinNB" t:customer="Einheitlicher Ansprechpartner" t:customer-id="ea-sh" t:client="Schleswig-Holstein" t:client-id="land" t:lang="de"> - <KontaktsystemTypA>233034600</KontaktsystemTypA> - <KontaktsystemTypB>233034601</KontaktsystemTypB> - <AnliegenID>8966671</AnliegenID> - <antragsteller> - <pers_anrede>Herr$03</pers_anrede> - <pers_nachname>Max</pers_nachname> - <pers_vorname>Mustermann</pers_vorname> - <pers_geburtsname>Mustermann</pers_geburtsname> - <pers_geburtsdatum>2000-02-15</pers_geburtsdatum> - <pers_geburtsort>Eutin</pers_geburtsort> - <pers_geburtsland>deutsch$Deutschland$000</pers_geburtsland> - <pers_staatsangehoerigkeit>deutsch$Deutschland$000</pers_staatsangehoerigkeit> - <b_anrede>Herr</b_anrede> - <b_anrede_schluesselnr>03</b_anrede_schluesselnr> - <b_geburtsland>Deutschland</b_geburtsland> - <b_geburtsland_signatur>000</b_geburtsland_signatur> - <b_staatsangehoerigkeit>deutsch</b_staatsangehoerigkeit> - <b_staatsangehoerigkeit_signatur>000</b_staatsangehoerigkeit_signatur> - <sh_strasse>Musterstrasse</sh_strasse> - <sh_hausnummer>123</sh_hausnummer> - <sh_plz>23701</sh_plz> - <ort_auswahl>9006885$01055012</ort_auswahl> - <ort>Eutin</ort> - <GebietID>9006885</GebietID> - <GebietBEZEICHNUNG>Eutin</GebietBEZEICHNUNG> - <GebietGNR94_GNR>01055012</GebietGNR94_GNR> - <staat>000</staat> - <iso3166numerisch>276</iso3166numerisch> - <kont_telefonnummer /> - <kont_mobilnummer /> - <kont_telefaxnummer /> - <kont_email /> - <kont_demail /> - <persoenlicheEignung> - <maengelvorhanden>false</maengelvorhanden> - <ermittlungsverfahren>false</ermittlungsverfahren> - <MitgliedschaftInVerboternerVereinigung>false</MitgliedschaftInVerboternerVereinigung> - </persoenlicheEignung> - </antragsteller> - <GebietID>9006885</GebietID> - <zustaendigestelle> - <OrganisationseinheitenAuswahl>279550874</OrganisationseinheitenAuswahl> - <OrganisationseinheitenID>9795669</OrganisationseinheitenID> - <OrganisationseinheitenBEZEICHNUNG>Fachdienst Sicherheit und Ordnung - Kreis Ostholstein</OrganisationseinheitenBEZEICHNUNG> - <strasse>Lübecker Straße</strasse> - <hausnummer>41</hausnummer> - <postleitzahl>23701</postleitzahl> - <ortID>9006885</ortID> - <ort>Eutin</ort> - <telefonnummer>+49 4521 788-0</telefonnummer> - <telefaxnummer>+49 4521 788-292</telefaxnummer> - <emailadresse>sicherheit@kreis-oh.de</emailadresse> - <demailadresse /> - <kontaktsystem_kennung /> - <kontaktsystem_kennungzusatz /> - <AnliegenBEZEICHNUNG>Waffenschein beantragen</AnliegenBEZEICHNUNG> - <leikaKEYLIST>99089122001000</leikaKEYLIST> - <auswahl_zustellung>abholen</auswahl_zustellung> - <b_zustellung>Ich hole den Kleinen Waffenschein selbst ab.</b_zustellung> - </zustaendigestelle> - <empfangendestelle> - <OrganisationseinheitenAuswahl>9068873</OrganisationseinheitenAuswahl> - <OrganisationseinheitenID>9068873</OrganisationseinheitenID> - <OrganisationseinheitenBEZEICHNUNG>Einheitlicher Ansprechpartner Schleswig-Holstein</OrganisationseinheitenBEZEICHNUNG> - <strasse>Deliusstraße</strasse> - <hausnummer>10</hausnummer> - <postleitzahl>24114</postleitzahl> - <ortID>9006402</ortID> - <ort>Kiel</ort> - <telefonnummer>+49 431 530550-0</telefonnummer> - <telefaxnummer>+49 431 530550-99</telefaxnummer> - <emailadresse>info@ea-sh.de</emailadresse> - <demailadresse>ea-poststelle@ea-sh.de-mail.de</demailadresse> - <kontaktsystem_kennung>afmsh:9068873_AusnahmeLKWFahrverbot</kontaktsystem_kennung> - <kontaktsystem_kennungzusatz>alle</kontaktsystem_kennungzusatz> - </empfangendestelle> - <erklaerungen> - <check_gebuehren>true</check_gebuehren> - <check_richtigkeit>true</check_richtigkeit> - <check_datenschutz>true</check_datenschutz> - <check_missbrauch>true</check_missbrauch> - <b_gebuehren_beschriftung>* Mir ist bekannt, dass durch das Einreichen des elektronischen Antrages von der zuständigen Stelle Gebühren erhoben werden können.</b_gebuehren_beschriftung> - <b_gebuehren_intro>Gebühr bei Ausstellung des kleinen Waffenscheins: 60,00 Euro. Bearbeitungsgebühr bei Versagung: 45,00 Euro. - Sie sind gemäß § 39 WaffG verpflichtet, der zuständigen Behörde die zur Durchführung des Gesetzes erforderlichen Auskünfte zu erteilen. Zur Prüfung Ihrer waffenrechtlichen Zuverlässigkeit und Eignung holt die Behörde eine unbeschränkte Auskunft aus dem Bundeszentralregister, eine Auskunft aus dem zentralen staatsanwaltschaftlichen Verfahrensregister, eine Stellungnahme der örtlichen Polizeidienststelle und Ihrer Wohnsitzgemeinde ein.</b_gebuehren_intro> - <b_richtigkeit>* Ich bestätige die Richtigkeit meiner Angaben.</b_richtigkeit> - <b_datenschutz>* Ich erkläre mich damit einverstanden, dass der Einheitlicher Ansprechpartner Schleswig-Holstein zur Erfüllung seiner Aufgaben meine Daten unter Einhaltung der Bestimmungen der Datenschutz-Grundverordnung (DS-GVO) und des Landesdatenschutzgesetzes Schleswig-Holstein (LDSG-SH) speichert, verarbeitet und diese im Rahmen der gesetzlichen Bestimmungen an die für die Entscheidung zuständige Stelle weiterleitet. Ebenso bin ich mit der rechtskonformen Datenverarbeitung und Speicherung durch die zuständige Stelle einverstanden. Mir ist bekannt, dass ich die Einwilligung in die Verarbeitung und Übermittlung jederzeit gegenüber dem Einheitlicher Ansprechpartner Schleswig-Holstein, Deliusstraße 10, 24114 Kiel widerrufen kann. Ein Widerruf ist aber nur wirksam für die Zukunft. Verarbeitungen, die vor dem Widerruf erfolgt sind, sind davon nicht betroffen. Über die Verarbeitung meiner personenbezogenen Daten und die mir nach den datenschutzrechtlichen Regelungen zustehenden Ansprüche und Rechte habe ich unter Datenschutzerklärung Kenntnis erlangt.</b_datenschutz> - <b_missbrauch>* Mir ist bekannt, dass zur Verfolgung widerrechtlicher Nutzung die Daten meines zur Dateneingabe genutzten Endgerätes aufgezeichnet und verwendet werden können.</b_missbrauch> - <policyurl>http://www.ea-sh.info/datenschutz/datenschutzerklaerungEA_de.doc</policyurl> - </erklaerungen> - <logourl>http://www.ea-sh.info/logos/kopf_9068873.doc</logourl> - <fm> - <ansprechpartner> - <firmenname /> - <anrede>Herr</anrede> - <vorname>Mustermann</vorname> - <familienname>Max</familienname> - <anschrift> - <strasse>Musterstrasse</strasse> - <hausnummer>123</hausnummer> - <postfach /> - <postleitzahl>23701</postleitzahl> - <ort>Eutin</ort> - <ortsteil /> - <zusatz /> - <staat>Deutschland</staat> - </anschrift> - <kontakt> - <telefonnummer /> - <mobilnummer /> - <telefaxnummer /> - <emailadresse /> - <demailadresse /> - </kontakt> - </ansprechpartner> - <verwaltungsleistungen> - <verwaltungsleistung> - <ausgewaehlte_zustaendigestelle> - <OrganisationseinheitenID>279550874</OrganisationseinheitenID> - <OrganisationseinheitenBEZEICHNUNG>Fachdienst Sicherheit und Ordnung - Kreis Ostholstein</OrganisationseinheitenBEZEICHNUNG> - </ausgewaehlte_zustaendigestelle> - <GebietID>9006885</GebietID> - <GebietBEZEICHNUNG>Eutin</GebietBEZEICHNUNG> - <AnliegenID>8966671</AnliegenID> - <AnliegenBEZEICHNUNG>Waffenschein beantragen</AnliegenBEZEICHNUNG> - <leikaKEYLIST>99089122001000</leikaKEYLIST> - <leikaBEZEICHNUNG /> - </verwaltungsleistung> - </verwaltungsleistungen> - </fm> -</myForm> diff --git a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/waffenschein/d254806f-abf4-4e4c-ae74-ea03460f34d2_Geschaeftsgang.Geschaeftsgang.0201.xml b/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/waffenschein/d254806f-abf4-4e4c-ae74-ea03460f34d2_Geschaeftsgang.Geschaeftsgang.0201.xml deleted file mode 100644 index 1eaa092e..00000000 --- a/xta-adapter/src/test/resources/mock-responses/getMessage/Geschaeftsgang.Geschaeftsgang.0201/waffenschein/d254806f-abf4-4e4c-ae74-ea03460f34d2_Geschaeftsgang.Geschaeftsgang.0201.xml +++ /dev/null @@ -1,79 +0,0 @@ -<?xml version="1.0"?> -<xdomea:Geschaeftsgang.Geschaeftsgang.0201 xmlns:xdomea="http://www.xdomea.de/V2.0.1"> - <xdomea:Kopf> - <xdomea:ProzessID>d254806f-abf4-4e4c-ae74-ea03460f34d2</xdomea:ProzessID> - <xdomea:Nachrichtentyp codeName="Geschaeftsgang.Geschaeftsgang.0201" codelistAgencyName="AG XDOMEA des KoopA ADV" codelistVersionIdentifier="2.0.0" languageCode="de" codelistName="Nachrichtentyp">0201</xdomea:Nachrichtentyp> - <xdomea:Erstellungszeitpunkt>2024-03-21T09:05:01.424+01:00</xdomea:Erstellungszeitpunkt> - <xdomea:Absender> - <xdomea:Behoerdenkennung> - <xdomea:Kennung codeName="WebMethod_Online-Dienste">WebMethod_Online-Dienste</xdomea:Kennung> - <xdomea:Praefix codeName="afmsh:">afmsh:</xdomea:Praefix> - </xdomea:Behoerdenkennung> - <xdomea:Institution> - <xdomea:Name>Einheitlicher Ansprechpartner</xdomea:Name> - <xdomea:Kurzbezeichnung>Einheitlicher Ansprechpartner</xdomea:Kurzbezeichnung> - </xdomea:Institution> - </xdomea:Absender> - <xdomea:Empfaenger> - <xdomea:Behoerdenkennung> - <xdomea:Kennung codeName="ozg-cloud-dev001 ">ozg-cloud-dev001 </xdomea:Kennung> - <xdomea:Praefix codeName="afmsh:">afmsh:</xdomea:Praefix> - </xdomea:Behoerdenkennung> - </xdomea:Empfaenger> - <xdomea:SendendesSystem> - <xdomea:InstanzID>AFMSH.MSR</xdomea:InstanzID> - <xdomea:Produktname>MSR</xdomea:Produktname> - <xdomea:Version>10.5</xdomea:Version> - </xdomea:SendendesSystem> - <xdomea:EmpfangsbestaetigungAnInitiator>false</xdomea:EmpfangsbestaetigungAnInitiator> - <xdomea:EmpfangsbestaetigungAnVorgaenger>false</xdomea:EmpfangsbestaetigungAnVorgaenger> - </xdomea:Kopf> - <xdomea:Hauptobjekt> - <xdomea:Dokument> - <xdomea:Identifikation> - <xdomea:ID>5b4e3f41-180b-4a9f-aa5b-19f9aa72f32e</xdomea:ID> - </xdomea:Identifikation> - <xdomea:AllgemeineMetadaten> - <xdomea:Betreff>Kleiner Waffenschein NB Test</xdomea:Betreff> - <xdomea:Kennzeichen>20240321325940124004</xdomea:Kennzeichen> - </xdomea:AllgemeineMetadaten> - <xdomea:Posteingangsdatum>2024-03-21</xdomea:Posteingangsdatum> - <xdomea:Typ>waffen/kleinerWaffenscheinNB</xdomea:Typ> - <xdomea:Version> - <xdomea:Nummer>0.0</xdomea:Nummer> - <xdomea:Format> - <xdomea:Name codeName="xml - eXtensible Markup Language" codelistAgencyName="AG XDOMEA des KoopA ADV" codelistVersionIdentifier="2.0.0" languageCode="de" codelistName="Dateiformat">030</xdomea:Name> - <xdomea:Version>0.0</xdomea:Version> - <xdomea:Primaerdokument> - <xdomea:Dateiname>8248e115-4aec-4253-bb2c-9788823ff9b1_XML-Daten.xml</xdomea:Dateiname> - </xdomea:Primaerdokument> - </xdomea:Format> - </xdomea:Version> - </xdomea:Dokument> - </xdomea:Hauptobjekt> - <xdomea:ExternerGeschaeftsgang> - <xdomea:Identifikation> - <xdomea:ID>1f6e0806-f9eb-4bb3-88ad-0828411f1f2c</xdomea:ID> - </xdomea:Identifikation> - <xdomea:Beteiligungsschritt> - <xdomea:Nummer>1</xdomea:Nummer> - <xdomea:Status codeName="zukuenftig" codelistAgencyName="AG XDOMEA des KoopA ADV" codelistVersionIdentifier="2.0.0" languageCode="de" codelistName="Beteiligungsstatus">001</xdomea:Status> - <xdomea:Verfuegung> - <xdomea:Ersteller> - <xdomea:Behoerdenkennung> - <xdomea:Kennung codeName="WebMethod_Online-Dienste">WebMethod_Online-Dienste</xdomea:Kennung> - <xdomea:Praefix codeName="afmsh:">afmsh:</xdomea:Praefix> - </xdomea:Behoerdenkennung> - </xdomea:Ersteller> - <xdomea:Adressat> - <xdomea:Behoerdenkennung> - <xdomea:Kennung codeName="ozg-cloud-dev001 ">ozg-cloud-dev001 </xdomea:Kennung> - <xdomea:Praefix codeName="afmsh:">afmsh:</xdomea:Praefix> - </xdomea:Behoerdenkennung> - </xdomea:Adressat> - <xdomea:Erstellungsdatum>2024-03-21</xdomea:Erstellungsdatum> - <xdomea:Erstellungsuhrzeit>09:05:01</xdomea:Erstellungsuhrzeit> - </xdomea:Verfuegung> - </xdomea:Beteiligungsschritt> - </xdomea:ExternerGeschaeftsgang> -</xdomea:Geschaeftsgang.Geschaeftsgang.0201> diff --git a/xta-adapter/src/test/resources/mock-responses/getMessage/fim.S17000652.17000652001004/versammlungsanzeige.xml b/xta-adapter/src/test/resources/mock-responses/getMessage/fim.S17000652.17000652001004/versammlungsanzeige.xml deleted file mode 100644 index 09c27337..00000000 --- a/xta-adapter/src/test/resources/mock-responses/getMessage/fim.S17000652.17000652001004/versammlungsanzeige.xml +++ /dev/null @@ -1 +0,0 @@ -<fim.S17000652.17000652001004 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:xoev-de:xfall:standard:fim-s17000652_1.4"><G17003529><G05001479><G05001480><F05002750>85ad506f-25a2-4a93-a086-b069784c6d60</F05002750><F05002751>21.03.2024 08:56:33</F05002751><F05002752>fim.S17000652.17000652001004</F05002752><F05002753>urn:fim:Versammlungsanzeige:1.4</F05002753></G05001480><G05001481><F05002754>Fachdienst Sicherheit und Ordnung - Kreis Ostholstein</F05002754><F05002755>vbe:010550120100</F05002755><F05002756>Versammlungsbehörde</F05002756></G05001481><G05001482><F05002754>Dataport</F05002754><F05002755>ehp:010100100000</F05002755><F05002756>Versammlungsbehörde</F05002756></G05001482></G05001479><F17005454>true</F17005454><F17005455>false</F17005455><F17005533>85ad506f-25a2-4a93-a086-b069784c6d60</F17005533></G17003529><F17009191>false</F17009191><G17002112><F60000228>OZG-Cloud</F60000228><F60000227>Team</F60000227><G60000086><F60000243>Muster</F60000243><F60000244>1</F60000244><F60000246>12345</F60000246><F60000247>Muster</F60000247></G60000086><F60000242>noreply@ozg-sh.de</F60000242><F17009011>false</F17009011></G17002112><F17003371>Anzeigen einer ortsfesten Versammlung (Kundgebung / Demonstration)</F17003371><G17005404><G17007202><F17003373>fsdf</F17003373><F17003377>sdf</F17003377><G17005406><F60000048>2024-03-21</F60000048><F17001348>13.5</F17001348><F60000049>2024-03-21</F60000049><F17001349>15</F17001349></G17005406></G17007202><G17007205><F17003379>10</F17003379><F17003382>keine</F17003382><G17007234><F17011826>Nein</F17011826></G17007234><G17007235><F17011827>Nein</F17011827></G17007235></G17007205></G17005404></fim.S17000652.17000652001004> \ No newline at end of file diff --git a/xta-adapter/src/test/resources/xdomea/dfoerdermittel_Geschaeftsgang.Geschaeftsgang.0201.xml b/xta-adapter/src/test/resources/xdomea/dfoerdermittel_Geschaeftsgang.Geschaeftsgang.0201.xml deleted file mode 100644 index 06068ed7..00000000 --- a/xta-adapter/src/test/resources/xdomea/dfoerdermittel_Geschaeftsgang.Geschaeftsgang.0201.xml +++ /dev/null @@ -1,138 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Geschaeftsgang.Geschaeftsgang.0201 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:schemaLocation="urn:xoev-de:xdomea:schema:2.4.0 xdomea-Nachrichten-VBS.xsd" xmlns="urn:xoev-de:xdomea:schema:2.4.0"> - <Kopf> - <ProzessID>b42b7984-279c-4260-8b48-c0389555608c</ProzessID> - <Nachrichtentyp listURI="urn:xoev-de:xdomea:codeliste:nachrichtentyp" listVersionID="1.0"> - <code xmlns="">0201</code> - </Nachrichtentyp> - <Erstellungszeitpunkt>2024-04-22T16:14:18.1885313+02:00</Erstellungszeitpunkt> - <Absender> - <Behoerdenkennung> - <Kennung listURI="" listVersionID=""> - <code xmlns="">010200200000</code> - </Kennung> - <Praefix listURI="" listVersionID=""> - <code xmlns="">gad</code> - </Praefix> - </Behoerdenkennung> - </Absender> - <Empfaenger> - <Behoerdenkennung> - <Kennung listURI="" listVersionID=""> - <code xmlns="">dev-environment@ozg-cloud.de</code> - </Kennung> - <Praefix listURI="" listVersionID=""> - <code xmlns="">gae</code> - </Praefix> - </Behoerdenkennung> - </Empfaenger> - <SendendesSystem> - <InstanzID>HH_dFoerdermittelantrag</InstanzID> - <Produktname>dFoerdermittelantrag</Produktname> - <Version>2.1.999.0</Version> - </SendendesSystem> - <EmpfangsbestaetigungAnInitiator>false</EmpfangsbestaetigungAnInitiator> - <EmpfangsbestaetigungAnVorgaenger>false</EmpfangsbestaetigungAnVorgaenger> - </Kopf> - <Hauptobjekt> - <Dokument> - <Identifikation> - <ID>0e7734d8-bf3f-4f8d-9568-3791abf8fe44</ID> - </Identifikation> - <AllgemeineMetadaten> - <Betreff>Testantrag für die OZG-Cloud</Betreff> - <Kennzeichen>08dc497a-f1d4-412d-80ca-4f58405dc83e</Kennzeichen> - </AllgemeineMetadaten> - <Version> - <Nummer>1</Nummer> - <Format> - <Name listURI="urn:xoev-de:xdomea:codeliste:dateiformat" listVersionID="1.0" xsi:type="DateiformatCodeType"> - <code xmlns="">030</code> - <name xmlns="">xml-eXtensible Markup Language</name> - </Name> - <Version>0.0</Version> - <Primaerdokument> - <Dateiname>%s</Dateiname> - </Primaerdokument> - </Format> - <Format> - <Name listURI="urn:xoev-de:xdomea:codeliste:dateiformat" listVersionID="1.0" xsi:type="DateiformatCodeType"> - <code xmlns="">018</code> - <name xmlns="">pdf-Portable Document Format</name> - </Name> - <Version>0.0</Version> - <Primaerdokument> - <Dateiname>%s</Dateiname> - </Primaerdokument> - </Format> - </Version> - </Dokument> - </Hauptobjekt> - <ExternerGeschaeftsgang> - <Identifikation> - <ID>78fd7cf4-e9b2-4df1-9dc3-3b192a9d61d3</ID> - </Identifikation> - <Beteiligungsschritt> - <Nummer>1</Nummer> - <Status listURI="urn:xoev-de:xdomea:codeliste:beteiligungsstatus" listVersionID="1.0"> - <code xmlns="">001</code> - <name xmlns="">Der Schritt liegt in der Zukunft.</name> - </Status> - <Verfuegung> - <Ersteller> - <Behoerdenkennung> - <Kennung listURI="" listVersionID=""> - <code xmlns="">010200200000</code> - </Kennung> - <Praefix listURI="" listVersionID=""> - <code xmlns="">gad</code> - </Praefix> - </Behoerdenkennung> - </Ersteller> - <Adressat> - <Behoerdenkennung> - <Kennung listURI="" listVersionID=""> - <code xmlns="">dev-environment@ozg-cloud.de</code> - </Kennung> - <Praefix listURI="" listVersionID=""> - <code xmlns="">gae</code> - </Praefix> - </Behoerdenkennung> - </Adressat> - <Erstellungsdatum>2024-04-22</Erstellungsdatum> - <Erstellungsuhrzeit>16:14:18</Erstellungsuhrzeit> - </Verfuegung> - </Beteiligungsschritt> - </ExternerGeschaeftsgang> - <Anlage> - <Dokument> - <Identifikation> - <ID>1d8ca22a-9d20-4507-aa5e-b764bb5642f0</ID> - </Identifikation> - <Typ>Anlage</Typ> - <Version> - <Nummer>1</Nummer> - <Format> - <Name listURI="urn:xoev-de:xdomea:codeliste:dateiformat" listVersionID="1.0" xsi:type="DateiformatCodeType"> - <code xmlns="">030</code> - <name xmlns="">xml-eXtensible Markup Language</name> - </Name> - <Version>0.0</Version> - <Primaerdokument> - <Dateiname>%s</Dateiname> - </Primaerdokument> - </Format> - <Format> - <Name listURI="urn:xoev-de:xdomea:codeliste:dateiformat" listVersionID="1.0" xsi:type="DateiformatCodeType"> - <code xmlns="">018</code> - <name xmlns="">pdf-Portable Document Format</name> - </Name> - <Version>0.0</Version> - <Primaerdokument> - <Dateiname>anhang.pdf</Dateiname> - </Primaerdokument> - </Format> - </Version> - </Dokument> - </Anlage> -</Geschaeftsgang.Geschaeftsgang.0201> diff --git a/xta-adapter/src/test/resources/xdomea/mantelantrag_Geschaeftsgang.Geschaeftsgang.0201.xml b/xta-adapter/src/test/resources/xdomea/mantelantrag_Geschaeftsgang.Geschaeftsgang.0201.xml deleted file mode 100644 index 7bed65db..00000000 --- a/xta-adapter/src/test/resources/xdomea/mantelantrag_Geschaeftsgang.Geschaeftsgang.0201.xml +++ /dev/null @@ -1,132 +0,0 @@ -<?xml version="1.0"?> -<xdomea:Geschaeftsgang.Geschaeftsgang.0201 xmlns:xdomea="http://www.xdomea.de/V2.0.1"> - <xdomea:Kopf> - <xdomea:ProzessID>9f1b47d4-d6bf-4ec4-b0ff-1e30bee42ef2</xdomea:ProzessID> - <xdomea:Nachrichtentyp codeName="Geschaeftsgang.Geschaeftsgang.0201" - codelistAgencyName="AG XDOMEA des KoopA ADV" codelistVersionIdentifier="2.0.0" - languageCode="de" codelistName="Nachrichtentyp">0201 - </xdomea:Nachrichtentyp> - <xdomea:Erstellungszeitpunkt>2024-04-04T10:24:07.468+02:00</xdomea:Erstellungszeitpunkt> - <xdomea:Absender> - <xdomea:Behoerdenkennung> - <xdomea:Kennung codeName="WebMethod_Online-Dienste">WebMethod_Online-Dienste</xdomea:Kennung> - <xdomea:Praefix codeName="afmsh:">afmsh:</xdomea:Praefix> - </xdomea:Behoerdenkennung> - <xdomea:Institution> - <xdomea:Name>Schleswig-Holstein</xdomea:Name> - <xdomea:Kurzbezeichnung>Schleswig-Holstein</xdomea:Kurzbezeichnung> - </xdomea:Institution> - </xdomea:Absender> - <xdomea:Empfaenger> - <xdomea:Behoerdenkennung> - <xdomea:Kennung codeName="ozg-cloud-dev001">ozg-cloud-dev001</xdomea:Kennung> - <xdomea:Praefix codeName="afmsh:">afmsh:</xdomea:Praefix> - </xdomea:Behoerdenkennung> - </xdomea:Empfaenger> - <xdomea:SendendesSystem> - <xdomea:InstanzID>AFMSH.MSR</xdomea:InstanzID> - <xdomea:Produktname>MSR</xdomea:Produktname> - <xdomea:Version>10.5</xdomea:Version> - </xdomea:SendendesSystem> - <xdomea:EmpfangsbestaetigungAnInitiator>false</xdomea:EmpfangsbestaetigungAnInitiator> - <xdomea:EmpfangsbestaetigungAnVorgaenger>false</xdomea:EmpfangsbestaetigungAnVorgaenger> - </xdomea:Kopf> - <xdomea:Hauptobjekt> - <xdomea:Dokument> - <xdomea:Identifikation> - <xdomea:ID>9bae73b1-2ef3-480b-8acc-8bcd9979a788</xdomea:ID> - </xdomea:Identifikation> - <xdomea:AllgemeineMetadaten> - <xdomea:Betreff>Antrag auf Leistungen der Eingliederungshilfe und/oder Sozialhilfe</xdomea:Betreff> - <xdomea:Kennzeichen>20240404370530710707</xdomea:Kennzeichen> - </xdomea:AllgemeineMetadaten> - <xdomea:Posteingangsdatum>2024-04-04</xdomea:Posteingangsdatum> - <xdomea:Typ>maa_mantelantrag/maa_mantelantrag</xdomea:Typ> - <xdomea:Version> - <xdomea:Nummer>0.0</xdomea:Nummer> - <xdomea:Format> - <xdomea:Name codeName="xml - eXtensible Markup Language" - codelistAgencyName="AG XDOMEA des KoopA ADV" codelistVersionIdentifier="2.0.0" - languageCode="de" codelistName="Dateiformat">030 - </xdomea:Name> - <xdomea:Version>0.0</xdomea:Version> - <xdomea:Primaerdokument> - <xdomea:Dateiname>%s</xdomea:Dateiname> - </xdomea:Primaerdokument> - </xdomea:Format> - </xdomea:Version> - <xdomea:Version> - <xdomea:Nummer>0.0</xdomea:Nummer> - <xdomea:Format> - <xdomea:Name codeName="pdf - Portable Document Format" codelistAgencyName="AG XDOMEA des KoopA ADV" - codelistVersionIdentifier="2.0.0" languageCode="de" codelistName="Dateiformat">018 - </xdomea:Name> - <xdomea:Version>0.0</xdomea:Version> - <xdomea:Primaerdokument> - <xdomea:Dateiname>%s</xdomea:Dateiname> - </xdomea:Primaerdokument> - </xdomea:Format> - </xdomea:Version> - </xdomea:Dokument> - </xdomea:Hauptobjekt> - <xdomea:ExternerGeschaeftsgang> - <xdomea:Identifikation> - <xdomea:ID>8ae49342-8135-4f11-9930-5c4cc55b7ec2</xdomea:ID> - </xdomea:Identifikation> - <xdomea:Beteiligungsschritt> - <xdomea:Nummer>1</xdomea:Nummer> - <xdomea:Status codeName="zukuenftig" codelistAgencyName="AG XDOMEA des KoopA ADV" - codelistVersionIdentifier="2.0.0" languageCode="de" codelistName="Beteiligungsstatus">001 - </xdomea:Status> - <xdomea:Verfuegung> - <xdomea:Ersteller> - <xdomea:Behoerdenkennung> - <xdomea:Kennung codeName="WebMethod_Online-Dienste">WebMethod_Online-Dienste</xdomea:Kennung> - <xdomea:Praefix codeName="afmsh:">afmsh:</xdomea:Praefix> - </xdomea:Behoerdenkennung> - </xdomea:Ersteller> - <xdomea:Adressat> - <xdomea:Behoerdenkennung> - <xdomea:Kennung codeName="ozg-cloud-dev001">ozg-cloud-dev001</xdomea:Kennung> - <xdomea:Praefix codeName="afmsh:">afmsh:</xdomea:Praefix> - </xdomea:Behoerdenkennung> - </xdomea:Adressat> - <xdomea:Erstellungsdatum>2024-04-04</xdomea:Erstellungsdatum> - <xdomea:Erstellungsuhrzeit>10:24:06</xdomea:Erstellungsuhrzeit> - </xdomea:Verfuegung> - </xdomea:Beteiligungsschritt> - </xdomea:ExternerGeschaeftsgang> - <xdomea:Anlage> - <xdomea:Dokument> - <xdomea:Identifikation> - <xdomea:ID>1d8ca22a-9d20-4507-aa5e-b764bb5642f0</xdomea:ID> - </xdomea:Identifikation> - <xdomea:Typ>Anlage</xdomea:Typ> - <xdomea:Version> - <xdomea:Nummer>1</xdomea:Nummer> - <xdomea:Format> - <xdomea:Name codeName="xml - eXtensible Markup Language" - codelistAgencyName="AG XDOMEA des KoopA ADV" codelistVersionIdentifier="2.0.0" - languageCode="de" codelistName="Dateiformat">030 - </xdomea:Name> - <xdomea:Version>0.0</xdomea:Version> - <xdomea:Primaerdokument> - <xdomea:Dateiname>%s</xdomea:Dateiname> - </xdomea:Primaerdokument> - </xdomea:Format> - </xdomea:Version> - <xdomea:Version> - <xdomea:Nummer>1</xdomea:Nummer> - <xdomea:Format> - <xdomea:Name codeName="pdf - Portable Document Format" codelistAgencyName="AG XDOMEA des KoopA ADV" - codelistVersionIdentifier="2.0.0" languageCode="de" codelistName="Dateiformat">018 - </xdomea:Name> - <xdomea:Version>0.0</xdomea:Version> - <xdomea:Primaerdokument> - <xdomea:Dateiname>anhang.pdf</xdomea:Dateiname> - </xdomea:Primaerdokument> - </xdomea:Format> - </xdomea:Version> - </xdomea:Dokument> - </xdomea:Anlage> -</xdomea:Geschaeftsgang.Geschaeftsgang.0201> diff --git a/xta-adapter/src/test/resources/xtaTestStore.p12 b/xta-adapter/src/test/resources/xtaTestStore.p12 deleted file mode 100644 index a0cc212c49745a428186d0d4f2f73dd6ac7f24ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2768 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 P6^{eYHd-+;sS5xAda~bQ -- GitLab