From abe3e5bbbb5bedd32f7812d72c24642d7344986d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bert=20Viikm=C3=A4e?= Date: Wed, 25 Oct 2023 13:59:33 +0300 Subject: [PATCH 01/10] Fork from NIIS develop branch --- 3RD-PARTY-NOTICES.txt | 8164 +++++++++++++++++ BUILD.md | 113 + CODE_OF_CONDUCT.md | 128 + LICENSE.txt | 21 +- README.md | 113 +- doc/xroad_catalog_installation_guide.md | 310 + doc/xroad_catalog_user_guide.md | 2485 +++++ gradle.properties | 2 +- architecture.png => img/architecture.png | Bin img/ecosystem.png | Bin 0 -> 856796 bytes img/xroad_catalog_production.png | Bin 0 -> 51291 bytes xroad-catalog-collector/LICENSE.txt | 21 +- xroad-catalog-collector/README.md | 74 +- .../xroad-catalog-collector/docker/Dockerfile | 2 +- .../redhat/SPECS/xroad-catalog-collector.spec | 7 + .../collector/XRoadCatalogCollector.java | 3 +- .../collector/actors/CatalogSupervisor.java | 3 +- .../collector/actors/FetchCompaniesActor.java | 3 +- .../collector/actors/FetchOpenApiActor.java | 3 +- .../actors/FetchOrganizationsActor.java | 3 +- .../collector/actors/FetchRestActor.java | 3 +- .../collector/actors/FetchWsdlActor.java | 3 +- .../collector/actors/ListClientsActor.java | 3 +- .../collector/actors/ListMethodsActor.java | 3 +- .../collector/actors/OrganizationsActor.java | 3 +- .../actors/OrganizationsSupervisor.java | 3 +- .../collector/actors/XRoadCatalogActor.java | 3 +- .../ApplicationConfiguration.java | 3 +- .../ProductionConfiguration.java | 3 +- .../extension/SpringActorProducer.java | 3 +- .../collector/extension/SpringExtension.java | 3 +- .../CatalogCollectorRuntimeException.java | 3 +- .../collector/util/ClientListUtil.java | 3 +- .../collector/util/ClientTypeUtil.java | 3 +- .../catalog/collector/util/Endpoint.java | 3 +- .../collector/util/MethodListUtil.java | 3 +- .../collector/util/OrganizationUtil.java | 3 +- .../util/SecurityServerMetadata.java | 3 +- .../catalog/collector/util/XRoadClient.java | 3 +- .../util/XRoadRestServiceIdentifierType.java | 3 +- .../resources/collector-production.properties | 14 +- .../resources/collector-sshtest.properties | 14 +- .../src/main/resources/collector.properties | 3 + .../actors/CatalogSupervisorTest.java | 3 +- .../actors/FetchCompanyActorTest.java | 3 +- .../actors/FetchOpenApiActorTest.java | 3 +- .../actors/FetchOrganizationActorTest.java | 3 +- .../collector/actors/FetchRestActorTest.java | 3 +- .../collector/actors/FetchWsdlActorTest.java | 3 +- .../actors/ListClientsActorTest.java | 3 +- .../collector/actors/ListClientsRestTest.java | 3 +- .../actors/ListMethodsActorTest.java | 3 +- .../actors/OrganizationsActorTest.java | 3 +- .../actors/OrganizationsSupervisorTest.java | 3 +- .../DevelopmentConfiguration.java | 3 +- .../collector/mock/MockHttpServer.java | 3 +- .../collector/mock/MockMetaServicesImpl.java | 3 +- .../collector/mock/MockRestTemplate.java | 3 +- xroad-catalog-lister/LICENSE.txt | 21 +- xroad-catalog-lister/README.md | 42 +- .../{ => img}/class_diagram.png | Bin .../xroad-catalog-lister/debian/control | 2 +- .../xroad-catalog-lister/docker/Dockerfile | 2 +- .../redhat/SPECS/xroad-catalog-lister.spec | 15 +- .../lister/CatalogListerRuntimeException.java | 3 +- .../vrk/xroad/catalog/lister/Heartbeat.java | 3 +- .../catalog/lister/HeartbeatController.java | 3 +- .../catalog/lister/JaxbCatalogService.java | 3 +- .../lister/JaxbCatalogServiceImpl.java | 3 +- .../catalog/lister/JaxbCompanyService.java | 3 +- .../lister/JaxbCompanyServiceImpl.java | 3 +- .../lister/JaxbOrganizationConversion.java | 3 +- .../lister/JaxbOrganizationConverter.java | 3 +- .../lister/JaxbOrganizationService.java | 3 +- .../lister/JaxbOrganizationServiceImpl.java | 3 +- .../catalog/lister/JaxbServiceConversion.java | 3 +- .../catalog/lister/JaxbServiceConverter.java | 3 +- .../catalog/lister/ListerApplication.java | 3 +- .../lister/OrganizationController.java | 3 +- .../catalog/lister/OrganizationEndpoint.java | 3 +- .../lister/OrganizationEndpointImpl.java | 3 +- .../catalog/lister/OrganizationHeartbeat.java | 3 +- .../OrganizationHeartbeatController.java | 3 +- .../lister/OrganizationOperations.java | 3 +- .../catalog/lister/ServiceController.java | 3 +- .../xroad/catalog/lister/ServiceEndpoint.java | 3 +- .../catalog/lister/ServiceEndpointImpl.java | 3 +- .../lister/ServiceEndpointInterceptor.java | 3 +- .../catalog/lister/ServiceOperations.java | 3 +- .../catalog/lister/SharedParamsParser.java | 151 +- .../catalog/lister/WebServiceConfig.java | 3 +- .../catalog/lister/WsdlCdataInterceptor.java | 3 +- .../lister/util/JaxbOrganizationUtil.java | 3 +- .../catalog/lister/util/JaxbServiceUtil.java | 3 +- .../catalog/lister/util/OrganizationUtil.java | 3 +- .../catalog/lister/util/ServiceUtil.java | 3 +- .../resources/lister-production.properties | 2 +- .../src/main/resources/lister.properties | 2 +- .../catalog/lister/ApplicationTests.java | 3 +- .../lister/HeartbeatControllerTests.java | 3 +- .../lister/JaxbCatalogServiceTest.java | 3 +- .../lister/JaxbCompanyServiceTest.java | 3 +- .../lister/JaxbOrganizationServiceTest.java | 3 +- .../lister/OrganizationControllerTests.java | 3 +- .../OrganizationHeartbeatControllerTests.java | 3 +- .../lister/ServiceControllerTests.java | 3 +- .../lister/SharedParamsParserTests.java | 95 + .../fi/vrk/xroad/catalog/lister/TestUtil.java | 3 +- .../src/test/resources/shared-params-2.xml | 145 + xroad-catalog-persistence/LICENSE.txt | 21 +- xroad-catalog-persistence/README.md | 57 +- xroad-catalog-persistence/build.gradle | 1 + .../{ => img}/class_diagram.png | Bin .../catalog/persistence/Application.java | 3 +- .../catalog/persistence/CatalogService.java | 3 +- .../persistence/CatalogServiceImpl.java | 3 +- .../catalog/persistence/CompanyService.java | 3 +- .../persistence/CompanyServiceImpl.java | 3 +- .../persistence/OrganizationService.java | 3 +- .../persistence/OrganizationServiceImpl.java | 3 +- .../catalog/persistence/dto/AddressData.java | 3 +- .../persistence/dto/BusinessAddressData.java | 3 +- .../dto/BusinessAuxiliaryNameData.java | 3 +- .../persistence/dto/BusinessIdChangeData.java | 3 +- .../persistence/dto/BusinessLineData.java | 3 +- .../persistence/dto/BusinessNameData.java | 3 +- .../catalog/persistence/dto/ChangedValue.java | 3 +- .../catalog/persistence/dto/CompanyData.java | 3 +- .../persistence/dto/CompanyFormData.java | 3 +- .../persistence/dto/ContactDetailData.java | 3 +- .../persistence/dto/DescriptorInfo.java | 3 +- .../persistence/dto/DescriptorInfoList.java | 3 +- .../dto/DistinctServiceStatistics.java | 3 +- .../DistinctServiceStatisticsResponse.java | 3 +- .../xroad/catalog/persistence/dto/Email.java | 3 +- .../catalog/persistence/dto/EmailData.java | 3 +- .../catalog/persistence/dto/EndpointData.java | 3 +- .../persistence/dto/ErrorLogResponse.java | 3 +- .../persistence/dto/HeartbeatResponse.java | 3 +- .../catalog/persistence/dto/LanguageData.java | 3 +- .../persistence/dto/LastCollectionData.java | 3 +- .../dto/LastOrganizationCollectionData.java | 3 +- .../persistence/dto/LiquidationData.java | 3 +- .../dto/ListOfServicesResponse.java | 3 +- .../catalog/persistence/dto/MemberData.java | 3 +- .../persistence/dto/MemberDataList.java | 3 +- .../catalog/persistence/dto/MemberInfo.java | 3 +- .../persistence/dto/OrganizationChanged.java | 3 +- .../persistence/dto/OrganizationDTO.java | 3 +- .../persistence/dto/OrganizationData.java | 3 +- .../dto/OrganizationDescriptionData.java | 3 +- .../dto/OrganizationHeartbeatResponse.java | 3 +- .../persistence/dto/OrganizationNameData.java | 3 +- .../persistence/dto/PhoneNumberData.java | 3 +- ...ceBoxAddressAdditionalInformationData.java | 3 +- .../dto/PostOfficeBoxAddressData.java | 3 +- .../PostOfficeBoxAddressMunicipalityData.java | 3 +- ...tOfficeBoxAddressMunicipalityNameData.java | 3 +- .../persistence/dto/PostOfficeBoxData.java | 3 +- .../persistence/dto/PostOfficeData.java | 3 +- .../persistence/dto/RegisteredEntryData.java | 3 +- .../persistence/dto/RegisteredOfficeData.java | 3 +- .../persistence/dto/SecurityServerData.java | 3 +- .../dto/SecurityServerDataList.java | 3 +- .../persistence/dto/SecurityServerInfo.java | 3 +- .../catalog/persistence/dto/ServiceData.java | 3 +- .../dto/ServiceEndpointsResponse.java | 3 +- .../persistence/dto/ServiceResponse.java | 3 +- .../persistence/dto/ServiceStatistics.java | 3 +- .../dto/ServiceStatisticsResponse.java | 3 +- ...treetAddressAdditionalInformationData.java | 3 +- .../persistence/dto/StreetAddressData.java | 3 +- .../dto/StreetAddressMunicipalityData.java | 3 +- .../StreetAddressMunicipalityNameData.java | 3 +- .../dto/StreetAddressPostOfficeData.java | 3 +- .../catalog/persistence/dto/StreetData.java | 3 +- .../persistence/dto/SubsystemData.java | 3 +- .../persistence/dto/SubsystemName.java | 3 +- .../catalog/persistence/dto/WebpageData.java | 3 +- .../catalog/persistence/dto/XRoadData.java | 3 +- .../catalog/persistence/entity/Address.java | 3 +- .../persistence/entity/BusinessAddress.java | 3 +- .../entity/BusinessAuxiliaryName.java | 3 +- .../persistence/entity/BusinessIdChange.java | 3 +- .../persistence/entity/BusinessLine.java | 3 +- .../persistence/entity/BusinessName.java | 3 +- .../catalog/persistence/entity/Company.java | 3 +- .../persistence/entity/CompanyForm.java | 3 +- .../persistence/entity/ContactDetail.java | 3 +- .../catalog/persistence/entity/Email.java | 3 +- .../catalog/persistence/entity/Endpoint.java | 3 +- .../catalog/persistence/entity/ErrorLog.java | 3 +- .../catalog/persistence/entity/Language.java | 3 +- .../persistence/entity/Liquidation.java | 3 +- .../catalog/persistence/entity/Member.java | 3 +- .../catalog/persistence/entity/MemberId.java | 3 +- .../catalog/persistence/entity/OpenApi.java | 3 +- .../persistence/entity/Organization.java | 3 +- .../entity/OrganizationDescription.java | 3 +- .../persistence/entity/OrganizationName.java | 3 +- .../persistence/entity/PhoneNumber.java | 3 +- .../persistence/entity/PostOffice.java | 3 +- .../persistence/entity/PostOfficeBox.java | 3 +- .../entity/PostOfficeBoxAddress.java | 3 +- ...OfficeBoxAddressAdditionalInformation.java | 3 +- .../PostOfficeBoxAddressMunicipality.java | 3 +- .../PostOfficeBoxAddressMunicipalityName.java | 3 +- .../persistence/entity/RegisteredEntry.java | 3 +- .../persistence/entity/RegisteredOffice.java | 3 +- .../catalog/persistence/entity/Rest.java | 3 +- .../catalog/persistence/entity/Service.java | 3 +- .../catalog/persistence/entity/ServiceId.java | 3 +- .../persistence/entity/StatusInfo.java | 3 +- .../catalog/persistence/entity/Street.java | 3 +- .../persistence/entity/StreetAddress.java | 3 +- .../StreetAddressAdditionalInformation.java | 3 +- .../entity/StreetAddressMunicipality.java | 3 +- .../entity/StreetAddressMunicipalityName.java | 3 +- .../entity/StreetAddressPostOffice.java | 3 +- .../catalog/persistence/entity/Subsystem.java | 3 +- .../persistence/entity/SubsystemId.java | 3 +- .../catalog/persistence/entity/WebPage.java | 3 +- .../catalog/persistence/entity/Wsdl.java | 3 +- .../repository/AddressRepository.java | 3 +- .../repository/BusinessAddressRepository.java | 3 +- .../BusinessAuxiliaryNameRepository.java | 3 +- .../BusinessIdChangeRepository.java | 3 +- .../repository/BusinessLineRepository.java | 3 +- .../repository/BusinessNameRepository.java | 3 +- .../repository/CompanyFormRepository.java | 3 +- .../repository/CompanyRepository.java | 3 +- .../repository/ContactDetailRepository.java | 3 +- .../repository/EmailRepository.java | 3 +- .../repository/EndpointRepository.java | 3 +- .../repository/ErrorLogRepository.java | 3 +- .../repository/LanguageRepository.java | 3 +- .../repository/LiquidationRepository.java | 3 +- .../repository/MemberRepository.java | 3 +- .../repository/OpenApiRepository.java | 3 +- .../OrganizationDescriptionRepository.java | 3 +- .../OrganizationNameRepository.java | 3 +- .../repository/OrganizationRepository.java | 3 +- .../repository/PhoneNumberRepository.java | 3 +- ...ddressAdditionalInformationRepository.java | 3 +- ...eBoxAddressMunicipalityNameRepository.java | 3 +- ...fficeBoxAddressMunicipalityRepository.java | 3 +- .../PostOfficeBoxAddressRepository.java | 3 +- .../repository/PostOfficeBoxRepository.java | 3 +- .../repository/PostOfficeRepository.java | 3 +- .../repository/RegisteredEntryRepository.java | 3 +- .../RegisteredOfficeRepository.java | 3 +- .../repository/RestRepository.java | 3 +- .../repository/ServiceRepository.java | 3 +- ...ddressAdditionalInformationRepository.java | 3 +- ...reetAddressMunicipalityNameRepository.java | 3 +- .../StreetAddressMunicipalityRepository.java | 3 +- .../StreetAddressPostOfficeRepository.java | 3 +- .../repository/StreetAddressRepository.java | 3 +- .../repository/StreetRepository.java | 3 +- .../repository/SubsystemRepository.java | 3 +- .../repository/WebPageRepository.java | 3 +- .../repository/WsdlRepository.java | 3 +- .../persistence/AddressDataDTOTest.java | 3 +- .../persistence/AddressRepositoryTest.java | 3 +- .../BusinessAddressDataDTOTest.java | 3 +- .../BusinessAddressRepositoryTest.java | 3 +- .../BusinessAuxiliaryNameDataDTOTest.java | 3 +- .../BusinessAuxiliaryNameRepositoryTest.java | 3 +- .../BusinessIdChangeDataDTOTest.java | 3 +- .../BusinessIdChangeRepositoryTest.java | 3 +- .../persistence/BusinessLineDataDTOTest.java | 3 +- .../BusinessLineRepositoryTest.java | 3 +- .../persistence/BusinessNameDataDTOTest.java | 3 +- .../BusinessNameRepositoryTest.java | 3 +- .../persistence/CatalogServiceTest.java | 3 +- .../persistence/ChangedValueDTOTest.java | 3 +- .../persistence/CompanyDataDTOTest.java | 3 +- .../persistence/CompanyFormDataDTOTest.java | 3 +- .../CompanyFormRepositoryTest.java | 3 +- .../persistence/CompanyRepositoryTest.java | 3 +- .../persistence/CompanyServiceTest.java | 3 +- .../persistence/ContactDetailDataDTOTest.java | 3 +- .../ContactDetailRepositoryTest.java | 3 +- .../persistence/DescriptorInfoDTOTest.java | 3 +- .../DescriptorInfoListDTOTest.java | 3 +- .../DistinctServiceStatisticsDTOTest.java | 3 +- ...tinctServiceStatisticsResponseDTOTest.java | 3 +- .../catalog/persistence/EmailDTOTest.java | 3 +- .../catalog/persistence/EmailDataDTOTest.java | 3 +- .../persistence/EmailRepositoryTest.java | 3 +- .../persistence/EndpointDataDTOTest.java | 3 +- .../persistence/ErrorLogRepositoryTest.java | 3 +- .../persistence/ErrorLogResponseDTOTest.java | 3 +- .../persistence/HeartbeatResponseDTOTest.java | 3 +- .../persistence/LanguageDataDTOTest.java | 3 +- .../persistence/LanguageRepositoryTest.java | 3 +- .../LastCollectionDataDTOTest.java | 3 +- .../persistence/LiquidationDataDTOTest.java | 3 +- .../LiquidationRepositoryTest.java | 3 +- .../ListOfServicesResponseDTOTest.java | 3 +- .../persistence/MemberDataDTOTest.java | 3 +- .../persistence/MemberDataListDTOTest.java | 3 +- .../persistence/MemberInfoDTOTest.java | 3 +- .../persistence/MemberRepositoryTest.java | 3 +- .../xroad/catalog/persistence/MemberTest.java | 3 +- .../OrganizationChangedDTOTest.java | 3 +- .../persistence/OrganizationDTOTest.java | 3 +- .../persistence/OrganizationDataDTOTest.java | 3 +- .../OrganizationDescriptionDataDTOTest.java | 3 +- ...OrganizationDescriptionRepositoryTest.java | 3 +- .../OrganizationNameDataDTOTest.java | 3 +- .../OrganizationNameRepositoryTest.java | 3 +- .../OrganizationRepositoryTest.java | 3 +- .../persistence/OrganizationServiceTest.java | 3 +- .../persistence/PhoneNumberDataDTOTest.java | 3 +- .../PhoneNumberRepositoryTest.java | 3 +- ...dressAdditionalInformationDataDTOTest.java | 3 +- ...ssAdditionalInformationRepositoryTest.java | 3 +- .../PostOfficeBoxAddressDataDTOTest.java | 3 +- ...ficeBoxAddressMunicipalityDataDTOTest.java | 3 +- ...BoxAddressMunicipalityNameDataDTOTest.java | 3 +- ...AddressMunicipalityNameRepositoryTest.java | 3 +- ...eBoxAddressMunicipalityRepositoryTest.java | 3 +- .../PostOfficeBoxAddressRepositoryTest.java | 3 +- .../persistence/PostOfficeBoxDataDTOTest.java | 3 +- .../PostOfficeBoxRepositoryTest.java | 3 +- .../persistence/PostOfficeDataDTOTest.java | 3 +- .../persistence/PostOfficeRepositoryTest.java | 3 +- .../RegisteredEntryDataDTOTest.java | 3 +- .../RegisteredEntryRepositoryTest.java | 3 +- .../RegisteredOfficeDataDTOTest.java | 3 +- .../RegisteredOfficeRepositoryTest.java | 3 +- .../persistence/SaveMissingSubsystemTest.java | 3 +- .../SecurityServerDataDTOTest.java | 3 +- .../SecurityServerDataListDTOTest.java | 3 +- .../SecurityServerInfoDTOTest.java | 3 +- .../persistence/ServiceDataDTOTest.java | 3 +- .../ServiceEndpointsResponseDTOTest.java | 3 +- .../persistence/ServiceRepositoryTest.java | 3 +- .../persistence/ServiceResponseDTOTest.java | 3 +- .../persistence/ServiceStatisticsDTOTest.java | 3 +- .../ServiceStatisticsResponseDTOTest.java | 3 +- ...dressAdditionalInformationDataDTOTest.java | 3 +- ...ssAdditionalInformationRepositoryTest.java | 3 +- .../persistence/StreetAddressDataDTOTest.java | 3 +- .../StreetAddressMunicipalityDataDTOTest.java | 3 +- ...eetAddressMunicipalityNameDataDTOTest.java | 3 +- ...AddressMunicipalityNameRepositoryTest.java | 3 +- ...reetAddressMunicipalityRepositoryTest.java | 3 +- .../StreetAddressPostOfficeDataDTOTest.java | 3 +- ...StreetAddressPostOfficeRepositoryTest.java | 3 +- .../StreetAddressRepositoryTest.java | 3 +- .../persistence/StreetDataDTOTest.java | 3 +- .../persistence/StreetRepositoryTest.java | 3 +- .../persistence/SubsystemDataDTOTest.java | 3 +- .../persistence/SubsystemNameDTOTest.java | 3 +- .../persistence/SubsystemRepositoryTest.java | 3 +- .../catalog/persistence/SubsystemTest.java | 3 +- .../xroad/catalog/persistence/TestUtil.java | 3 +- .../persistence/WebPageRepositoryTest.java | 3 +- .../persistence/WebpageDataDTOTest.java | 3 +- .../catalog/persistence/XRoadDataDTOTest.java | 3 +- xroad_catalog_production.png | Bin 34622 -> 0 bytes xroad_catalog_user_guide.md | 2854 ------ 364 files changed, 12480 insertions(+), 3388 deletions(-) create mode 100644 3RD-PARTY-NOTICES.txt create mode 100644 BUILD.md create mode 100644 CODE_OF_CONDUCT.md create mode 100644 doc/xroad_catalog_installation_guide.md create mode 100644 doc/xroad_catalog_user_guide.md rename architecture.png => img/architecture.png (100%) create mode 100644 img/ecosystem.png create mode 100644 img/xroad_catalog_production.png rename xroad-catalog-lister/{ => img}/class_diagram.png (100%) create mode 100644 xroad-catalog-lister/src/test/java/fi/vrk/xroad/catalog/lister/SharedParamsParserTests.java create mode 100644 xroad-catalog-lister/src/test/resources/shared-params-2.xml rename xroad-catalog-persistence/{ => img}/class_diagram.png (100%) delete mode 100644 xroad_catalog_production.png delete mode 100644 xroad_catalog_user_guide.md diff --git a/3RD-PARTY-NOTICES.txt b/3RD-PARTY-NOTICES.txt new file mode 100644 index 00000000..b445d5ff --- /dev/null +++ b/3RD-PARTY-NOTICES.txt @@ -0,0 +1,8164 @@ +This project contains or depends on third-party software components pursuant to the following licenses: + +---- + +Copyright (c) 1992-2005 Free Software Foundation, Inc. + +ANTLR SOFTWARE RIGHTS + +ANTLR 1989-2006 Developed by Terence Parr +Partially supported by University of San Francisco & jGuru.com + +We reserve no legal rights to the ANTLR --it is fully in the public domain. An +individual or company may do whatever they wish with source code distributed +with ANTLR or the code generated by ANTLR, including the incorporation of ANTLR, +or its output, into commerical software. + +We encourage users to develop software with ANTLR. However, we do ask that +credit is given to us for developing ANTLR. By "credit", we mean that if you use +ANTLR or incorporate any source code into one of your programs (commercial +product, research project, or otherwise) that you acknowledge this fact +somewhere in the documentation, research report, etc... If you like ANTLR and +have developed a nice tool with the output, please mention that you developed it +using ANTLR. In addition, we ask that the headers remain intact in our source +code. As long as these guidelines are kept, we expect to continue enhancing this +system and expect to make other tools available as they are completed. + +The primary ANTLR guy: + +Terence Parr +parrt@cs.usfca.edu +parrt@antlr.org + +---- + +(c) 2001-2002 +Copyright (c) 1999, 2004, 2018, 2021 Oracle and/or its affiliates +Copyright (c) 1999-2004, 2016-2017 The Apache Software Foundation +copyright (c) 1999 International Business Machines, Inc., http://www.apache.org + +The Apache Software License, Version 1.1 + +Copyright (c) 2000 The Apache Software Foundation. All rights +reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + +3. The end-user documentation included with the redistribution, + if any, must include the following acknowledgment: + "This product includes software developed by the + Apache Software Foundation (http://www.apache.org/)." + Alternately, this acknowledgment may appear in the software itself, + if and wherever such third-party acknowledgments normally appear. + +4. The names "Apache" and "Apache Software Foundation" must + not be used to endorse or promote products derived from this + software without prior written permission. For written + permission, please contact apache@apache.org. + +5. Products derived from this software may not be called "Apache", + nor may "Apache" appear in their name, without prior written + permission of the Apache Software Foundation. + +THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF +USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +---- + +(c) 1996, 2004 Carsten Heinz +(c) 1997 Detlev Droege +(c) 1997 Dominique de Waleffe +(c) 1997 Dominique de Waleffe Extended +(c) 1997 Kai Wollenweber +(c) 1998 Christian Haul +(c) 1998 Detlef Reimers +(c) 1998 Juergen Heim +(c) 1998 Kai Below +(c) 1998 Michael +(c) 1998-1999 Peter Bartke +(c) 1999 Aidan Philip Heerdegen +(c) 1999 Berthold +(c) 1999 Jens T. Berger Thielemann +(c) 1999 Jos e Romildo Malaquias +(c) 1999 Michael Wiese +(c) 1999 Patrick Cousot +(c) 1999 Torben Hoffmann +(c) 2000 Rolf Niepraschk +(c) 2000 Sonja Weidmann +(c) 2000 by Andreas Matthias +(c) 2000-2001 case +(c) 2001 Oliver Baum +(c) 2001 Ralph Becket +(c) 2001-2002 Ulrich G. Wortmann +(c) 2002 Andrew Zabolotny +(c) 2002 Geraint Paul Bevan +(c) 2002 Mark van Eijk +(c) 2002 Martin Brodbeck +(c) 2002 Neil Conway +(c) 2002 Robert Frank +(c) 2002-2003 Jean-Philippe Grivet +(c) 2002-2011 LAMP/EPFL Carlos Loria cloria@artinsoft.com +(c) 2002-2013 LAMP/EPFL out println +(c) 2002-2021 LAMP/EPFL +(c) 2003 Adam Grabowski +(c) 2003 Cameron H. G. Wright +(c) 2003 Daniel Gazard +(c) 2003 Dirk Jesko +(c) 2003 Jonathan Sauer +(c) 2003 Riccardo Murri +(c) 2004 Brian Christensen +(c) 2004 Martine Gautier +(c) 2004 William Thimbleby +(c) 2004, 2006 Brooks Moses +(c) 2005 Christophe Jorssen +(c) 2005 IEEE Telephone Laboratories, Inc. - effective-enterprise-java Ted Neward. Scott Meyers +(c) 2005-2022 The original +(c) 2006 Christoph Kiefer +(c) 2006 Herbert Voss +(c) 2006 Michael Franke +(c) 2006 Santiago Urue +(c) 2009-2010 EPFL/LAMP code +(c) 2013 Heiko Oberdiek +(c) 2013 Ignacio D +(c) 2013 Jobst Hoffmann +(c) 2013 Stefan Pinnow +(c) 2013 Stephan Hennig +(c) A +(c) Andres Becerra Sandoval +(c) Christoph Giess +(c) Copyright 2002 International Business Machines Corporation +(c) Gerd Neugebauer +(c) List, Tuple2, Int +(c) M '. group Trees +(c) Robert Wenner +(c) Steffen Klupsch +(c) Torsten Neuer +Copyright (c) $year Lightbend Inc. +Copyright (c) 1997, 2004-2022 Oracle and/or its affiliates +Copyright (c) 1998-2003 Xerox Corporation, Palo Alto Research Center, Incorporated (PARC) +Copyright (c) 1999-2001 Xerox Corporation +Copyright (c) 1999-2002 Xerox Corporation, Palo Alto Research Center, Incorporated +Copyright (c) 1999-2009 OW2 Consortium +Copyright (c) 1999-2018 Xerox Corporation, Palo Alto Research Center, Incorporated (PARC), Contributors +Copyright (c) 1999-2022 Apache Software Foundation +Copyright (c) 1999-2022 The Apache Software Foundation +Copyright (c) 2000, 2003-2006, 2010, 2017 IBM Corporation and others +Copyright (c) 2001-2005 freebxml.org +Copyright (c) 2001-2011 http://www.apache.org/' The Apache Software Foundation +Copyright (c) 2002 $ copyright Pivotal, Inc. +Copyright (c) 2002 Wes Isberg +Copyright (c) 2002, 2004 Palo Alto Research Center, Incorporated (PARC). IBM Corporation +Copyright (c) 2002, 2005 IBM and other contributors +Copyright (c) 2002, 2010 Palo Alto Research Center, Incorporated (PARC) and others +Copyright (c) 2002-2003 Palo Alto Research Center, Incorporated +Copyright (c) 2002-2013 https://www.epfl.ch/ +Copyright (c) 2002-2014 Palo Alto Research Center, Incorporated (PARC) and Contributors +Copyright (c) 2002-2019 Palo Alto Research Center, Incorporated (PARC) +Copyright (c) 2002-2021 A href https://www.epfl.ch +Copyright (c) 2002-2021 EPFL +Copyright (c) 2002-2022 Contributors +Copyright (c) 2002-2022 Pivotal, Inc. +Copyright (c) 2004, 2013 IBM, VMware +Copyright (c) 2004, 2019 IBM Corporation, contributors +Copyright (c) 2004-2005, 2013, 2016 IBM Corporation +Copyright (c) 2004-2006, 2008 Tatu Saloranta, tatu.saloranta@iki.fi +Copyright (c) 2004-2006, 2017 IBM +Copyright (c) 2004-2016 IBM, VMware, Contributors +Copyright (c) 2005 IBM Corporation Ltd +Copyright (c) 2005 IBM, Contributors +Copyright (c) 2005-2021 The Guava Authors +Copyright (c) 2006, 2008 Google Inc. +Copyright (c) 2006, 2081 IBM and contributors +Copyright (c) 2008 SnakeYAML +Copyright (c) 2009 Collaborative Development Group, C.S. Dept., University of Bari +Copyright (c) 2009-2015 Typesafe Inc. +Copyright (c) 2009-2022 Lightbend Inc. +Copyright (c) 2009-2022 Lightbend Inc. +Copyright (c) 2010 SpringSource, Contributors +Copyright (c) 2010 The Android Open Source Project +Copyright (c) 2010, 2012 Lucierna +Copyright (c) 2011-2012, 2015 Typesafe Inc. +Copyright (c) 2011-2015 Typesafe Inc. +Copyright (c) 2011-2019 Pivotal Software, Inc. +Copyright (c) 2012 VMware, Inc. +Copyright (c) 2012-2014 Lightbend Inc. +Copyright (c) 2012-2016 University of Washington +Copyright (c) 2012-2022 Copies +Copyright (c) 2013 VMware +Copyright (c) 2013-2017, 2019 Brett Wooldridge +Copyright (c) 2014 Contributor +Copyright (c) 2015 SmartBear Software Inc. +Copyright (c) 2015-2021 the original +Copyright (c) 2017 public +Copyright (c) 2019 Eclipse Foundation +Copyright (c) Werner Randelshofer. Apache +Copyright 1999-2021 Apache Software Foundation +Copyright 1999-2021 The Apache Software Foundation +Copyright 2001-2005 International Business Machines Corporation and Microsoft Corporation +Copyright 2001-2013 Artima, Inc. +Copyright 2002 $ year the original author or authors +Copyright 2002-2012 Ramnivas Laddad, Juergen Hoeller, Chris Beams +Copyright 2002-2021 LAMP/EPFL +Copyright 2002-2021 LAMP/EPFL and Lightbend, Inc. +Copyright 2002-2022 the original author or authors +Copyright 2003-2004 BEA Systems Inc. and IBM Corporation and Microsoft Corporation +Copyright 2003-2010 Christian d'Heureuse, Inventec Informatik AG, Zurich, Switzerland +Copyright 2004 Jason Paul Kitchen +Copyright 2004 Sun Microsystems, Inc. +Copyright 2005-2006 Tim Fennell +Copyright 2005-2018 LAMP/EPFL Adapted from Lex Spoon's +Copyright 2006 Codehaus +Copyright 2006 Guillaume Nodet +Copyright 2006 International Business Machines Corp. +Copyright 2006 contributors +Copyright 2006-2019 Joe Walnes, Henri Tremblay, Leonardo Mesquita +Copyright 2007 The Codehaus Foundation +Copyright 2007 present the original author or authors +Copyright 2009-2018 Lightbend Inc. +Copyright 2010-2011, 2013, 2017, 2019-2020 Red Hat, Inc. +Copyright 2010-2011, 2013-2014, 2020-2021 Red Hat, Inc., and individual contributors +Copyright 2010-2012, 2015, 2017, 2021 Google Inc. +Copyright 2011 LMAX Ltd. +Copyright 2011-2022 The Error Prone +Copyright 2012 Twitter, Inc +Copyright 2012 Twitter, Inc. http://www.apache.org/licenses/LICENSE-2.0.txt +Copyright 2012-2017 Gunnar Morling (http://www.gunnarmorling.de/) and/or other contributors +Copyright 2013 FasterXML.com +Copyright 2014 Present Rafael Winterhalter +Copyright 2014-2017 Real Logic Ltd. +Copyright 2017 Remko Popma +Copyright 2021 Vladimir Sitnikov, +Copyright 2021-2022 Eclipse Foundation +Copyright E2012-20 d d +Copyright Terracotta, Inc. +Copyright today.year The Error Prone +copyright 2010-2011 Google Corporation. Digitized +copyright 2010-2011 Google Corporation. Open Sans Open Sans +copyright 2010-2011 Google Corporation.Open +copyright 2010-2011 Google Corporation.Open SansBold1.10 1ASC OpenSans-BoldOpen Sans BoldVersion +copyright 2010-2011 Google Corporation.Open SansItalic1.10 1ASC OpenSans-ItalicOpen Sans ItalicVersion +copyright s Scala (https://www.scala-lang.org) +ThisType (c) +Yaml (c) EnumBean + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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 + + http://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. + +---- + +Copyright (c) 1996-2022 The PostgreSQL Global Development Group +Copyright (c) 1997 $lastEditYear PostgreSQL Global Development Group +Copyright (c) 1997, 2001, 2003-2022 PostgreSQL Global Development Group +Copyright (c) 2003-2020 PostgreSQL Global Development Group Require-Capability +Copyright (c) 2004 Open Cloud Limited +Copyright (c) 2006 Javolution (http://javolution.org) +Copyright 2017, 2019 OnGres +copyright 2593 year https://github.com/pgjdbc/pgjdbc/pull/ +copyright PostgreSQL Global Development Group +copyright content The PostgreSQL Global Development Group +Copr projects +copr web page (https://copr.fedorainfracloud.org/coprs/g/pgjdbc/pgjdbc-travis/builds/) + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +Redistributions of source code must retain the above copyright notice, this list +of conditions and the following disclaimer. + +Redistributions in binary form must reproduce the above copyright notice, this +list of conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +---- + +Copr repository (https://copr.fedorainfracloud.org/coprs/g/pgjdbc/pgjdbc-travis/) + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +Redistributions of source code must retain the above copyright notice, this list +of conditions and the following disclaimer. + +Redistributions in binary form must reproduce the above copyright notice, this +list of conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The views and conclusions contained in the software and documentation are those +of the authors and should not be interpreted as representing official policies, +either expressed or implied, of the FreeBSD Project. + +---- + +(c) Then +Copyright (c) 1996 O'Reilly & Associates +Copyright (c) 1996-2014 http://www.oracle.com' Oracle and/or its affiliates +Copyright (c) 1997-1998, 2001, 2003-2022 Oracle and/or its affiliates +Copyright (c) 1999-2009 OW2 Consortium +Copyright (c) 2000-2005 JPackage Project +Copyright (c) 2000-2005 Marc Alexander Lehmann +Copyright (c) 2000-2011 INRIA, France Telecom +Copyright (c) 2001-2003 ThoughtWorks, Inc. 651 W Washington Ave. Suite 500 Chicago, IL 60661 USA +Copyright (c) 2001-2003, 2005, 2010, 2022 Thai Open Source Software Center Ltd +Copyright (c) 2002-2006 Marc Prud'hommeaux +Copyright (c) 2002-2018 the original author or authors +Copyright (c) 2004 Sun Microsystems, Inc. +Copyright (c) 2004-2006 Intel Corportation +Copyright (c) 2005 Oren J. Maurice +Copyright (c) 2005-2008 The Scalax Project +Copyright (c) 2006 Ivan Sagalaev +Copyright (c) 2018-2022 Lightbend Inc. +Copyright (c) 2019 current.year Eclipse Foundation +Copyright (c) 2019-2020, 2022 Eclipse Foundation +Copyright (c) 2021-2022 Contributors +Copyright (c) YYYY Oracle and/or its affiliates +Copyright 2000-2011 (classType) INRIA, France Telecom +Copyright 2003-2010 Christian d'Heureuse, Inventec Informatik AG, Zurich, Switzerland +Copyright 2008 Google Inc. +Copyright 2011 The Dojo Foundation + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +Redistributions of source code must retain the above copyright notice, this list +of conditions and the following disclaimer. + +Redistributions in binary form must reproduce the above copyright notice, this +list of conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. + +Neither the name of the ORGANIZATION nor the names of its contributors may be +used to endorse or promote products derived from this software without specific +prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF +THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +---- + +Copyright (c) 2005 Brian Goetz + +Attribution 2.5 + +CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM ITS USE. +License + +THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. + +BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS. + +1. Definitions + +"Collective Work" means a work, such as a periodical issue, anthology or encyclopedia, in which the Work in its entirety in unmodified form, along with a number of other contributions, constituting separate and independent works in themselves, are assembled into a collective whole. A work that constitutes a Collective Work will not be considered a Derivative Work (as defined below) for the purposes of this License. +"Derivative Work" means a work based upon the Work or upon the Work and other pre-existing works, such as a translation, musical arrangement, dramatization, fictionalization, motion picture version, sound recording, art reproduction, abridgment, condensation, or any other form in which the Work may be recast, transformed, or adapted, except that a work that constitutes a Collective Work will not be considered a Derivative Work for the purpose of this License. For the avoidance of doubt, where the Work is a musical composition or sound recording, the synchronization of the Work in timed-relation with a moving image ("synching") will be considered a Derivative Work for the purpose of this License. +"Licensor" means the individual or entity that offers the Work under the terms of this License. +"Original Author" means the individual or entity who created the Work. +"Work" means the copyrightable work of authorship offered under the terms of this License. +"You" means an individual or entity exercising rights under this License who has not previously violated the terms of this License with respect to the Work, or who has received express permission from the Licensor to exercise rights under this License despite a previous violation. +2. Fair Use Rights. Nothing in this license is intended to reduce, limit, or restrict any rights arising from fair use, first sale or other limitations on the exclusive rights of the copyright owner under copyright law or other applicable laws. + +3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below: + +to reproduce the Work, to incorporate the Work into one or more Collective Works, and to reproduce the Work as incorporated in the Collective Works; +to create and reproduce Derivative Works; +to distribute copies or phonorecords of, display publicly, perform publicly, and perform publicly by means of a digital audio transmission the Work including as incorporated in Collective Works; +to distribute copies or phonorecords of, display publicly, perform publicly, and perform publicly by means of a digital audio transmission Derivative Works. +For the avoidance of doubt, where the work is a musical composition: + +Performance Royalties Under Blanket Licenses. Licensor waives the exclusive right to collect, whether individually or via a performance rights society (e.g. ASCAP, BMI, SESAC), royalties for the public performance or public digital performance (e.g. webcast) of the Work. +Mechanical Rights and Statutory Royalties. Licensor waives the exclusive right to collect, whether individually or via a music rights agency or designated agent (e.g. Harry Fox Agency), royalties for any phonorecord You create from the Work ("cover version") and distribute, subject to the compulsory license created by 17 USC Section 115 of the US Copyright Act (or the equivalent in other jurisdictions). +Webcasting Rights and Statutory Royalties. For the avoidance of doubt, where the Work is a sound recording, Licensor waives the exclusive right to collect, whether individually or via a performance-rights society (e.g. SoundExchange), royalties for the public digital performance (e.g. webcast) of the Work, subject to the compulsory license created by 17 USC Section 114 of the US Copyright Act (or the equivalent in other jurisdictions). +The above rights may be exercised in all media and formats whether now known or hereafter devised. The above rights include the right to make such modifications as are technically necessary to exercise the rights in other media and formats. All rights not expressly granted by Licensor are hereby reserved. + +4. Restrictions.The license granted in Section 3 above is expressly made subject to and limited by the following restrictions: + +You may distribute, publicly display, publicly perform, or publicly digitally perform the Work only under the terms of this License, and You must include a copy of, or the Uniform Resource Identifier for, this License with every copy or phonorecord of the Work You distribute, publicly display, publicly perform, or publicly digitally perform. You may not offer or impose any terms on the Work that alter or restrict the terms of this License or the recipients' exercise of the rights granted hereunder. You may not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties. You may not distribute, publicly display, publicly perform, or publicly digitally perform the Work with any technological measures that control access or use of the Work in a manner inconsistent with the terms of this License Agreement. The above applies to the Work as incorporated in a Collective Work, but this does not require the Collective Work apart from the Work itself to be made subject to the terms of this License. If You create a Collective Work, upon notice from any Licensor You must, to the extent practicable, remove from the Collective Work any credit as required by clause 4(b), as requested. If You create a Derivative Work, upon notice from any Licensor You must, to the extent practicable, remove from the Derivative Work any credit as required by clause 4(b), as requested. +If you distribute, publicly display, publicly perform, or publicly digitally perform the Work or any Derivative Works or Collective Works, You must keep intact all copyright notices for the Work and provide, reasonable to the medium or means You are utilizing: (i) the name of the Original Author (or pseudonym, if applicable) if supplied, and/or (ii) if the Original Author and/or Licensor designate another party or parties (e.g. a sponsor institute, publishing entity, journal) for attribution in Licensor's copyright notice, terms of service or by other reasonable means, the name of such party or parties; the title of the Work if supplied; to the extent reasonably practicable, the Uniform Resource Identifier, if any, that Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright notice or licensing information for the Work; and in the case of a Derivative Work, a credit identifying the use of the Work in the Derivative Work (e.g., "French translation of the Work by Original Author," or "Screenplay based on original Work by Original Author"). Such credit may be implemented in any reasonable manner; provided, however, that in the case of a Derivative Work or Collective Work, at a minimum such credit will appear where any other comparable authorship credit appears and in a manner at least as prominent as such other comparable authorship credit. +5. Representations, Warranties and Disclaimer + +UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU. + +6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +7. Termination + +This License and the rights granted hereunder will terminate automatically upon any breach by You of the terms of this License. Individuals or entities who have received Derivative Works or Collective Works from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License. +Subject to the above terms and conditions, the license granted here is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, Licensor reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated above. +8. Miscellaneous + +Each time You distribute or publicly digitally perform the Work or a Collective Work, the Licensor offers to the recipient a license to the Work on the same terms and conditions as the license granted to You under this License. +Each time You distribute or publicly digitally perform a Derivative Work, Licensor offers to the recipient a license to the original Work on the same terms and conditions as the license granted to You under this License. +If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action by the parties to this agreement, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. +No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent. +This License constitutes the entire agreement between the parties with respect to the Work licensed here. There are no understandings, agreements or representations with respect to the Work not specified here. Licensor shall not be bound by any additional provisions that may appear in any communication from You. This License may not be modified without the mutual written agreement of the Licensor and You. +Creative Commons is not a party to this License, and makes no warranty whatsoever in connection with the Work. Creative Commons will not be liable to You or any party on any legal theory for any damages whatsoever, including without limitation any general, special, incidental or consequential damages arising in connection to this license. Notwithstanding the foregoing two (2) sentences, if Creative Commons has expressly identified itself as the Licensor hereunder, it shall have all rights and obligations of Licensor. + +Except for the limited purpose of indicating to the public that the Work is licensed under the CCPL, neither party will use the trademark "Creative Commons" or any related trademark or logo of Creative Commons without the prior written consent of Creative Commons. Any permitted use will be in compliance with Creative Commons' then-current trademark usage guidelines, as may be published on its website or otherwise made available upon request from time to time. + +Creative Commons may be contacted at http://creativecommons.org/. + +---- + +Creative Commons Legal Code + +Attribution-ShareAlike 3.0 Unported + + CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE + LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN + ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS + INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES + REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR + DAMAGES RESULTING FROM ITS USE. + +License + +THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE +COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY +COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS +AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. + +BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE +TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY +BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS +CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND +CONDITIONS. + +1. Definitions + + a. "Adaptation" means a work based upon the Work, or upon the Work and + other pre-existing works, such as a translation, adaptation, + derivative work, arrangement of music or other alterations of a + literary or artistic work, or phonogram or performance and includes + cinematographic adaptations or any other form in which the Work may be + recast, transformed, or adapted including in any form recognizably + derived from the original, except that a work that constitutes a + Collection will not be considered an Adaptation for the purpose of + this License. For the avoidance of doubt, where the Work is a musical + work, performance or phonogram, the synchronization of the Work in + timed-relation with a moving image ("synching") will be considered an + Adaptation for the purpose of this License. + b. "Collection" means a collection of literary or artistic works, such as + encyclopedias and anthologies, or performances, phonograms or + broadcasts, or other works or subject matter other than works listed + in Section 1(f) below, which, by reason of the selection and + arrangement of their contents, constitute intellectual creations, in + which the Work is included in its entirety in unmodified form along + with one or more other contributions, each constituting separate and + independent works in themselves, which together are assembled into a + collective whole. A work that constitutes a Collection will not be + considered an Adaptation (as defined below) for the purposes of this + License. + c. "Creative Commons Compatible License" means a license that is listed + at https://creativecommons.org/compatiblelicenses that has been + approved by Creative Commons as being essentially equivalent to this + License, including, at a minimum, because that license: (i) contains + terms that have the same purpose, meaning and effect as the License + Elements of this License; and, (ii) explicitly permits the relicensing + of adaptations of works made available under that license under this + License or a Creative Commons jurisdiction license with the same + License Elements as this License. + d. "Distribute" means to make available to the public the original and + copies of the Work or Adaptation, as appropriate, through sale or + other transfer of ownership. + e. "License Elements" means the following high-level license attributes + as selected by Licensor and indicated in the title of this License: + Attribution, ShareAlike. + f. "Licensor" means the individual, individuals, entity or entities that + offer(s) the Work under the terms of this License. + g. "Original Author" means, in the case of a literary or artistic work, + the individual, individuals, entity or entities who created the Work + or if no individual or entity can be identified, the publisher; and in + addition (i) in the case of a performance the actors, singers, + musicians, dancers, and other persons who act, sing, deliver, declaim, + play in, interpret or otherwise perform literary or artistic works or + expressions of folklore; (ii) in the case of a phonogram the producer + being the person or legal entity who first fixes the sounds of a + performance or other sounds; and, (iii) in the case of broadcasts, the + organization that transmits the broadcast. + h. "Work" means the literary and/or artistic work offered under the terms + of this License including without limitation any production in the + literary, scientific and artistic domain, whatever may be the mode or + form of its expression including digital form, such as a book, + pamphlet and other writing; a lecture, address, sermon or other work + of the same nature; a dramatic or dramatico-musical work; a + choreographic work or entertainment in dumb show; a musical + composition with or without words; a cinematographic work to which are + assimilated works expressed by a process analogous to cinematography; + a work of drawing, painting, architecture, sculpture, engraving or + lithography; a photographic work to which are assimilated works + expressed by a process analogous to photography; a work of applied + art; an illustration, map, plan, sketch or three-dimensional work + relative to geography, topography, architecture or science; a + performance; a broadcast; a phonogram; a compilation of data to the + extent it is protected as a copyrightable work; or a work performed by + a variety or circus performer to the extent it is not otherwise + considered a literary or artistic work. + i. "You" means an individual or entity exercising rights under this + License who has not previously violated the terms of this License with + respect to the Work, or who has received express permission from the + Licensor to exercise rights under this License despite a previous + violation. + j. "Publicly Perform" means to perform public recitations of the Work and + to communicate to the public those public recitations, by any means or + process, including by wire or wireless means or public digital + performances; to make available to the public Works in such a way that + members of the public may access these Works from a place and at a + place individually chosen by them; to perform the Work to the public + by any means or process and the communication to the public of the + performances of the Work, including by public digital performance; to + broadcast and rebroadcast the Work by any means including signs, + sounds or images. + k. "Reproduce" means to make copies of the Work by any means including + without limitation by sound or visual recordings and the right of + fixation and reproducing fixations of the Work, including storage of a + protected performance or phonogram in digital form or other electronic + medium. + +2. Fair Dealing Rights. Nothing in this License is intended to reduce, +limit, or restrict any uses free from copyright or rights arising from +limitations or exceptions that are provided for in connection with the +copyright protection under copyright law or other applicable laws. + +3. License Grant. Subject to the terms and conditions of this License, +Licensor hereby grants You a worldwide, royalty-free, non-exclusive, +perpetual (for the duration of the applicable copyright) license to +exercise the rights in the Work as stated below: + + a. to Reproduce the Work, to incorporate the Work into one or more + Collections, and to Reproduce the Work as incorporated in the + Collections; + b. to create and Reproduce Adaptations provided that any such Adaptation, + including any translation in any medium, takes reasonable steps to + clearly label, demarcate or otherwise identify that changes were made + to the original Work. For example, a translation could be marked "The + original work was translated from English to Spanish," or a + modification could indicate "The original work has been modified."; + c. to Distribute and Publicly Perform the Work including as incorporated + in Collections; and, + d. to Distribute and Publicly Perform Adaptations. + e. For the avoidance of doubt: + + i. Non-waivable Compulsory License Schemes. In those jurisdictions in + which the right to collect royalties through any statutory or + compulsory licensing scheme cannot be waived, the Licensor + reserves the exclusive right to collect such royalties for any + exercise by You of the rights granted under this License; + ii. Waivable Compulsory License Schemes. In those jurisdictions in + which the right to collect royalties through any statutory or + compulsory licensing scheme can be waived, the Licensor waives the + exclusive right to collect such royalties for any exercise by You + of the rights granted under this License; and, + iii. Voluntary License Schemes. The Licensor waives the right to + collect royalties, whether individually or, in the event that the + Licensor is a member of a collecting society that administers + voluntary licensing schemes, via that society, from any exercise + by You of the rights granted under this License. + +The above rights may be exercised in all media and formats whether now +known or hereafter devised. The above rights include the right to make +such modifications as are technically necessary to exercise the rights in +other media and formats. Subject to Section 8(f), all rights not expressly +granted by Licensor are hereby reserved. + +4. Restrictions. The license granted in Section 3 above is expressly made +subject to and limited by the following restrictions: + + a. You may Distribute or Publicly Perform the Work only under the terms + of this License. You must include a copy of, or the Uniform Resource + Identifier (URI) for, this License with every copy of the Work You + Distribute or Publicly Perform. You may not offer or impose any terms + on the Work that restrict the terms of this License or the ability of + the recipient of the Work to exercise the rights granted to that + recipient under the terms of the License. You may not sublicense the + Work. You must keep intact all notices that refer to this License and + to the disclaimer of warranties with every copy of the Work You + Distribute or Publicly Perform. When You Distribute or Publicly + Perform the Work, You may not impose any effective technological + measures on the Work that restrict the ability of a recipient of the + Work from You to exercise the rights granted to that recipient under + the terms of the License. This Section 4(a) applies to the Work as + incorporated in a Collection, but this does not require the Collection + apart from the Work itself to be made subject to the terms of this + License. If You create a Collection, upon notice from any Licensor You + must, to the extent practicable, remove from the Collection any credit + as required by Section 4(c), as requested. If You create an + Adaptation, upon notice from any Licensor You must, to the extent + practicable, remove from the Adaptation any credit as required by + Section 4(c), as requested. + b. You may Distribute or Publicly Perform an Adaptation only under the + terms of: (i) this License; (ii) a later version of this License with + the same License Elements as this License; (iii) a Creative Commons + jurisdiction license (either this or a later license version) that + contains the same License Elements as this License (e.g., + Attribution-ShareAlike 3.0 US)); (iv) a Creative Commons Compatible + License. If you license the Adaptation under one of the licenses + mentioned in (iv), you must comply with the terms of that license. If + you license the Adaptation under the terms of any of the licenses + mentioned in (i), (ii) or (iii) (the "Applicable License"), you must + comply with the terms of the Applicable License generally and the + following provisions: (I) You must include a copy of, or the URI for, + the Applicable License with every copy of each Adaptation You + Distribute or Publicly Perform; (II) You may not offer or impose any + terms on the Adaptation that restrict the terms of the Applicable + License or the ability of the recipient of the Adaptation to exercise + the rights granted to that recipient under the terms of the Applicable + License; (III) You must keep intact all notices that refer to the + Applicable License and to the disclaimer of warranties with every copy + of the Work as included in the Adaptation You Distribute or Publicly + Perform; (IV) when You Distribute or Publicly Perform the Adaptation, + You may not impose any effective technological measures on the + Adaptation that restrict the ability of a recipient of the Adaptation + from You to exercise the rights granted to that recipient under the + terms of the Applicable License. This Section 4(b) applies to the + Adaptation as incorporated in a Collection, but this does not require + the Collection apart from the Adaptation itself to be made subject to + the terms of the Applicable License. + c. If You Distribute, or Publicly Perform the Work or any Adaptations or + Collections, You must, unless a request has been made pursuant to + Section 4(a), keep intact all copyright notices for the Work and + provide, reasonable to the medium or means You are utilizing: (i) the + name of the Original Author (or pseudonym, if applicable) if supplied, + and/or if the Original Author and/or Licensor designate another party + or parties (e.g., a sponsor institute, publishing entity, journal) for + attribution ("Attribution Parties") in Licensor's copyright notice, + terms of service or by other reasonable means, the name of such party + or parties; (ii) the title of the Work if supplied; (iii) to the + extent reasonably practicable, the URI, if any, that Licensor + specifies to be associated with the Work, unless such URI does not + refer to the copyright notice or licensing information for the Work; + and (iv) , consistent with Ssection 3(b), in the case of an + Adaptation, a credit identifying the use of the Work in the Adaptation + (e.g., "French translation of the Work by Original Author," or + "Screenplay based on original Work by Original Author"). The credit + required by this Section 4(c) may be implemented in any reasonable + manner; provided, however, that in the case of a Adaptation or + Collection, at a minimum such credit will appear, if a credit for all + contributing authors of the Adaptation or Collection appears, then as + part of these credits and in a manner at least as prominent as the + credits for the other contributing authors. For the avoidance of + doubt, You may only use the credit required by this Section for the + purpose of attribution in the manner set out above and, by exercising + Your rights under this License, You may not implicitly or explicitly + assert or imply any connection with, sponsorship or endorsement by the + Original Author, Licensor and/or Attribution Parties, as appropriate, + of You or Your use of the Work, without the separate, express prior + written permission of the Original Author, Licensor and/or Attribution + Parties. + d. Except as otherwise agreed in writing by the Licensor or as may be + otherwise permitted by applicable law, if You Reproduce, Distribute or + Publicly Perform the Work either by itself or as part of any + Adaptations or Collections, You must not distort, mutilate, modify or + take other derogatory action in relation to the Work which would be + prejudicial to the Original Author's honor or reputation. Licensor + agrees that in those jurisdictions (e.g. Japan), in which any exercise + of the right granted in Section 3(b) of this License (the right to + make Adaptations) would be deemed to be a distortion, mutilation, + modification or other derogatory action prejudicial to the Original + Author's honor and reputation, the Licensor will waive or not assert, + as appropriate, this Section, to the fullest extent permitted by the + applicable national law, to enable You to reasonably exercise Your + right under Section 3(b) of this License (right to make Adaptations) + but not otherwise. + +5. Representations, Warranties and Disclaimer + +UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR +OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY +KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, +INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, +FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF +LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, +WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION +OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU. + +6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE +LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR +ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES +ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS +BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +7. Termination + + a. This License and the rights granted hereunder will terminate + automatically upon any breach by You of the terms of this License. + Individuals or entities who have received Adaptations or Collections + from You under this License, however, will not have their licenses + terminated provided such individuals or entities remain in full + compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will + survive any termination of this License. + b. Subject to the above terms and conditions, the license granted here is + perpetual (for the duration of the applicable copyright in the Work). + Notwithstanding the above, Licensor reserves the right to release the + Work under different license terms or to stop distributing the Work at + any time; provided, however that any such election will not serve to + withdraw this License (or any other license that has been, or is + required to be, granted under the terms of this License), and this + License will continue in full force and effect unless terminated as + stated above. + +8. Miscellaneous + + a. Each time You Distribute or Publicly Perform the Work or a Collection, + the Licensor offers to the recipient a license to the Work on the same + terms and conditions as the license granted to You under this License. + b. Each time You Distribute or Publicly Perform an Adaptation, Licensor + offers to the recipient a license to the original Work on the same + terms and conditions as the license granted to You under this License. + c. If any provision of this License is invalid or unenforceable under + applicable law, it shall not affect the validity or enforceability of + the remainder of the terms of this License, and without further action + by the parties to this agreement, such provision shall be reformed to + the minimum extent necessary to make such provision valid and + enforceable. + d. No term or provision of this License shall be deemed waived and no + breach consented to unless such waiver or consent shall be in writing + and signed by the party to be charged with such waiver or consent. + e. This License constitutes the entire agreement between the parties with + respect to the Work licensed here. There are no understandings, + agreements or representations with respect to the Work not specified + here. Licensor shall not be bound by any additional provisions that + may appear in any communication from You. This License may not be + modified without the mutual written agreement of the Licensor and You. + f. The rights granted under, and the subject matter referenced, in this + License were drafted utilizing the terminology of the Berne Convention + for the Protection of Literary and Artistic Works (as amended on + September 28, 1979), the Rome Convention of 1961, the WIPO Copyright + Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 + and the Universal Copyright Convention (as revised on July 24, 1971). + These rights and subject matter take effect in the relevant + jurisdiction in which the License terms are sought to be enforced + according to the corresponding provisions of the implementation of + those treaty provisions in the applicable national law. If the + standard suite of rights granted under applicable copyright law + includes additional rights not granted under this License, such + additional rights are deemed to be included in the License; this + License is not intended to restrict the license of any rights under + applicable law. + + +Creative Commons Notice + + Creative Commons is not a party to this License, and makes no warranty + whatsoever in connection with the Work. Creative Commons will not be + liable to You or any party on any legal theory for any damages + whatsoever, including without limitation any general, special, + incidental or consequential damages arising in connection to this + license. Notwithstanding the foregoing two (2) sentences, if Creative + Commons has expressly identified itself as the Licensor hereunder, it + shall have all rights and obligations of Licensor. + + Except for the limited purpose of indicating to the public that the + Work is licensed under the CCPL, Creative Commons does not authorize + the use by either party of the trademark "Creative Commons" or any + related trademark or logo of Creative Commons without the prior + written consent of Creative Commons. Any permitted use will be in + compliance with Creative Commons' then-current trademark usage + guidelines, as may be published on its website or otherwise made + available upon request from time to time. For the avoidance of doubt, + this trademark restriction does not form part of the License. + + Creative Commons may be contacted at https://creativecommons.org/. + +---- + +Copyright 1997-2009 Sun Microsystems, Inc. + +COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0 + +1. Definitions. + +1.1. Contributor means each individual or entity that creates or contributes to the creation of Modifications. + +1.2. Contributor Version means the combination of the Original Software, prior Modifications used by a Contributor (if any), and the Modifications made by that particular Contributor. + +1.3. Covered Software means (a) the Original Software, or (b) Modifications, or (c) the combination of files containing Original Software with files containing Modifications, in each case including portions thereof. + +1.4. Executable means the Covered Software in any form other than Source Code. + +1.5. Initial Developer means the individual or entity that first makes Original Software available under this License. + +1.6. Larger Work means a work which combines Covered Software or portions thereof with code not governed by the terms of this License. + +1.7. License means this document. + +1.8. Licensable means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently acquired, any and all of the rights conveyed herein. + +1.9. Modifications means the Source Code and Executable form of any of the following: A. Any file that results from an addition to, deletion from or modification of the contents of a file containing Original Software or previous Modifications; B. Any new file that contains any part of the Original Software or previous Modification; or C. Any new file that is contributed or otherwise made available under the terms of this License. + +1.10. Original Software means the Source Code and Executable form of computer software code that is originally released under this License. + +1.11. Patent Claims means any patent claim(s), now owned or hereafter acquired, including without limitation, method, process, and apparatus claims, in any patent Licensable by grantor. + +1.12. Source Code means (a) the common form of computer software code in which modifications are made and (b) associated documentation included in or with such code. + +1.13. You (or Your) means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, You includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, control means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity. + +2. License Grants. + + 2.1. The Initial Developer Grant. Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, the Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license: + +(a) under intellectual property rights (other than patent or trademark) Licensable by Initial Developer, to use, reproduce, modify, display, perform, sublicense and distribute the Original Software (or portions thereof), with or without Modifications, and/or as part of a Larger Work; and + +(b) under Patent Claims infringed by the making, using or selling of Original Software, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Software (or portions thereof); + + (c) The licenses granted in Sections 2.1(a) and (b) are effective on the date Initial Developer first distributes or otherwise makes the Original Software available to a third party under the terms of this License; + + (d) Notwithstanding Section 2.1(b) above, no patent license is granted: (1) for code that You delete from the Original Software, or (2) for infringements caused by: (i) the modification of the Original Software, or (ii) the combination of the Original Software with other software or devices. + +2.2. Contributor Grant. Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license: + +(a) under intellectual property rights (other than patent or trademark) Licensable by Contributor to use, reproduce, modify, display, perform, sublicense and distribute the Modifications created by such Contributor (or portions thereof), either on an unmodified basis, with other Modifications, as Covered Software and/or as part of a Larger Work; and + +(b) under Patent Claims infringed by the making, using, or selling of Modifications made by that Contributor either alone and/or in combination with its Contributor Version (or portions of such combination), to make, use, sell, offer for sale, have made, and/or otherwise dispose of: (1) Modifications made by that Contributor (or portions thereof); and (2) the combination of Modifications made by that Contributor with its Contributor Version (or portions of such combination). + +(c) The licenses granted in Sections 2.2(a) and 2.2(b) are effective on the date Contributor first distributes or otherwise makes the Modifications available to a third party. + +(d) Notwithstanding Section 2.2(b) above, no patent license is granted: (1) for any code that Contributor has deleted from the Contributor Version; (2) for infringements caused by: (i) third party modifications of Contributor Version, or (ii) the combination of Modifications made by that Contributor with other software (except as part of the Contributor Version) or other devices; or (3) under Patent Claims infringed by Covered Software in the absence of Modifications made by that Contributor. + +3. Distribution Obligations. + +3.1. Availability of Source Code. Any Covered Software that You distribute or otherwise make available in Executable form must also be made available in Source Code form and that Source Code form must be distributed only under the terms of this License. You must include a copy of this License with every copy of the Source Code form of the Covered Software You distribute or otherwise make available. You must inform recipients of any such Covered Software in Executable form as to how they can obtain such Covered Software in Source Code form in a reasonable manner on or through a medium customarily used for software exchange. + +3.2. Modifications. The Modifications that You create or to which You contribute are governed by the terms of this License. You represent that You believe Your Modifications are Your original creation(s) and/or You have sufficient rights to grant the rights conveyed by this License. + +3.3. Required Notices. You must include a notice in each of Your Modifications that identifies You as the Contributor of the Modification. You may not remove or alter any copyright, patent or trademark notices contained within the Covered Software, or any notices of licensing or any descriptive text giving attribution to any Contributor or the Initial Developer. + +3.4. Application of Additional Terms. You may not offer or impose any terms on any Covered Software in Source Code form that alters or restricts the applicable version of this License or the recipients rights hereunder. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Software. However, you may do so only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You must make it absolutely clear that any such warranty, support, indemnity or liability obligation is offered by You alone, and You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of warranty, support, indemnity or liability terms You offer. + +3.5. Distribution of Executable Versions. You may distribute the Executable form of the Covered Software under the terms of this License or under the terms of a license of Your choice, which may contain terms different from this License, provided that You are in compliance with the terms of this License and that the license for the Executable form does not attempt to limit or alter the recipients rights in the Source Code form from the rights set forth in this License. If You distribute the Covered Software in Executable form under a different license, You must make it absolutely clear that any terms which differ from this License are offered by You alone, not by the Initial Developer or Contributor. You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of any such terms You offer. + +3.6. Larger Works. You may create a Larger Work by combining Covered Software with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Covered Software. + +4. Versions of the License. + +4.1. New Versions. Sun Microsystems, Inc. is the initial license steward and may publish revised and/or new versions of this License from time to time. Each version will be given a distinguishing version number. Except as provided in Section 4.3, no one other than the license steward has the right to modify this License. + +4.2. Effect of New Versions. You may always continue to use, distribute or otherwise make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. If the Initial Developer includes a notice in the Original Software prohibiting it from being distributed or otherwise made available under any subsequent version of the License, You must distribute and make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. Otherwise, You may also choose to use, distribute or otherwise make the Covered Software available under the terms of any subsequent version of the License published by the license steward. + +4.3. Modified Versions. When You are an Initial Developer and You want to create a new license for Your Original Software, You may create and use a modified version of this License if You: (a) rename the license and remove any references to the name of the license steward (except to note that the license differs from this License); and (b) otherwise make it clear that the license contains terms which differ from this License. + +5. DISCLAIMER OF WARRANTY. COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN AS IS BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. + +6. TERMINATION. + +6.1. This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within 30 days of becoming aware of the breach. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive. + +6.2. If You assert a patent infringement claim (excluding declaratory judgment actions) against Initial Developer or a Contributor (the Initial Developer or Contributor against whom You assert such claim is referred to as Participant) alleging that the Participant Software (meaning the Contributor Version where the Participant is a Contributor or the Original Software where the Participant is the Initial Developer) directly or indirectly infringes any patent, then any and all rights granted directly or indirectly to You by such Participant, the Initial Developer (if the Initial Developer is not the Participant) and all Contributors under Sections 2.1 and/or 2.2 of this License shall, upon 60 days notice from Participant terminate prospectively and automatically at the expiration of such 60 day notice period, unless if within such 60 day period You withdraw Your claim with respect to the Participant Software against such Participant either unilaterally or pursuant to a written agreement with Participant. + +6.3. In the event of termination under Sections 6.1 or 6.2 above, all end user licenses that have been validly granted by You or any distributor hereunder prior to termination (excluding licenses granted to You by any distributor) shall survive termination. + +7. LIMITATION OF LIABILITY. UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTYS NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. + +8. U.S. GOVERNMENT END USERS. The Covered Software is a commercial item, as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of commercial computer software (as that term is defined at 48 C.F.R. 252.227-7014(a)(1)) and commercial computer software documentation as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Software with only those rights set forth herein. This U.S. Government Rights clause is in lieu of, and supersedes, any other FAR, DFAR, or other clause or provision that addresses Government rights in computer software under this License. + +9. MISCELLANEOUS. This License represents the complete agreement concerning subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed by the law of the jurisdiction specified in a notice contained within the Original Software (except to the extent applicable law, if any, provides otherwise), excluding such jurisdictions conflict-of-law provisions. Any litigation relating to this License shall be subject to the jurisdiction of the courts located in the jurisdiction and venue specified in a notice contained within the Original Software, with the losing party responsible for costs, including, without limitation, court costs and reasonable attorneys fees and expenses. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not apply to this License. You agree that You alone are responsible for compliance with the United States export administration regulations (and the export control laws and regulation of any other countries) when You use, distribute or otherwise make available any Covered Software. + +10. RESPONSIBILITY FOR CLAIMS. As between Initial Developer and the Contributors, each party is responsible for claims and damages arising, directly or indirectly, out of its utilization of rights under this License and You agree to work with Initial Developer and Contributors to distribute such responsibility on an equitable basis. Nothing herein is intended or shall be deemed to constitute any admission of liability. + +NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) The code released under the CDDL shall be governed by the laws of the State of California (excluding conflict-of-law provisions). Any litigation relating to this License shall be subject to the jurisdiction of the Federal Courts of the Northern District of California and the state courts of the State of California, with venue lying in Santa Clara County, California. + +---- + +Copyright (c) 1989, 1991 Free Software Foundation, Inc. +Copyright (c) 1997-2018 Oracle and/or its affiliates +Copyright (c) 1998-1999 Sun Microsystems, Inc. +Copyright (c) 1999-2017 http://www.oracle.com' Oracle and/or its affiliates +Copyright (c) 2004-2017 Oracle +Copyright (c) YYYY Oracle and/or its affiliates +Copyright 1998 Sun Microsystems, Inc. 901 San Antonio Road, Palo Alto, California, 94303, U.S.A. +Copyright 2002-2003, 2315 BEA Systems, Inc. North First Street, San Jose CA, 95131 +Copyright 2003-2005 Sun Microsystems, Inc. +copyrighted by the Free Software Foundation + +COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL)Version 1.1 + +1. Definitions. + +1.1. "Contributor" means each individual or entity that creates or contributes to the creation of Modifications. +1.2. "Contributor Version" means the combination of the Original Software, prior Modifications used by a Contributor (if any), and the Modifications made by that particular Contributor. +1.3. "Covered Software" means (a) the Original Software, or (b) Modifications, or (c) the combination of files containing Original Software with files containing Modifications, in each case including portions thereof. +1.4. "Executable" means the Covered Software in any form other than Source Code. +1.5. "Initial Developer" means the individual or entity that first makes Original Software available under this License. +1.6. "Larger Work" means a work which combines Covered Software or portions thereof with code not governed by the terms of this License. +1.7. "License" means this document. +1.8. "Licensable" means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently acquired, any and all of the rights conveyed herein. +1.9. "Modifications" means the Source Code and Executable form of any of the following: +A. Any file that results from an addition to, deletion from or modification of the contents of a file containing Original Software or previous Modifications; +B. Any new file that contains any part of the Original Software or previous Modification; or +C. Any new file that is contributed or otherwise made available under the terms of this License. +1.10. "Original Software" means the Source Code and Executable form of computer software code that is originally released under this License. +1.11. "Patent Claims" means any patent claim(s), now owned or hereafter acquired, including without limitation, method, process, and apparatus claims, in any patent Licensable by grantor. +1.12. "Source Code" means (a) the common form of computer software code in which modifications are made and (b) associated documentation included in or with such code. +1.13. "You" (or "Your") means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, "You" includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, "control" means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity. +2. License Grants. + +2.1. The Initial Developer Grant. +Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, the Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license: +(a) under intellectual property rights (other than patent or trademark) Licensable by Initial Developer, to use, reproduce, modify, display, perform, sublicense and distribute the Original Software (or portions thereof), with or without Modifications, and/or as part of a Larger Work; and +(b) under Patent Claims infringed by the making, using or selling of Original Software, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Software (or portions thereof). +(c) The licenses granted in Sections 2.1(a) and (b) are effective on the date Initial Developer first distributes or otherwise makes the Original Software available to a third party under the terms of this License. +(d) Notwithstanding Section 2.1(b) above, no patent license is granted: (1) for code that You delete from the Original Software, or (2) for infringements caused by: (i) the modification of the Original Software, or (ii) the combination of the Original Software with other software or devices. +2.2. Contributor Grant. +Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license: +(a) under intellectual property rights (other than patent or trademark) Licensable by Contributor to use, reproduce, modify, display, perform, sublicense and distribute the Modifications created by such Contributor (or portions thereof), either on an unmodified basis, with other Modifications, as Covered Software and/or as part of a Larger Work; and +(b) under Patent Claims infringed by the making, using, or selling of Modifications made by that Contributor either alone and/or in combination with its Contributor Version (or portions of such combination), to make, use, sell, offer for sale, have made, and/or otherwise dispose of: (1) Modifications made by that Contributor (or portions thereof); and (2) the combination of Modifications made by that Contributor with its Contributor Version (or portions of such combination). +(c) The licenses granted in Sections 2.2(a) and 2.2(b) are effective on the date Contributor first distributes or otherwise makes the Modifications available to a third party. +(d) Notwithstanding Section 2.2(b) above, no patent license is granted: (1) for any code that Contributor has deleted from the Contributor Version; (2) for infringements caused by: (i) third party modifications of Contributor Version, or (ii) the combination of Modifications made by that Contributor with other software (except as part of the Contributor Version) or other devices; or (3) under Patent Claims infringed by Covered Software in the absence of Modifications made by that Contributor. +3. Distribution Obligations. + +3.1. Availability of Source Code. +Any Covered Software that You distribute or otherwise make available in Executable form must also be made available in Source Code form and that Source Code form must be distributed only under the terms of this License. You must include a copy of this License with every copy of the Source Code form of the Covered Software You distribute or otherwise make available. You must inform recipients of any such Covered Software in Executable form as to how they can obtain such Covered Software in Source Code form in a reasonable manner on or through a medium customarily used for software exchange. +3.2. Modifications. +The Modifications that You create or to which You contribute are governed by the terms of this License. You represent that You believe Your Modifications are Your original creation(s) and/or You have sufficient rights to grant the rights conveyed by this License. +3.3. Required Notices. +You must include a notice in each of Your Modifications that identifies You as the Contributor of the Modification. You may not remove or alter any copyright, patent or trademark notices contained within the Covered Software, or any notices of licensing or any descriptive text giving attribution to any Contributor or the Initial Developer. +3.4. Application of Additional Terms. +You may not offer or impose any terms on any Covered Software in Source Code form that alters or restricts the applicable version of this License or the recipients' rights hereunder. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Software. However, you may do so only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You must make it absolutely clear that any such warranty, support, indemnity or liability obligation is offered by You alone, and You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of warranty, support, indemnity or liability terms You offer. +3.5. Distribution of Executable Versions. +You may distribute the Executable form of the Covered Software under the terms of this License or under the terms of a license of Your choice, which may contain terms different from this License, provided that You are in compliance with the terms of this License and that the license for the Executable form does not attempt to limit or alter the recipient's rights in the Source Code form from the rights set forth in this License. If You distribute the Covered Software in Executable form under a different license, You must make it absolutely clear that any terms which differ from this License are offered by You alone, not by the Initial Developer or Contributor. You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of any such terms You offer. +3.6. Larger Works. +You may create a Larger Work by combining Covered Software with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Covered Software. +4. Versions of the License. + +4.1. New Versions. +Oracle is the initial license steward and may publish revised and/or new versions of this License from time to time. Each version will be given a distinguishing version number. Except as provided in Section 4.3, no one other than the license steward has the right to modify this License. +4.2. Effect of New Versions. +You may always continue to use, distribute or otherwise make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. If the Initial Developer includes a notice in the Original Software prohibiting it from being distributed or otherwise made available under any subsequent version of the License, You must distribute and make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. Otherwise, You may also choose to use, distribute or otherwise make the Covered Software available under the terms of any subsequent version of the License published by the license steward. +4.3. Modified Versions. +When You are an Initial Developer and You want to create a new license for Your Original Software, You may create and use a modified version of this License if You: (a) rename the license and remove any references to the name of the license steward (except to note that the license differs from this License); and (b) otherwise make it clear that the license contains terms which differ from this License. +5. DISCLAIMER OF WARRANTY. + +COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. + +6. TERMINATION. + +6.1. This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within 30 days of becoming aware of the breach. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive. +6.2. If You assert a patent infringement claim (excluding declaratory judgment actions) against Initial Developer or a Contributor (the Initial Developer or Contributor against whom You assert such claim is referred to as "Participant") alleging that the Participant Software (meaning the Contributor Version where the Participant is a Contributor or the Original Software where the Participant is the Initial Developer) directly or indirectly infringes any patent, then any and all rights granted directly or indirectly to You by such Participant, the Initial Developer (if the Initial Developer is not the Participant) and all Contributors under Sections 2.1 and/or 2.2 of this License shall, upon 60 days notice from Participant terminate prospectively and automatically at the expiration of such 60 day notice period, unless if within such 60 day period You withdraw Your claim with respect to the Participant Software against such Participant either unilaterally or pursuant to a written agreement with Participant. +6.3. If You assert a patent infringement claim against Participant alleging that the Participant Software directly or indirectly infringes any patent where such claim is resolved (such as by license or settlement) prior to the initiation of patent infringement litigation, then the reasonable value of the licenses granted by such Participant under Sections 2.1 or 2.2 shall be taken into account in determining the amount or value of any payment or license. +6.4. In the event of termination under Sections 6.1 or 6.2 above, all end user licenses that have been validly granted by You or any distributor hereunder prior to termination (excluding licenses granted to You by any distributor) shall survive termination. +7. LIMITATION OF LIABILITY. + +UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. + +8. U.S. GOVERNMENT END USERS. + +The Covered Software is a "commercial item," as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer software" (as that term is defined at 48 C.F.R. § 252.227-7014(a)(1)) and "commercial computer software documentation" as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Software with only those rights set forth herein. This U.S. Government Rights clause is in lieu of, and supersedes, any other FAR, DFAR, or other clause or provision that addresses Government rights in computer software under this License. + +9. MISCELLANEOUS. + +This License represents the complete agreement concerning subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed by the law of the jurisdiction specified in a notice contained within the Original Software (except to the extent applicable law, if any, provides otherwise), excluding such jurisdiction's conflict-of-law provisions. Any litigation relating to this License shall be subject to the jurisdiction of the courts located in the jurisdiction and venue specified in a notice contained within the Original Software, with the losing party responsible for costs, including, without limitation, court costs and reasonable attorneys' fees and expenses. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not apply to this License. You agree that You alone are responsible for compliance with the United States export administration regulations (and the export control laws and regulation of any other countries) when You use, distribute or otherwise make available any Covered Software. + +10. RESPONSIBILITY FOR CLAIMS. + +As between Initial Developer and the Contributors, each party is responsible for claims and damages arising, directly or indirectly, out of its utilization of rights under this License and You agree to work with Initial Developer and Contributors to distribute such responsibility on an equitable basis. Nothing herein is intended or shall be deemed to constitute any admission of liability. + +NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) + +The code released under the CDDL shall be governed by the laws of the State of California (excluding conflict-of-law provisions). Any litigation relating to this License shall be subject to the jurisdiction of the Federal Courts of the Northern District of California and the state courts of the State of California, with venue lying in Santa Clara County, California. + +---- + +Copyright 2003 Contributors + +Common Public License - v 1.0 + +Updated 16 Apr 2009 + +As of 25 Feb 2009, IBM has assigned the Agreement Steward role for the CPL to the Eclipse Foundation. Eclipse has designated the Eclipse Public License (EPL) as the follow-on version of the CPL. + +THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + + +1. DEFINITIONS + +"Contribution" means: + +a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and +b) in the case of each subsequent Contributor: +i) changes to the Program, and +ii) additions to the Program; +where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program. + +"Contributor" means any person or entity that distributes the Program. + + +"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program. + + +"Program" means the Contributions distributed in accordance with this Agreement. + + +"Recipient" means anyone who receives the Program under this Agreement, including all Contributors. + + +2. GRANT OF RIGHTS + +a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form. +b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder. +c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program. +d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement. +3. REQUIREMENTS + +A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that: + +a) it complies with the terms and conditions of this Agreement; and +b) its license agreement: +i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose; +ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits; +iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and +iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange. +When the Program is made available in source code form: + +a) it must be made available under this Agreement; and +b) a copy of this Agreement must be included with each copy of the Program. + +Contributors may not remove or alter any copyright notices contained within the Program. + + +Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution. + + +4. COMMERCIAL DISTRIBUTION + +Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense. + + +For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages. + + +5. NO WARRANTY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement, including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations. + + +6. DISCLAIMER OF LIABILITY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + + +7. GENERAL + +If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. + + +If Recipient institutes patent litigation against a Contributor with respect to a patent applicable to software (including a cross-claim or counterclaim in a lawsuit), then any patent licenses granted by that Contributor to such Recipient under this Agreement shall terminate as of the date such litigation is filed. In addition, if Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed. + + +All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive. + + +Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. IBM is the initial Agreement Steward. IBM may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved. + + +This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation. + +---- + +Copyright (c) 1989, 1991 Free Software Foundation, Inc. +Copyright (c) 1997-2019 Oracle and/or its affiliates +Copyright (c) 1999-2017 http://www.oracle.com' Oracle and/or its affiliates +Copyright (c) 2004-2017 Oracle +Copyright (c) 2019 Contributors +Copyright (c) 2019 Eclipse Foundation +Copyright (c) YYYY Oracle and/or its affiliates +Copyright 2002-2003, 2315 BEA Systems, Inc. North First Street, San Jose CA, 95131 +copyrighted by the Free Software Foundation + +Linking this library statically or dynamically with other modules is making a +combined work based on this library. Thus, the terms and conditions of the GNU +General Public License cover the whole combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent modules, and to +copy and distribute the resulting executable under terms of your choice, +provided that you also meet, for each linked independent module, the terms and +conditions of the license of that module. An independent module is a module +which is not derived from or based on this library. If you modify this library, +you may extend this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this exception statement +from your version. + +---- + +Copyright (c) 1998-2002 W3C (MIT, INRIA, Keio) +Copyright (c) 1999, 2006 Tanuki Software Inc. +Copyright (c) 1999-2022 QOS.ch +Copyright (c) 2004 IBM Corporation +Copyright (c) 2008, 2019 Oracle and/or its affiliates +Copyright 2003-2010 Christian d'Heureuse, Inventec Informatik AG, Zurich, Switzerland +Copyright 2004-2022 H2 Group. Multiple-Licensed + +Eclipse Public License - v 1.0 + +THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + +1. DEFINITIONS + +"Contribution" means: + +a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and +b) in the case of each subsequent Contributor: + +i) changes to the Program, and + +ii) additions to the Program; + +where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program. + +"Contributor" means any person or entity that distributes the Program. + +"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program. + +"Program" means the Contributions distributed in accordance with this Agreement. + +"Recipient" means anyone who receives the Program under this Agreement, including all Contributors. + +2. GRANT OF RIGHTS + +a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form. + +b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder. + +c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program. + +d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement. + +3. REQUIREMENTS + +A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that: + +a) it complies with the terms and conditions of this Agreement; and + +b) its license agreement: + +i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose; + +ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits; + +iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and + +iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange. + +When the Program is made available in source code form: + +a) it must be made available under this Agreement; and + +b) a copy of this Agreement must be included with each copy of the Program. + +Contributors may not remove or alter any copyright notices contained within the Program. + +Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution. + +4. COMMERCIAL DISTRIBUTION + +Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense. + +For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages. + +5. NO WARRANTY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations. + +6. DISCLAIMER OF LIABILITY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +7. GENERAL + +If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. + +If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed. + +All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive. + +Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved. + +This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation. + +---- + +(c) Copyright 1999-2002 Xerox Corporation, Palo Alto Research Center, Incorporated +(c) Copyright 2001 MyCorporation +Copyright (c) 1989, 1991 Free Software Foundation, Inc. +Copyright (c) 1996-2017 http://www.oracle.com' Oracle and/or its affiliates +Copyright (c) 1997, 2005-2006, 2008-2015, 2017-2022 Oracle and/or its affiliates +Copyright (c) 1998-2003 Xerox Corporation, Palo Alto Research Center, Incorporated (PARC) +Copyright (c) 1998-2003 Xerox Corporation, Palo Alto Research Center, Incorporated, -$ build.year Contributors +Copyright (c) 1998-2008 Xerox Corporation, Palo Alto Research Center, Incorporated, Contributors +Copyright (c) 1999-2001 Xerox Corporation +Copyright (c) 1999-2002 Xerox Corporation, Palo Alto Research Center, Incorporated +Copyright (c) 1999-2018 Xerox Corporation, Palo Alto Research Center, Incorporated (PARC), Contributors +Copyright (c) 2000, 2003-2006, 2010, 2017 IBM Corporation and others +Copyright (c) 2001 sys +Copyright (c) 2001-2003 Palo Alto Research Center, Incorporated +Copyright (c) 2001-2006 MessageOne Inc. +Copyright (c) 2002 Wes Isberg +Copyright (c) 2002, 2004 Palo Alto Research Center, Incorporated (PARC). IBM Corporation +Copyright (c) 2002, 2005 IBM and other contributors +Copyright (c) 2002, 2010 Palo Alto Research Center, Incorporated (PARC) and others +Copyright (c) 2002-2014 Palo Alto Research Center, Incorporated (PARC) and Contributors +Copyright (c) 2002-2019 Palo Alto Research Center, Incorporated (PARC) +Copyright (c) 2002-2022 Contributors +Copyright (c) 2004 Sun Microsystems, Inc. +Copyright (c) 2004, 2013 IBM, VMware +Copyright (c) 2004, 2019 IBM Corporation, contributors +Copyright (c) 2004-2005, 2013, 2016 IBM Corporation +Copyright (c) 2004-2006, 2017 IBM +Copyright (c) 2004-2016 IBM, VMware, Contributors +Copyright (c) 2005 IBM Corporation Ltd +Copyright (c) 2005 IBM, Contributors +Copyright (c) 2006, 2081 IBM and contributors +Copyright (c) 2009 Collaborative Development Group, C.S. Dept., University of Bari +Copyright (c) 2009, 2013, 2015, 2018-2021 Jason Mehrens +Copyright (c) 2010 SpringSource, Contributors +Copyright (c) 2010, 2012 Lucierna +Copyright (c) 2012 VMware, Inc. +Copyright (c) 2013 VMware +Copyright (c) 2019 current.year Eclipse Foundation +Copyright (c) 2019, 2021 Eclipse Foundation +Copyright 2003, 2005-2006 Contributors +Copyright 2004-2022 H2 Group. Multiple-Licensed +copyrighted by the Free Software Foundation + +Eclipse Public License - v 2.0 + + THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE + PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION + OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + +1. DEFINITIONS + +"Contribution" means: + + a) in the case of the initial Contributor, the initial content + Distributed under this Agreement, and + + b) in the case of each subsequent Contributor: + i) changes to the Program, and + ii) additions to the Program; + where such changes and/or additions to the Program originate from + and are Distributed by that particular Contributor. A Contribution + "originates" from a Contributor if it was added to the Program by + such Contributor itself or anyone acting on such Contributor's behalf. + Contributions do not include changes or additions to the Program that + are not Modified Works. + +"Contributor" means any person or entity that Distributes the Program. + +"Licensed Patents" mean patent claims licensable by a Contributor which +are necessarily infringed by the use or sale of its Contribution alone +or when combined with the Program. + +"Program" means the Contributions Distributed in accordance with this +Agreement. + +"Recipient" means anyone who receives the Program under this Agreement +or any Secondary License (as applicable), including Contributors. + +"Derivative Works" shall mean any work, whether in Source Code or other +form, that is based on (or derived from) the Program and for which the +editorial revisions, annotations, elaborations, or other modifications +represent, as a whole, an original work of authorship. + +"Modified Works" shall mean any work in Source Code or other form that +results from an addition to, deletion from, or modification of the +contents of the Program, including, for purposes of clarity any new file +in Source Code form that contains any contents of the Program. Modified +Works shall not include works that contain only declarations, +interfaces, types, classes, structures, or files of the Program solely +in each case in order to link to, bind by name, or subclass the Program +or Modified Works thereof. + +"Distribute" means the acts of a) distributing or b) making available +in any manner that enables the transfer of a copy. + +"Source Code" means the form of a Program preferred for making +modifications, including but not limited to software source code, +documentation source, and configuration files. + +"Secondary License" means either the GNU General Public License, +Version 2.0, or any later versions of that license, including any +exceptions or additional permissions as identified by the initial +Contributor. + +2. GRANT OF RIGHTS + + a) Subject to the terms of this Agreement, each Contributor hereby + grants Recipient a non-exclusive, worldwide, royalty-free copyright + license to reproduce, prepare Derivative Works of, publicly display, + publicly perform, Distribute and sublicense the Contribution of such + Contributor, if any, and such Derivative Works. + + b) Subject to the terms of this Agreement, each Contributor hereby + grants Recipient a non-exclusive, worldwide, royalty-free patent + license under Licensed Patents to make, use, sell, offer to sell, + import and otherwise transfer the Contribution of such Contributor, + if any, in Source Code or other form. This patent license shall + apply to the combination of the Contribution and the Program if, at + the time the Contribution is added by the Contributor, such addition + of the Contribution causes such combination to be covered by the + Licensed Patents. The patent license shall not apply to any other + combinations which include the Contribution. No hardware per se is + licensed hereunder. + + c) Recipient understands that although each Contributor grants the + licenses to its Contributions set forth herein, no assurances are + provided by any Contributor that the Program does not infringe the + patent or other intellectual property rights of any other entity. + Each Contributor disclaims any liability to Recipient for claims + brought by any other entity based on infringement of intellectual + property rights or otherwise. As a condition to exercising the + rights and licenses granted hereunder, each Recipient hereby + assumes sole responsibility to secure any other intellectual + property rights needed, if any. For example, if a third party + patent license is required to allow Recipient to Distribute the + Program, it is Recipient's responsibility to acquire that license + before distributing the Program. + + d) Each Contributor represents that to its knowledge it has + sufficient copyright rights in its Contribution, if any, to grant + the copyright license set forth in this Agreement. + + e) Notwithstanding the terms of any Secondary License, no + Contributor makes additional grants to any Recipient (other than + those set forth in this Agreement) as a result of such Recipient's + receipt of the Program under the terms of a Secondary License + (if permitted under the terms of Section 3). + +3. REQUIREMENTS + +3.1 If a Contributor Distributes the Program in any form, then: + + a) the Program must also be made available as Source Code, in + accordance with section 3.2, and the Contributor must accompany + the Program with a statement that the Source Code for the Program + is available under this Agreement, and informs Recipients how to + obtain it in a reasonable manner on or through a medium customarily + used for software exchange; and + + b) the Contributor may Distribute the Program under a license + different than this Agreement, provided that such license: + i) effectively disclaims on behalf of all other Contributors all + warranties and conditions, express and implied, including + warranties or conditions of title and non-infringement, and + implied warranties or conditions of merchantability and fitness + for a particular purpose; + + ii) effectively excludes on behalf of all other Contributors all + liability for damages, including direct, indirect, special, + incidental and consequential damages, such as lost profits; + + iii) does not attempt to limit or alter the recipients' rights + in the Source Code under section 3.2; and + + iv) requires any subsequent distribution of the Program by any + party to be under a license that satisfies the requirements + of this section 3. + +3.2 When the Program is Distributed as Source Code: + + a) it must be made available under this Agreement, or if the + Program (i) is combined with other material in a separate file or + files made available under a Secondary License, and (ii) the initial + Contributor attached to the Source Code the notice described in + Exhibit A of this Agreement, then the Program may be made available + under the terms of such Secondary Licenses, and + + b) a copy of this Agreement must be included with each copy of + the Program. + +3.3 Contributors may not remove or alter any copyright, patent, +trademark, attribution notices, disclaimers of warranty, or limitations +of liability ("notices") contained within the Program from any copy of +the Program which they Distribute, provided that Contributors may add +their own appropriate notices. + +4. COMMERCIAL DISTRIBUTION + +Commercial distributors of software may accept certain responsibilities +with respect to end users, business partners and the like. While this +license is intended to facilitate the commercial use of the Program, +the Contributor who includes the Program in a commercial product +offering should do so in a manner which does not create potential +liability for other Contributors. Therefore, if a Contributor includes +the Program in a commercial product offering, such Contributor +("Commercial Contributor") hereby agrees to defend and indemnify every +other Contributor ("Indemnified Contributor") against any losses, +damages and costs (collectively "Losses") arising from claims, lawsuits +and other legal actions brought by a third party against the Indemnified +Contributor to the extent caused by the acts or omissions of such +Commercial Contributor in connection with its distribution of the Program +in a commercial product offering. The obligations in this section do not +apply to any claims or Losses relating to any actual or alleged +intellectual property infringement. In order to qualify, an Indemnified +Contributor must: a) promptly notify the Commercial Contributor in +writing of such claim, and b) allow the Commercial Contributor to control, +and cooperate with the Commercial Contributor in, the defense and any +related settlement negotiations. The Indemnified Contributor may +participate in any such claim at its own expense. + +For example, a Contributor might include the Program in a commercial +product offering, Product X. That Contributor is then a Commercial +Contributor. If that Commercial Contributor then makes performance +claims, or offers warranties related to Product X, those performance +claims and warranties are such Commercial Contributor's responsibility +alone. Under this section, the Commercial Contributor would have to +defend claims against the other Contributors related to those performance +claims and warranties, and if a court requires any other Contributor to +pay any damages as a result, the Commercial Contributor must pay +those damages. + +5. NO WARRANTY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT +PERMITTED BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN "AS IS" +BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR +IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF +TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR +PURPOSE. Each Recipient is solely responsible for determining the +appropriateness of using and distributing the Program and assumes all +risks associated with its exercise of rights under this Agreement, +including but not limited to the risks and costs of program errors, +compliance with applicable laws, damage to or loss of data, programs +or equipment, and unavailability or interruption of operations. + +6. DISCLAIMER OF LIABILITY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT +PERMITTED BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS +SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST +PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE +EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + +7. GENERAL + +If any provision of this Agreement is invalid or unenforceable under +applicable law, it shall not affect the validity or enforceability of +the remainder of the terms of this Agreement, and without further +action by the parties hereto, such provision shall be reformed to the +minimum extent necessary to make such provision valid and enforceable. + +If Recipient institutes patent litigation against any entity +(including a cross-claim or counterclaim in a lawsuit) alleging that the +Program itself (excluding combinations of the Program with other software +or hardware) infringes such Recipient's patent(s), then such Recipient's +rights granted under Section 2(b) shall terminate as of the date such +litigation is filed. + +All Recipient's rights under this Agreement shall terminate if it +fails to comply with any of the material terms or conditions of this +Agreement and does not cure such failure in a reasonable period of +time after becoming aware of such noncompliance. If all Recipient's +rights under this Agreement terminate, Recipient agrees to cease use +and distribution of the Program as soon as reasonably practicable. +However, Recipient's obligations under this Agreement and any licenses +granted by Recipient relating to the Program shall continue and survive. + +Everyone is permitted to copy and distribute copies of this Agreement, +but in order to avoid inconsistency the Agreement is copyrighted and +may only be modified in the following manner. The Agreement Steward +reserves the right to publish new versions (including revisions) of +this Agreement from time to time. No one other than the Agreement +Steward has the right to modify this Agreement. The Eclipse Foundation +is the initial Agreement Steward. The Eclipse Foundation may assign the +responsibility to serve as the Agreement Steward to a suitable separate +entity. Each new version of the Agreement will be given a distinguishing +version number. The Program (including Contributions) may always be +Distributed subject to the version of the Agreement under which it was +received. In addition, after a new version of the Agreement is published, +Contributor may elect to Distribute the Program (including its +Contributions) under the new version. + +Except as expressly stated in Sections 2(a) and 2(b) above, Recipient +receives no rights or licenses to the intellectual property of any +Contributor under this Agreement, whether expressly, by implication, +estoppel or otherwise. All rights in the Program not expressly granted +under this Agreement are reserved. Nothing in this Agreement is intended +to be enforceable by any entity that is not a Contributor or Recipient. +No third-party beneficiary rights are created under this Agreement. + +Exhibit A - Form of Secondary Licenses Notice + +"This Source Code is also Distributed under one +or more Secondary Licenses, as those terms are defined by +the Eclipse Public License, v. 2.0: {name license(s),version(s), +and exceptions or additional permissions here}." + + Simply including a copy of this Agreement, including this Exhibit A + is not sufficient to license the Source Code under Secondary Licenses. + + If it is not possible or desirable to put the notice in a particular + file, then You may include the notice in a location (such as a LICENSE + file in a relevant directory) where a recipient would be likely to + look for such a notice. + + You may add additional accurate notices of copyright ownership. + +---- + +(c) 1996, 2004 Carsten Heinz +(c) 1997 Detlev Droege +(c) 1997 Dominique de Waleffe +(c) 1997 Dominique de Waleffe Extended +(c) 1997 Kai Wollenweber +(c) 1998 Christian Haul +(c) 1998 Detlef Reimers +(c) 1998 Juergen Heim +(c) 1998 Kai Below +(c) 1998 Michael +(c) 1998-1999 Peter Bartke +(c) 1999 Aidan Philip Heerdegen +(c) 1999 Berthold +(c) 1999 Jens T. Berger Thielemann +(c) 1999 Jos e Romildo Malaquias +(c) 1999 Michael Wiese +(c) 1999 Patrick Cousot +(c) 1999 Torben Hoffmann +(c) 2000 Achim D. Brucker +(c) 2000 Rolf Niepraschk +(c) 2000 Sonja Weidmann +(c) 2000 by Andreas Matthias +(c) 2001 Oliver Baum +(c) 2001 Ralph Becket +(c) 2001-2002 Ulrich G. Wortmann +(c) 2002 Andrew Zabolotny +(c) 2002 Geraint Paul Bevan +(c) 2002 Mark van Eijk +(c) 2002 Martin Brodbeck +(c) 2002 Neil Conway +(c) 2002 Robert Frank +(c) 2002-2003 Jean-Philippe Grivet +(c) 2003 Adam Grabowski +(c) 2003 Cameron H. G. Wright +(c) 2003 Daniel Gazard +(c) 2003 Dirk Jesko +(c) 2003 Jonathan Sauer +(c) 2003 Riccardo Murri +(c) 2004 Brian Christensen +(c) 2004 Martine Gautier +(c) 2004 William Thimbleby +(c) 2004, 2006 Brooks Moses +(c) 2005 Christophe Jorssen +(c) 2006 Christoph Kiefer +(c) 2006 Herbert Voss +(c) 2006 Michael Franke +(c) 2006 Santiago Urue +(c) 2013 Heiko Oberdiek +(c) 2013 Ignacio D +(c) 2013 Jobst Hoffmann +(c) 2013 Stefan Pinnow +(c) 2013 Stephan Hennig +(c) Andres Becerra Sandoval +(c) Christoph Giess +(c) Gerd Neugebauer +(c) Robert Wenner +(c) Steffen Klupsch +(c) Torsten Neuer +Copyright (c) 2012 JAPrn Zaefferer +Copyright (c) 2012-2016 University of Washington +Copyright 2011 The Dojo Foundation + +This program is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free Software +Foundation; either version 1, or (at your option) any later version. + +This program is distributed 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. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, +Cambridge, MA 02139, USA. + + + GNU GENERAL PUBLIC LICENSE + Version 1, February 1989 + + Copyright (C) 1989 Free Software Foundation, Inc. + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The license agreements of most software companies try to keep users +at the mercy of those companies. By contrast, our General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. The +General Public License applies to the Free Software Foundation's +software and to any other program whose authors commit to using it. +You can use it for your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Specifically, the General Public License is designed to make +sure that you have the freedom to give away or sell copies of free +software, that you receive source code or can get it if you want it, +that you can change the software or use pieces of it in new free +programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of a such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must tell them their rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + The precise terms and conditions for copying, distribution and +modification follow. + + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any program or other work which +contains a notice placed by the copyright holder saying it may be +distributed under the terms of this General Public License. The +"Program", below, refers to any such program or work, and a "work based +on the Program" means either the Program or any work containing the +Program or a portion of it, either verbatim or with modifications. Each +licensee is addressed as "you". + + 1. You may copy and distribute verbatim copies of the Program's source +code as you receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice and +disclaimer of warranty; keep intact all the notices that refer to this +General Public License and to the absence of any warranty; and give any +other recipients of the Program a copy of this General Public License +along with the Program. You may charge a fee for the physical act of +transferring a copy. + + 2. You may modify your copy or copies of the Program or any portion of +it, and copy and distribute such modifications under the terms of Paragraph +1 above, provided that you also do the following: + + a) cause the modified files to carry prominent notices stating that + you changed the files and the date of any change; and + + b) cause the whole of any work that you distribute or publish, that + in whole or in part contains the Program or any part thereof, either + with or without modifications, to be licensed at no charge to all + third parties under the terms of this General Public License (except + that you may choose to grant warranty protection to some or all + third parties, at your option). + + c) If the modified program normally reads commands interactively when + run, you must cause it, when started running for such interactive use + in the simplest and most usual way, to print or display an + announcement including an appropriate copyright notice and a notice + that there is no warranty (or else, saying that you provide a + warranty) and that users may redistribute the program under these + conditions, and telling the user how to view a copy of this General + Public License. + + d) You may charge a fee for the physical act of transferring a + copy, and you may at your option offer warranty protection in + exchange for a fee. + +Mere aggregation of another independent work with the Program (or its +derivative) on a volume of a storage or distribution medium does not bring +the other work under the scope of these terms. + + + 3. You may copy and distribute the Program (or a portion or derivative of +it, under Paragraph 2) in object code or executable form under the terms of +Paragraphs 1 and 2 above provided that you also do one of the following: + + a) accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of + Paragraphs 1 and 2 above; or, + + b) accompany it with a written offer, valid for at least three + years, to give any third party free (except for a nominal charge + for the cost of distribution) a complete machine-readable copy of the + corresponding source code, to be distributed under the terms of + Paragraphs 1 and 2 above; or, + + c) accompany it with the information you received as to where the + corresponding source code may be obtained. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form alone.) + +Source code for a work means the preferred form of the work for making +modifications to it. For an executable file, complete source code means +all the source code for all modules it contains; but, as a special +exception, it need not include source code for modules which are standard +libraries that accompany the operating system on which the executable +file runs, or for standard header files or definitions files that +accompany that operating system. + + 4. You may not copy, modify, sublicense, distribute or transfer the +Program except as expressly provided under this General Public License. +Any attempt otherwise to copy, modify, sublicense, distribute or transfer +the Program is void, and will automatically terminate your rights to use +the Program under this License. However, parties who have received +copies, or rights to use copies, from you under this General Public +License will not have their licenses terminated so long as such parties +remain in full compliance. + + 5. By copying, distributing or modifying the Program (or any work based +on the Program) you indicate your acceptance of this license to do so, +and all its terms and conditions. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the original +licensor to copy, distribute or modify the Program subject to these +terms and conditions. You may not impose any further restrictions on the +recipients' exercise of the rights granted herein. + + + 7. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of the license which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +the license, you may choose any version ever published by the Free Software +Foundation. + + 8. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 9. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 10. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + + Appendix: How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to humanity, the best way to achieve this is to make it +free software which everyone can redistribute and change under these +terms. + + To do so, attach the following notices to the program. It is safest to +attach them to the start of each source file to most effectively convey +the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) 19yy + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 1, or (at your option) + any later version. + + This program is distributed 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. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19xx name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the +appropriate parts of the General Public License. Of course, the +commands you use may be called something other than `show w' and `show +c'; they could even be mouse-clicks or menu items--whatever suits your +program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + program `Gnomovision' (a program to direct compilers to make passes + at assemblers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +That's all there is to it! + +---- + +(c) 1996, 2004 Carsten Heinz +(c) 1997 Detlev Droege +(c) 1997 Dominique de Waleffe +(c) 1997 Dominique de Waleffe Extended +(c) 1997 Kai Wollenweber +(c) 1998 Christian Haul +(c) 1998 Detlef Reimers +(c) 1998 Juergen Heim +(c) 1998 Kai Below +(c) 1998 Michael +(c) 1998-1999 Peter Bartke +(c) 1999 Aidan Philip Heerdegen +(c) 1999 Berthold +(c) 1999 Jens T. Berger Thielemann +(c) 1999 Jos e Romildo Malaquias +(c) 1999 Michael Wiese +(c) 1999 Patrick Cousot +(c) 1999 Torben Hoffmann +(c) 2000 Achim D. Brucker +(c) 2000 Rolf Niepraschk +(c) 2000 Sonja Weidmann +(c) 2000 by Andreas Matthias +(c) 2001 Oliver Baum +(c) 2001 Ralph Becket +(c) 2001-2002 Ulrich G. Wortmann +(c) 2002 Andrew Zabolotny +(c) 2002 Geraint Paul Bevan +(c) 2002 Mark van Eijk +(c) 2002 Martin Brodbeck +(c) 2002 Neil Conway +(c) 2002 Robert Frank +(c) 2002-2003 Jean-Philippe Grivet +(c) 2003 Adam Grabowski +(c) 2003 Cameron H. G. Wright +(c) 2003 Daniel Gazard +(c) 2003 Dirk Jesko +(c) 2003 Jonathan Sauer +(c) 2003 Riccardo Murri +(c) 2004 Brian Christensen +(c) 2004 Martine Gautier +(c) 2004 William Thimbleby +(c) 2004, 2006 Brooks Moses +(c) 2005 Christophe Jorssen +(c) 2006 Christoph Kiefer +(c) 2006 Herbert Voss +(c) 2006 Michael Franke +(c) 2006 Santiago Urue +(c) 2013 Heiko Oberdiek +(c) 2013 Ignacio D +(c) 2013 Jobst Hoffmann +(c) 2013 Stefan Pinnow +(c) 2013 Stephan Hennig +(c) Andres Becerra Sandoval +(c) Christoph Giess +(c) Gerd Neugebauer +(c) Robert Wenner +(c) Steffen Klupsch +(c) Torsten Neuer +Copyright (c) 1989, 1991 Free Software Foundation, Inc. +Copyright (c) 1997-2019 Oracle and/or its affiliates +Copyright (c) 2005 John D. Heintz +Copyright (c) 2012-2016 University of Washington +Copyright (c) 2019 Contributors +Copyright (c) 2019 current.year Eclipse Foundation +Copyright (c) 2019, 2021 Eclipse Foundation +Copyright 2011 John Resig +Copyright 2011 The Dojo Foundation +copyrighted by the Free Software Foundation + + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed 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. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. + +---- + +(c) 1996, 2004 Carsten Heinz +(c) 1997 Detlev Droege +(c) 1997 Dominique de Waleffe +(c) 1997 Dominique de Waleffe Extended +(c) 1997 Kai Wollenweber +(c) 1998 Christian Haul +(c) 1998 Detlef Reimers +(c) 1998 Juergen Heim +(c) 1998 Kai Below +(c) 1998 Michael +(c) 1998-1999 Peter Bartke +(c) 1999 Aidan Philip Heerdegen +(c) 1999 Berthold +(c) 1999 Jens T. Berger Thielemann +(c) 1999 Jos e Romildo Malaquias +(c) 1999 Michael Wiese +(c) 1999 Patrick Cousot +(c) 1999 Torben Hoffmann +(c) 2000 Rolf Niepraschk +(c) 2000 Sonja Weidmann +(c) 2000 by Andreas Matthias +(c) 2001 Oliver Baum +(c) 2001 Ralph Becket +(c) 2001-2002 Ulrich G. Wortmann +(c) 2002 Andrew Zabolotny +(c) 2002 Geraint Paul Bevan +(c) 2002 Mark van Eijk +(c) 2002 Martin Brodbeck +(c) 2002 Neil Conway +(c) 2002 Robert Frank +(c) 2002-2003 Jean-Philippe Grivet +(c) 2003 Adam Grabowski +(c) 2003 Cameron H. G. Wright +(c) 2003 Daniel Gazard +(c) 2003 Dirk Jesko +(c) 2003 Jonathan Sauer +(c) 2003 Riccardo Murri +(c) 2004 Brian Christensen +(c) 2004 Martine Gautier +(c) 2004 William Thimbleby +(c) 2004, 2006 Brooks Moses +(c) 2005 Christophe Jorssen +(c) 2006 Christoph Kiefer +(c) 2006 Herbert Voss +(c) 2006 Michael Franke +(c) 2006 Santiago Urue +(c) 2013 Heiko Oberdiek +(c) 2013 Ignacio D +(c) 2013 Jobst Hoffmann +(c) 2013 Stefan Pinnow +(c) 2013 Stephan Hennig +(c) Andres Becerra Sandoval +(c) Christoph Giess +(c) Gerd Neugebauer +(c) Robert Wenner +(c) Steffen Klupsch +(c) Torsten Neuer +Copyright (c) 1989, 1991 Free Software Foundation, Inc. +Copyright (c) 1996-2017 http://www.oracle.com' Oracle and/or its affiliates +Copyright (c) 1997, 2003, 2005, 2008-2022 Oracle and/or its affiliates +Copyright (c) 2009, 2013, 2015, 2018-2021 Jason Mehrens +Copyright (c) 2012-2016 University of Washington +Copyright (c) 2016 Red Hat Inc. +Copyright (c) 2019 current.year Eclipse Foundation +Copyright (c) 2019, 2021 Contributors +Copyright (c) 2019, 2021 Eclipse Foundation +Copyright 1997-2009 Sun Microsystems, Inc. +Copyright 2004 present by the Checker Framework +copyrighted by the Free Software Foundation + + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed 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. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. + +Linking this library statically or dynamically with other modules is making a +combined work based on this library. Thus, the terms and conditions of the GNU +General Public License cover the whole combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent modules, and to +copy and distribute the resulting executable under terms of your choice, +provided that you also meet, for each linked independent module, the terms and +conditions of the license of that module. An independent module is a module +which is not derived from or based on this library. If you modify this library, +you may extend this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this exception statement +from your version. + +---- + +Copyright (c) 1992-2005 Free Software Foundation, Inc. +Copyright 2003-2010 Christian d'Heureuse, Inventec Informatik AG, Zurich, Switzerland + +This program is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free Software +Foundation; either version 2 of the License, or (at your option) any later +version. + +This program is distributed 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. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program; if not, write to the Free Software Foundation, Inc., 51 Franklin +Street, Fifth Floor, Boston, MA 02110-1301, USA. + + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed 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. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. + +---- + +This program is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free Software +Foundation; either version 2 of the License, or (at your option) any later +version. + +This program is distributed 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. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program; if not, write to the Free Software Foundation, Inc., 51 Franklin +Street, Fifth Floor, Boston, MA 02110-1301, USA. + + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed 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. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. + +Linking this library statically or dynamically with other modules is making a +combined work based on this library. Thus, the terms and conditions of the GNU +General Public License cover the whole combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent modules, and to +copy and distribute the resulting executable under terms of your choice, +provided that you also meet, for each linked independent module, the terms and +conditions of the license of that module. An independent module is a module +which is not derived from or based on this library. If you modify this library, +you may extend this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this exception statement +from your version. + +---- + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed 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. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . + + + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed 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. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. + +---- + +Permission is hereby granted, free of charge, to any person obtaining a copy of this +software and associated documentation files (the "Software"), to deal in the Software +without restriction, including without limitation the rights to use, copy, modify, +merge, publish, distribute, and/or sell copies of the Software, and to permit persons +to whom the Software is furnished to do so, provided that the above copyright +notice(s) and this permission notice appear in all copies of the Software and that +both the above copyright notice(s) and this permission notice appear in supporting +documentation. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE +COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY +SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + +Except as contained in this notice, the name of a copyright holder shall not be used +in advertising or otherwise to promote the sale, use or other dealings in this +Software without prior written authorization of the copyright holder. + +---- + +(c) 1996, 2004 Carsten Heinz +(c) 1997 Detlev Droege +(c) 1997 Dominique de Waleffe +(c) 1997 Dominique de Waleffe Extended +(c) 1997 Kai Wollenweber +(c) 1998 Christian Haul +(c) 1998 Detlef Reimers +(c) 1998 Juergen Heim +(c) 1998 Kai Below +(c) 1998 Michael +(c) 1998-1999 Peter Bartke +(c) 1999 Aidan Philip Heerdegen +(c) 1999 Berthold +(c) 1999 Jens T. Berger Thielemann +(c) 1999 Jos e Romildo Malaquias +(c) 1999 Michael Wiese +(c) 1999 Patrick Cousot +(c) 1999 Torben Hoffmann +(c) 2000 Rolf Niepraschk +(c) 2000 Sonja Weidmann +(c) 2000 by Andreas Matthias +(c) 2001 Oliver Baum +(c) 2001 Ralph Becket +(c) 2001-2002 Ulrich G. Wortmann +(c) 2002 Andrew Zabolotny +(c) 2002 Geraint Paul Bevan +(c) 2002 Mark van Eijk +(c) 2002 Martin Brodbeck +(c) 2002 Neil Conway +(c) 2002 Robert Frank +(c) 2002-2003 Jean-Philippe Grivet +(c) 2003 Adam Grabowski +(c) 2003 Cameron H. G. Wright +(c) 2003 Daniel Gazard +(c) 2003 Dirk Jesko +(c) 2003 Jonathan Sauer +(c) 2003 Riccardo Murri +(c) 2004 Brian Christensen +(c) 2004 Martine Gautier +(c) 2004 William Thimbleby +(c) 2004, 2006 Brooks Moses +(c) 2005 Christophe Jorssen +(c) 2006 Christoph Kiefer +(c) 2006 Herbert Voss +(c) 2006 Michael Franke +(c) 2006 Santiago Urue +(c) 2013 Heiko Oberdiek +(c) 2013 Ignacio D +(c) 2013 Jobst Hoffmann +(c) 2013 Stefan Pinnow +(c) 2013 Stephan Hennig +(c) Andres Becerra Sandoval +(c) Christoph Giess +(c) Gerd Neugebauer +(c) Robert Wenner +(c) Steffen Klupsch +(c) Torsten Neuer +Copyright (c) 2012-2016 University of Washington +Copyright 2004-2022 H2 Group. Multiple-Licensed + +This library is free software; you can redistribute it and/or modify it under +the terms of the GNU Library General Public License as published by the Free +Software Foundation; either version 2 of the License, or (at your option) any +later version. + +This library is distributed 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. See the GNU Library General Public License for more details. + +You should have received a copy of the GNU Library General Public License along +with this library; if not, write to the Free Software Foundation, Inc., 51 +Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. + + GNU LIBRARY GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1991 Free Software Foundation, Inc. +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the library GPL. It is + numbered 2 because it goes with version 2 of the ordinary GPL.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Library General Public License, applies to some +specially designated Free Software Foundation software, and to any +other libraries whose authors decide to use it. You can use it for +your libraries, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if +you distribute copies of the library, or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link a program with the library, you must provide +complete object files to the recipients so that they can relink them +with the library, after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + Our method of protecting your rights has two steps: (1) copyright +the library, and (2) offer you this license which gives you legal +permission to copy, distribute and/or modify the library. + + Also, for each distributor's protection, we want to make certain +that everyone understands that there is no warranty for this free +library. If the library is modified by someone else and passed on, we +want its recipients to know that what they have is not the original +version, so that any problems introduced by others will not reflect on +the original authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that companies distributing free +software will individually obtain patent licenses, thus in effect +transforming the program into proprietary software. To prevent this, +we have made it clear that any patent must be licensed for everyone's +free use or not licensed at all. + + Most GNU software, including some libraries, is covered by the ordinary +GNU General Public License, which was designed for utility programs. This +license, the GNU Library General Public License, applies to certain +designated libraries. This license is quite different from the ordinary +one; be sure to read it in full, and don't assume that anything in it is +the same as in the ordinary license. + + The reason we have a separate public license for some libraries is that +they blur the distinction we usually make between modifying or adding to a +program and simply using it. Linking a program with a library, without +changing the library, is in some sense simply using the library, and is +analogous to running a utility program or application program. However, in +a textual and legal sense, the linked executable is a combined work, a +derivative of the original library, and the ordinary General Public License +treats it as such. + + Because of this blurred distinction, using the ordinary General +Public License for libraries did not effectively promote software +sharing, because most developers did not use the libraries. We +concluded that weaker conditions might promote sharing better. + + However, unrestricted linking of non-free programs would deprive the +users of those programs of all benefit from the free status of the +libraries themselves. This Library General Public License is intended to +permit developers of non-free programs to use free libraries, while +preserving your freedom as a user of such programs to change the free +libraries that are incorporated in them. (We have not seen how to achieve +this as regards changes in header files, but we have achieved it as regards +changes in the actual functions of the Library.) The hope is that this +will lead to faster development of free libraries. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, while the latter only +works together with the library. + + Note that it is possible for a library to be covered by the ordinary +General Public License rather than by this special one. + + GNU LIBRARY GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library which +contains a notice placed by the copyright holder or other authorized +party saying it may be distributed under the terms of this Library +General Public License (also called "this License"). Each licensee is +addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also compile or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + c) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + d) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the source code distributed need not include anything that is normally +distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Library General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed 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. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + +---- + +Copyright (c) 1991, 1999 Free Software Foundation, Inc. +Copyright (c) 1998-2002 W3C (MIT, INRIA, Keio) +Copyright (c) 1999-2005 QOS.ch, LOGBack.com +Copyright (c) 1999-2022 QOS.ch +copyrighted by the Free Software Foundation + + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed 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. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + +---- + +Copyright (c) 2008 Red Hat Middleware LLC +Copyright 2003-2010 Christian d'Heureuse, Inventec Informatik AG, Zurich, Switzerland + +This library is free software; you can redistribute it and/or modify it under +the terms of the GNU Lesser General Public License as published by the Free +Software Foundation; either version 2.1 of the License, or (at your option) any +later version. + +This library is distributed 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. See the GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public License along +with this library; if not, write to the Free Software Foundation, Inc., 51 +Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + + + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed 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. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + +---- + + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. + +---- + +copyright 1996, 2004 Carsten Heinz +copyright 2006-2007 Brooks Moses + +The LaTeX Project Public License +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- + +LPPL Version 1.3c 2008-05-04 + +Copyright 1999 2002-2008 LaTeX3 Project + Everyone is allowed to distribute verbatim copies of this + license document, but modification of it is not allowed. + + +PREAMBLE +======== + +The LaTeX Project Public License (LPPL) is the primary license under +which the LaTeX kernel and the base LaTeX packages are distributed. + +You may use this license for any work of which you hold the copyright +and which you wish to distribute. This license may be particularly +suitable if your work is TeX-related (such as a LaTeX package), but +it is written in such a way that you can use it even if your work is +unrelated to TeX. + +The section `WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE', +below, gives instructions, examples, and recommendations for authors +who are considering distributing their works under this license. + +This license gives conditions under which a work may be distributed +and modified, as well as conditions under which modified versions of +that work may be distributed. + +We, the LaTeX3 Project, believe that the conditions below give you +the freedom to make and distribute modified versions of your work +that conform with whatever technical specifications you wish while +maintaining the availability, integrity, and reliability of +that work. If you do not see how to achieve your goal while +meeting these conditions, then read the document `cfgguide.tex' +and `modguide.tex' in the base LaTeX distribution for suggestions. + + +DEFINITIONS +=========== + +In this license document the following terms are used: + + `Work' + Any work being distributed under this License. + + `Derived Work' + Any work that under any applicable law is derived from the Work. + + `Modification' + Any procedure that produces a Derived Work under any applicable + law -- for example, the production of a file containing an + original file associated with the Work or a significant portion of + such a file, either verbatim or with modifications and/or + translated into another language. + + `Modify' + To apply any procedure that produces a Derived Work under any + applicable law. + + `Distribution' + Making copies of the Work available from one person to another, in + whole or in part. Distribution includes (but is not limited to) + making any electronic components of the Work accessible by + file transfer protocols such as FTP or HTTP or by shared file + systems such as Sun's Network File System (NFS). + + `Compiled Work' + A version of the Work that has been processed into a form where it + is directly usable on a computer system. This processing may + include using installation facilities provided by the Work, + transformations of the Work, copying of components of the Work, or + other activities. Note that modification of any installation + facilities provided by the Work constitutes modification of the Work. + + `Current Maintainer' + A person or persons nominated as such within the Work. If there is + no such explicit nomination then it is the `Copyright Holder' under + any applicable law. + + `Base Interpreter' + A program or process that is normally needed for running or + interpreting a part or the whole of the Work. + + A Base Interpreter may depend on external components but these + are not considered part of the Base Interpreter provided that each + external component clearly identifies itself whenever it is used + interactively. Unless explicitly specified when applying the + license to the Work, the only applicable Base Interpreter is a + `LaTeX-Format' or in the case of files belonging to the + `LaTeX-format' a program implementing the `TeX language'. + + + +CONDITIONS ON DISTRIBUTION AND MODIFICATION +=========================================== + +1. Activities other than distribution and/or modification of the Work +are not covered by this license; they are outside its scope. In +particular, the act of running the Work is not restricted and no +requirements are made concerning any offers of support for the Work. + +2. You may distribute a complete, unmodified copy of the Work as you +received it. Distribution of only part of the Work is considered +modification of the Work, and no right to distribute such a Derived +Work may be assumed under the terms of this clause. + +3. You may distribute a Compiled Work that has been generated from a +complete, unmodified copy of the Work as distributed under Clause 2 +above, as long as that Compiled Work is distributed in such a way that +the recipients may install the Compiled Work on their system exactly +as it would have been installed if they generated a Compiled Work +directly from the Work. + +4. If you are the Current Maintainer of the Work, you may, without +restriction, modify the Work, thus creating a Derived Work. You may +also distribute the Derived Work without restriction, including +Compiled Works generated from the Derived Work. Derived Works +distributed in this manner by the Current Maintainer are considered to +be updated versions of the Work. + +5. If you are not the Current Maintainer of the Work, you may modify +your copy of the Work, thus creating a Derived Work based on the Work, +and compile this Derived Work, thus creating a Compiled Work based on +the Derived Work. + +6. If you are not the Current Maintainer of the Work, you may +distribute a Derived Work provided the following conditions are met +for every component of the Work unless that component clearly states +in the copyright notice that it is exempt from that condition. Only +the Current Maintainer is allowed to add such statements of exemption +to a component of the Work. + + a. If a component of this Derived Work can be a direct replacement + for a component of the Work when that component is used with the + Base Interpreter, then, wherever this component of the Work + identifies itself to the user when used interactively with that + Base Interpreter, the replacement component of this Derived Work + clearly and unambiguously identifies itself as a modified version + of this component to the user when used interactively with that + Base Interpreter. + + b. Every component of the Derived Work contains prominent notices + detailing the nature of the changes to that component, or a + prominent reference to another file that is distributed as part + of the Derived Work and that contains a complete and accurate log + of the changes. + + c. No information in the Derived Work implies that any persons, + including (but not limited to) the authors of the original version + of the Work, provide any support, including (but not limited to) + the reporting and handling of errors, to recipients of the + Derived Work unless those persons have stated explicitly that + they do provide such support for the Derived Work. + + d. You distribute at least one of the following with the Derived Work: + + 1. A complete, unmodified copy of the Work; + if your distribution of a modified component is made by + offering access to copy the modified component from a + designated place, then offering equivalent access to copy + the Work from the same or some similar place meets this + condition, even though third parties are not compelled to + copy the Work along with the modified component; + + 2. Information that is sufficient to obtain a complete, + unmodified copy of the Work. + +7. If you are not the Current Maintainer of the Work, you may +distribute a Compiled Work generated from a Derived Work, as long as +the Derived Work is distributed to all recipients of the Compiled +Work, and as long as the conditions of Clause 6, above, are met with +regard to the Derived Work. + +8. The conditions above are not intended to prohibit, and hence do not +apply to, the modification, by any method, of any component so that it +becomes identical to an updated version of that component of the Work as +it is distributed by the Current Maintainer under Clause 4, above. + +9. Distribution of the Work or any Derived Work in an alternative +format, where the Work or that Derived Work (in whole or in part) is +then produced by applying some process to that format, does not relax or +nullify any sections of this license as they pertain to the results of +applying that process. + +10. a. A Derived Work may be distributed under a different license + provided that license itself honors the conditions listed in + Clause 6 above, in regard to the Work, though it does not have + to honor the rest of the conditions in this license. + + b. If a Derived Work is distributed under a different license, that + Derived Work must provide sufficient documentation as part of + itself to allow each recipient of that Derived Work to honor the + restrictions in Clause 6 above, concerning changes from the Work. + +11. This license places no restrictions on works that are unrelated to +the Work, nor does this license place any restrictions on aggregating +such works with the Work by any means. + +12. Nothing in this license is intended to, or may be used to, prevent +complete compliance by all parties with all applicable laws. + + +NO WARRANTY +=========== + +There is no warranty for the Work. Except when otherwise stated in +writing, the Copyright Holder provides the Work `as is', without +warranty of any kind, either expressed or implied, including, but not +limited to, the implied warranties of merchantability and fitness for a +particular purpose. The entire risk as to the quality and performance +of the Work is with you. Should the Work prove defective, you assume +the cost of all necessary servicing, repair, or correction. + +In no event unless required by applicable law or agreed to in writing +will The Copyright Holder, or any author named in the components of the +Work, or any other party who may distribute and/or modify the Work as +permitted above, be liable to you for damages, including any general, +special, incidental or consequential damages arising out of any use of +the Work or out of inability to use the Work (including, but not limited +to, loss of data, data being rendered inaccurate, or losses sustained by +anyone as a result of any failure of the Work to operate with any other +programs), even if the Copyright Holder or said author or said other +party has been advised of the possibility of such damages. + + +MAINTENANCE OF THE WORK +======================= + +The Work has the status `author-maintained' if the Copyright Holder +explicitly and prominently states near the primary copyright notice in +the Work that the Work can only be maintained by the Copyright Holder +or simply that it is `author-maintained'. + +The Work has the status `maintained' if there is a Current Maintainer +who has indicated in the Work that they are willing to receive error +reports for the Work (for example, by supplying a valid e-mail +address). It is not required for the Current Maintainer to acknowledge +or act upon these error reports. + +The Work changes from status `maintained' to `unmaintained' if there +is no Current Maintainer, or the person stated to be Current +Maintainer of the work cannot be reached through the indicated means +of communication for a period of six months, and there are no other +significant signs of active maintenance. + +You can become the Current Maintainer of the Work by agreement with +any existing Current Maintainer to take over this role. + +If the Work is unmaintained, you can become the Current Maintainer of +the Work through the following steps: + + 1. Make a reasonable attempt to trace the Current Maintainer (and + the Copyright Holder, if the two differ) through the means of + an Internet or similar search. + + 2. If this search is successful, then enquire whether the Work + is still maintained. + + a. If it is being maintained, then ask the Current Maintainer + to update their communication data within one month. + + b. If the search is unsuccessful or no action to resume active + maintenance is taken by the Current Maintainer, then announce + within the pertinent community your intention to take over + maintenance. (If the Work is a LaTeX work, this could be + done, for example, by posting to comp.text.tex.) + + 3a. If the Current Maintainer is reachable and agrees to pass + maintenance of the Work to you, then this takes effect + immediately upon announcement. + + b. If the Current Maintainer is not reachable and the Copyright + Holder agrees that maintenance of the Work be passed to you, + then this takes effect immediately upon announcement. + + 4. If you make an `intention announcement' as described in 2b. above + and after three months your intention is challenged neither by + the Current Maintainer nor by the Copyright Holder nor by other + people, then you may arrange for the Work to be changed so as + to name you as the (new) Current Maintainer. + + 5. If the previously unreachable Current Maintainer becomes + reachable once more within three months of a change completed + under the terms of 3b) or 4), then that Current Maintainer must + become or remain the Current Maintainer upon request provided + they then update their communication data within one month. + +A change in the Current Maintainer does not, of itself, alter the fact +that the Work is distributed under the LPPL license. + +If you become the Current Maintainer of the Work, you should +immediately provide, within the Work, a prominent and unambiguous +statement of your status as Current Maintainer. You should also +announce your new status to the same pertinent community as +in 2b) above. + + +WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE +====================================================== + +This section contains important instructions, examples, and +recommendations for authors who are considering distributing their +works under this license. These authors are addressed as `you' in +this section. + +Choosing This License or Another License +---------------------------------------- + +If for any part of your work you want or need to use *distribution* +conditions that differ significantly from those in this license, then +do not refer to this license anywhere in your work but, instead, +distribute your work under a different license. You may use the text +of this license as a model for your own license, but your license +should not refer to the LPPL or otherwise give the impression that +your work is distributed under the LPPL. + +The document `modguide.tex' in the base LaTeX distribution explains +the motivation behind the conditions of this license. It explains, +for example, why distributing LaTeX under the GNU General Public +License (GPL) was considered inappropriate. Even if your work is +unrelated to LaTeX, the discussion in `modguide.tex' may still be +relevant, and authors intending to distribute their works under any +license are encouraged to read it. + +A Recommendation on Modification Without Distribution +----------------------------------------------------- + +It is wise never to modify a component of the Work, even for your own +personal use, without also meeting the above conditions for +distributing the modified component. While you might intend that such +modifications will never be distributed, often this will happen by +accident -- you may forget that you have modified that component; or +it may not occur to you when allowing others to access the modified +version that you are thus distributing it and violating the conditions +of this license in ways that could have legal implications and, worse, +cause problems for the community. It is therefore usually in your +best interest to keep your copy of the Work identical with the public +one. Many works provide ways to control the behavior of that work +without altering any of its licensed components. + +How to Use This License +----------------------- + +To use this license, place in each of the components of your work both +an explicit copyright notice including your name and the year the work +was authored and/or last substantially modified. Include also a +statement that the distribution and/or modification of that +component is constrained by the conditions in this license. + +Here is an example of such a notice and statement: + + %% pig.dtx + %% Copyright 2005 M. Y. Name + % + % This work may be distributed and/or modified under the + % conditions of the LaTeX Project Public License, either version 1.3 + % of this license or (at your option) any later version. + % The latest version of this license is in + % http://www.latex-project.org/lppl.txt + % and version 1.3 or later is part of all distributions of LaTeX + % version 2005/12/01 or later. + % + % This work has the LPPL maintenance status `maintained'. + % + % The Current Maintainer of this work is M. Y. Name. + % + % This work consists of the files pig.dtx and pig.ins + % and the derived file pig.sty. + +Given such a notice and statement in a file, the conditions +given in this license document would apply, with the `Work' referring +to the three files `pig.dtx', `pig.ins', and `pig.sty' (the last being +generated from `pig.dtx' using `pig.ins'), the `Base Interpreter' +referring to any `LaTeX-Format', and both `Copyright Holder' and +`Current Maintainer' referring to the person `M. Y. Name'. + +If you do not want the Maintenance section of LPPL to apply to your +Work, change `maintained' above into `author-maintained'. +However, we recommend that you use `maintained', as the Maintenance +section was added in order to ensure that your Work remains useful to +the community even when you can no longer maintain and support it +yourself. + +Derived Works That Are Not Replacements +--------------------------------------- + +Several clauses of the LPPL specify means to provide reliability and +stability for the user community. They therefore concern themselves +with the case that a Derived Work is intended to be used as a +(compatible or incompatible) replacement of the original Work. If +this is not the case (e.g., if a few lines of code are reused for a +completely different task), then clauses 6b and 6d shall not apply. + + +Important Recommendations +------------------------- + + Defining What Constitutes the Work + + The LPPL requires that distributions of the Work contain all the + files of the Work. It is therefore important that you provide a + way for the licensee to determine which files constitute the Work. + This could, for example, be achieved by explicitly listing all the + files of the Work near the copyright notice of each file or by + using a line such as: + + % This work consists of all files listed in manifest.txt. + + in that place. In the absence of an unequivocal list it might be + impossible for the licensee to determine what is considered by you + to comprise the Work and, in such a case, the licensee would be + entitled to make reasonable conjectures as to which files comprise + the Work. + +---- + +Copyright (c) 1992-2005 Free Software Foundation, Inc. + +As a special exception to the GNU General Public License, if you +distribute this file as part of a program that contains a +configuration script generated by Autoconf, you may include it under +the same distribution terms that you use for the rest of that +program. +---- + +Copyright (c) 2002 Extreme! Lab, Indiana University + +Indiana University Extreme! Lab Software License Version 1.1.1 + +Copyright (c) 2002 Extreme! Lab, Indiana University. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +3. The end-user documentation included with the redistribution, if any, must include the following acknowledgment: + +"This product includes software developed by the Indiana University Extreme! Lab (http://www.extreme.indiana.edu/)." + +Alternately, this acknowledgment may appear in the software itself, if and wherever such third-party acknowledgments normally appear. + +4. The names "Indiana University" and "Indiana University Extreme! Lab" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact (http://www.extreme.indiana.edu/). + +5. Products derived from this software may not use "Indiana University" name nor may "Indiana University" appear in their name, without prior written permission of the Indiana University. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS, COPYRIGHT HOLDERS OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +---- + +Portions (c) International Organization + +Permission to copy in any form is granted for use with +conforming SGML systems and applications as defined in +ISO 8879, provided this notice is included in all copies. + +---- + +Copyright (c) 2002-2007 OASIS Open + +Oasis WS Security Specification License + +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. +---- + +This OGC work (including software, documents, or other related items) is being +provided by the copyright holders under the following license. By obtaining, +using and/or copying this work, you (the licensee) agree that you have read, +understood, and will comply with the following terms and conditions: + +Permission to use, copy, and modify this software and its documentation, with or +without modification, for any purpose and without fee or royalty is hereby +granted, provided that you include the following on ALL copies of the software +and documentation or portions thereof, including modifications, that you make: + +1. The full text of this NOTICE in a location viewable to users of the +redistributed or derivative work. + +2. Notice of any changes or modifications to the OGC files, including the date +changes were made. (We recommend you provide URIs to the location from which the +code is derived.) + +THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE +NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT +THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY +PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. + +COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION. + +The name and trademarks of copyright holders may NOT be used in advertising or +publicity pertaining to the software without specific, written prior permission. +Title to copyright in this software and any associated documentation will at all +times remain with copyright holders. +---- + +(c) 2003-2011 LAMP/EPFL +Copyright (c) $year Lightbend Inc. +Copyright (c) 2009-2022 Lightbend Inc. +Copyright (c) 2009-2022 Lightbend Inc. +Copyright 2008 Google Inc. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Code generated by the Protocol Buffer compiler is owned by the owner +of the input file used when generating it. This code is not +standalone and requires a support library to be linked with it. This +support library is itself covered by the above license. +---- + +Java(TM) Development Kit (JDK(TM)) ("Specification") +Version: 1.1.8 +Status: FCS + +Copyright 2002 Sun Microsystems, Inc. +4150 Network Circle, Santa Clara, California 95054, U.S.A +All rights reserved. + +NOTICE; LIMITED LICENSE GRANTS + +Sun Microsystems, Inc. ("Sun") hereby grants you a fully-paid, non-exclusive, non-transferable, worldwide, limited license (without the right to sublicense), under the Sun's applicable intellectual property rights to view, download, use and reproduce the Specification only for the purpose of internal evaluation, which shall be understood to include developing applications intended to run on an implementation of the Specification provided that such applications do not themselves implement any portion(s) of the Specification. + +Sun also grants you a perpetual, non-exclusive, worldwide, fully paid-up, royalty free, limited license (without the right to sublicense) under any applicable copyrights or patent rights it may have in the Specification to create and/or distribute an Independent Implementation of the Specification that: (i) fully implements the Spec(s) including all its required interfaces and functionality; (ii) does not modify, subset, superset or otherwise extend the Licensor Name Space, or include any public or protected packages, classes, Java interfaces, fields or methods within the Licensor Name Space other than those required/authorized by the Specification or Specifications being implemented; and (iii) passes the TCK (including satisfying the requirements of the applicable TCK Users Guide) for such Specification. The foregoing license is expressly conditioned on your not acting outside its scope. No license is granted hereunder for any other purpose. + +You need not include limitations (i)-(iii) from the previous paragraph or any other particular "pass through" requirements in any license You grant concerning the use of your Independent Implementation or products derived from it. However, except with respect to implementations of the Specification (and products derived from them) that satisfy limitations (i)-(iii) from the previous paragraph, You may neither: (a) grant or otherwise pass through to your licensees any licenses under Sun's applicable intellectual property rights; nor (b) authorize your licensees to make any claims concerning their implementation's compliance with the Spec in question. + +For the purposes of this Agreement: "Independent Implementation" shall mean an implementation of the Specification that neither derives from any of Sun's source code or binary code materials nor, except with an appropriate and separate license from Sun, includes any of Sun's source code or binary code materials; and "Licensor Name Space" shall mean the public class or interface declarations whose names begin with "java", "javax", "com.sun" or their equivalents in any subsequent naming convention adopted by Sun through the Java Community Process, or any recognized successors or replacements thereof. + +This Agreement will terminate immediately without notice from Sun if you fail to comply with any material provision of or act outside the scope of the licenses granted above. + +TRADEMARKS + +No right, title, or interest in or to any trademarks, service marks, or trade names of Sun or Sun's licensors is granted hereunder. Sun, Sun Microsystems, the Sun logo, Java, J2SE, JDK, and the Java Coffee Cup logo are trademarks or registered trademarks of Sun Microsystems, Inc. in the U.S. and other countries. + +DISCLAIMER OF WARRANTIES + +THE SPECIFICATION IS PROVIDED "AS IS". SUN MAKES NO REPRESENTATIONS OR WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT, THAT THE CONTENTS OF THE SPECIFICATION ARE SUITABLE FOR ANY PURPOSE OR THAT ANY PRACTICE OR IMPLEMENTATION OF SUCH CONTENTS WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADE SECRETS OR OTHER RIGHTS. This document does not represent any commitment to release or implement any portion of the Specification in any product. + +THE SPECIFICATION COULD INCLUDE TECHNICAL INACCURACIES OR TYPOGRAPHICAL ERRORS. CHANGES ARE PERIODICALLY ADDED TO THE INFORMATION THEREIN; THESE CHANGES WILL BE INCORPORATED INTO NEW VERSIONS OF THE SPECIFICATION, IF ANY. SUN MAY MAKE IMPROVEMENTS AND/OR CHANGES TO THE PRODUCT(S) AND/OR THE PROGRAM(S) DESCRIBED IN THE SPECIFICATION AT ANY TIME. Any use of such changes in the Specification will be governed by the then-current license for the applicable version of the Specification. + +LIMITATION OF LIABILITY + +TO THE EXTENT NOT PROHIBITED BY LAW, IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY DAMAGES, INCLUDING WITHOUT LIMITATION, LOST REVENUE, PROFITS OR DATA, OR FOR SPECIAL, INDIRECT, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF OR RELATED TO ANY FURNISHING, PRACTICING, MODIFYING OR ANY USE OF THE SPECIFICATION, EVEN IF SUN AND/OR ITS LICENSORS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +You will indemnify, hold harmless, and defend Sun and its licensors from any claims arising or resulting from: (i) your use of the Specification; (ii) the use or distribution of your Java application, applet and/or clean room implementation; and/or (iii) any claims that later versions or releases of any Specification furnished to you are incompatible with the Specification provided to you under this license. + +RESTRICTED RIGHTS LEGEND + +U.S. Government: If this Specification is being acquired by or on behalf of the U.S. Government or by a U.S. Government prime contractor or subcontractor (at any tier), then the Government's rights in the Software and accompanying documentation shall be only as set forth in this license; this is in accordance with 48 C.F.R. 227.7201 through 227.7202-4 (for Department of Defense (DoD) acquisitions) and with 48 C.F.R. 2.101 and 12.212 (for non-DoD acquisitions). + +REPORT + +You may wish to report any ambiguities, inconsistencies or inaccuracies you may find in connection with your use of the Specification ("Feedback"). To the extent that you provide Sun with any Feedback, you hereby: (i) agree that such Feedback is provided on a non-proprietary and non-confidential basis, and (ii) grant Sun a perpetual, non-exclusive, worldwide, fully paid-up, irrevocable license, with the right to sublicense through multiple levels of sublicensees, to incorporate, disclose, and use without limitation the Feedback for any purpose related to the Specification and future versions, implementations, and test suites thereof. +---- + +Copyright (c) 2002-2004 BEA Systems Inc., International Business Machines Corporation, Microsoft Corporation, Inc, SAP AG, and Sun Microsystems, Inc + +WS Addressing Specification License +WS/WS-Addressing.xsd + +Copyright © 2002-2004 BEA Systems Inc., International Business Machines +Corporation, Microsoft Corporation, Inc, SAP AG, and Sun Microsystems, Inc.. All +rights reserved. + +Permission to copy, display, perform, modify and distribute the WS-Addressing +Specification, and to authorize others to do the foregoing, in any medium +without fee or royalty is hereby granted for the purpose of developing and +evaluating the WS-Addressing Specification. + +BEA, IBM, Microsoft, SAP AG, and Sun Microsystems (collectively, the "Authors") +each agree to grant a license to third parties, under royalty-free and otherwise +reasonable, non-discriminatory terms and conditions, to their respective +essential patent claims that they deem necessary to implement the WS-Addressing +Specification. + +DISCLAIMERS: + +THE WS-Addressing Specification IS PROVIDED "AS IS", AND THE AUTHORS MAKE NO +REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED +TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON- +INFRINGEMENT, OR TITLE; THAT THE CONTENTS OF THE WS-Addressing Specification IS +SUITABLE FOR ANY PURPOSE; NOR THAT THE IMPLEMENTATION OF SUCH CONTENTS WILL NOT +INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. + +THE AUTHORS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE WS-Addressing Specification +OR THE PERFORMANCE OR IMPLEMENTATION OF THE CONTENTS THEREOF. + +You may remove these disclaimers from your modified versions of the WS- +Addressing Specification provided that you effectively disclaim all warranties +and liabilities on behalf of all copyright holders in the copies of any such +modified versions you distribute. + +The name and trademarks of the Authors may NOT be used in any manner, including +advertising or publicity pertaining to the WS-Addressing Specification or its +contents without specific, written prior permission. Title to copyright in the +WS-Addressing Specification will at all times remain with the Authors. + +No other rights are granted by implication, estoppel or otherwise. +---- + +(c) 2001-2006 BEA Systems Inc., International Business Machines Corporation, Microsoft Corporation, Inc., SAP AG, Sonic Software, and VeriSign, Inc. + +WS-Policy Specification + +Permission to copy and display the WS-Policy Specification (the "Specification", which includes WSDL and schema documents), in any medium without fee or royalty is hereby granted, provided that you include the following on ALL copies of the WS-Policy Specification, that you make: + +1. A link or URL to the WS-Policy Specification at one of the Authors' websites +2. The copyright notice as shown in the WS-Policy Specification. + +BEA Systems, IBM, Microsoft, SAP, Sonic Software, and VeriSign (collectively, the "Authors") each agree to grant you a license, under royalty-free and otherwise reasonable, non-discriminatory terms and conditions, to their respective essential patent claims that they deem necessary to implement the WS-Policy Specification. + +THE WS-POLICY SPECIFICATION IS PROVIDED "AS IS," AND THE AUTHORS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, OR TITLE; THAT THE CONTENTS OF THE WS-POLICY SPECIFICATION ARE SUITABLE FOR ANY PURPOSE; NOR THAT THE IMPLEMENTATION OF SUCH CONTENTS WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. + +THE AUTHORS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR RELATING TO ANY USE OR DISTRIBUTION OF THE WS-POLICY SPECIFICATION. + +The name and trademarks of the Authors may NOT be used in any manner, including advertising or publicity pertaining to the WS-Policy Specification or its contents without specific, written prior permission. Title to copyright in the WS-Policy Specification will at all times remain with the Authors. + +No other rights are granted by implication, estoppel or otherwise. +---- + +(c) 2002-2005 BEA Systems, IBM, Microsoft Corporation, Inc, and TIBCO Software Inc + +WS-Trust Specification + +Permission to copy and display the WS-Trust Specification (the "Specification", which +includes WSDL and schema documents), in any medium without fee or royalty +is hereby granted, provided that you include the following on ALL copies of the +Specification, that you make: + +1. A link or URL to the Specification at one of the Authors' websites +2. The copyright notice as shown in the Specification. + +IBM, Microsoft and Actional, BEA, Computer Associates, Layer 7, Netegrity, Oblix, +OpenNetwork, Ping Identity, Reactivity, and Verisign (collectively, the "Authors") each +agree to grant you a license, under royalty-free and otherwise reasonable, +non-discriminatory terms and conditions, to their respective essential patent claims +that they deem necessary to implement the Specification. + +THE SPECIFICATION IS PROVIDED "AS IS," AND THE AUTHORS MAKE +NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING, BUT +NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE, NON-INFRINGEMENT, OR TITLE; THAT THE CONTENTS OF +THE SPECIFICATION ARE SUITABLE FOR ANY PURPOSE; NOR THAT THE +IMPLEMENTATION OF SUCH CONTENTS WILL NOT INFRINGE ANY THIRD PARTY +PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. + +THE AUTHORS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, +INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR RELATING TO ANY +USE OR DISTRIBUTION OF THE SPECIFICATION. + +The name and trademarks of the Authors may NOT be used in any manner, +including advertising or publicity pertaining to the Specification or +its contents without specific, written prior permission. Title to +copyright in the Specification will at all times remain with the Authors. + +No other rights are granted by implication, estoppel or otherwise. +---- + +(c) 1996, 2004 Carsten Heinz +(c) 1997 Detlev Droege +(c) 1997 Dominique de Waleffe +(c) 1997 Dominique de Waleffe Extended +(c) 1997 Kai Wollenweber +(c) 1998 Christian Haul +(c) 1998 Detlef Reimers +(c) 1998 Juergen Heim +(c) 1998 Kai Below +(c) 1998 Michael +(c) 1998-1999 Peter Bartke +(c) 1999 Aidan Philip Heerdegen +(c) 1999 Berthold +(c) 1999 Jens T. Berger Thielemann +(c) 1999 Jos e Romildo Malaquias +(c) 1999 Michael Wiese +(c) 1999 Patrick Cousot +(c) 1999 Torben Hoffmann +(c) 2000 Rolf Niepraschk +(c) 2000 Sonja Weidmann +(c) 2000 by Andreas Matthias +(c) 2001 Oliver Baum +(c) 2001 Ralph Becket +(c) 2001-2002 Ulrich G. Wortmann +(c) 2002 Andrew Zabolotny +(c) 2002 Geraint Paul Bevan +(c) 2002 Mark van Eijk +(c) 2002 Martin Brodbeck +(c) 2002 Neil Conway +(c) 2002 Robert Frank +(c) 2002-2003 Jean-Philippe Grivet +(c) 2003 Adam Grabowski +(c) 2003 Cameron H. G. Wright +(c) 2003 Daniel Gazard +(c) 2003 Dirk Jesko +(c) 2003 Jonathan Sauer +(c) 2003 Riccardo Murri +(c) 2004 Brian Christensen +(c) 2004 Martine Gautier +(c) 2004 William Thimbleby +(c) 2004, 2006 Brooks Moses +(c) 2005 Christophe Jorssen +(c) 2006 Christoph Kiefer +(c) 2006 Herbert Voss +(c) 2006 Michael Franke +(c) 2006 Santiago Urue +(c) 2012-2014 GitHub When +(c) 2013 Heiko Oberdiek +(c) 2013 Ignacio D +(c) 2013 Jobst Hoffmann +(c) 2013 Stefan Pinnow +(c) 2013 Stephan Hennig +(c) Andres Becerra Sandoval +(c) Christoph Giess +(c) Gerd Neugebauer +(c) Robert Wenner +(c) Steffen Klupsch +(c) Torsten Neuer +Copyright (c) 1999, 2006 Tanuki Software, Inc. +Copyright (c) 2001 Silver Egg Technology +Copyright (c) 2001-2002 SourceForge ISO-RELAX Project (ASAMI Tomoharu, Daisuke Okajima, Kohsuke Kawaguchi, and MURATA Makoto) +Copyright (c) 2002-2021 EPFL +Copyright (c) 2004 Kohsuke Kawaguchi +Copyright (c) 2004-2011 QOS.ch +Copyright (c) 2004-2015 Permission +Copyright (c) 2009 $ year The Project Lombok Authors +Copyright (c) 2009-2022 The Project Lombok Authors +Copyright (c) 2010 Reinier Zwitserloot +Copyright (c) 2011-2021 Lightbend, Inc. +Copyright (c) 2012 JAPrn Zaefferer +Copyright (c) 2012-2016 University of Washington +Copyright (c) 2013 Greg Allen +Copyright (c) 2013 James Ward +Copyright (c) 2016 Johno Crawford +Copyright (c) 2016-2023 Finnish Digital Agency +Copyright (c) 2017 Harith Elrufaie +Copyright (c) 2017 R. Kempees +Copyright (c) 2017 Sergey Bespalov +Copyright (c) 2019 jacobg, Luke Hutchison +Copyright (c) 2019 mcollovati +Copyright (c) 2019-2021 Luke Hutchison +Copyright (c) 2022 Eclipse Foundation +Copyright (c) 2023 Nordic Institute for Interoperability Solutions (NIIS) +Copyright 2004 present by the Checker Framework +Copyright 2005, 2012 jQuery Foundation, Inc. and other contributors +Copyright 2011 John Resig +Copyright 2011 The Dojo Foundation +Copyright 2011-2018 The Bootstrap Authors +Copyright 2011-2018 Twitter, Inc. +Copyright 2012 jQuery Foundation and other contributors +Copyright 2018-2020 Raffaello Giulietti +Copyright JS Foundation and other contributors, https://js.foundation +copyright 2014 Greg Allen + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +---- + +MOZILLA PUBLIC LICENSE +Version 1.0 + +1. Definitions. + + 1.1. ``Contributor'' means each entity that creates or contributes to the creation of Modifications. + + 1.2. ``Contributor Version'' means the combination of the Original Code, prior Modifications used by a Contributor, and the Modifications made by that particular Contributor. + + 1.3. ``Covered Code'' means the Original Code or Modifications or the combination of the Original Code and Modifications, in each case including portions thereof. + + 1.4. ``Electronic Distribution Mechanism'' means a mechanism generally accepted in the software development community for the electronic transfer of data. + + 1.5. ``Executable'' means Covered Code in any form other than Source Code. + + 1.6. ``Initial Developer'' means the individual or entity identified as the Initial Developer in the Source Code notice required by Exhibit A. + + 1.7. ``Larger Work'' means a work which combines Covered Code or portions thereof with code not governed by the terms of this License. + + 1.8. ``License'' means this document. + + 1.9. ``Modifications'' means any addition to or deletion from the substance or structure of either the Original Code or any previous Modifications. When Covered Code is released as a series of files, a Modification is: + + A. Any addition to or deletion from the contents of a file containing Original Code or previous Modifications. + + B. Any new file that contains any part of the Original Code or previous Modifications. + + 1.10. ``Original Code'' means Source Code of computer software code which is described in the Source Code notice required by Exhibit A as Original Code, and which, at the time of its release under this License is not already Covered Code governed by this License. + + 1.11. ``Source Code'' means the preferred form of the Covered Code for making modifications to it, including all modules it contains, plus any associated interface definition files, scripts used to control compilation and installation of an Executable, or a list of source code differential comparisons against either the Original Code or another well known, available Covered Code of the Contributor's choice. The Source Code can be in a compressed or archival form, provided the appropriate decompression or de-archiving software is widely available for no charge. + + 1.12. ``You'' means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License or a future version of this License issued under Section 6.1. For legal entities, ``You'' includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, ``control'' means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of fifty percent (50%) or more of the outstanding shares or beneficial ownership of such entity. + +2. Source Code License. + + 2.1. The Initial Developer Grant. The Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license, subject to third party intellectual property claims: + + (a) to use, reproduce, modify, display, perform, sublicense and distribute the Original Code (or portions thereof) with or without Modifications, or as part of a Larger Work; and + + (b) under patents now or hereafter owned or controlled by Initial Developer, to make, have made, use and sell (``Utilize'') the Original Code (or portions thereof), but solely to the extent that any such patent is reasonably necessary to enable You to Utilize the Original Code (or portions thereof) and not to any greater extent that may be necessary to Utilize further Modifications or combinations. + + 2.2. Contributor Grant. Each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license, subject to third party intellectual property claims: + + (a) to use, reproduce, modify, display, perform, sublicense and distribute the Modifications created by such Contributor (or portions thereof) either on an unmodified basis, with other Modifications, as Covered Code or as part of a Larger Work; and + + (b) under patents now or hereafter owned or controlled by Contributor, to Utilize the Contributor Version (or portions thereof), but solely to the extent that any such patent is reasonably necessary to enable You to Utilize the Contributor Version (or portions thereof), and not to any greater extent that may be necessary to Utilize further Modifications or combinations. + +3. Distribution Obligations. + + 3.1. Application of License. The Modifications which You create or to which You contribute are governed by the terms of this License, including without limitation Section 2.2. The Source Code version of Covered Code may be distributed only under the terms of this License or a future version of this License released under Section 6.1, and You must include a copy of this License with every copy of the Source Code You distribute. You may not offer or impose any terms on any Source Code version that alters or restricts the applicable version of this License or the recipients' rights hereunder. However, You may include an additional document offering the additional rights described in Section 3.5. + + 3.2. Availability of Source Code. Any Modification which You create or to which You contribute must be made available in Source Code form under the terms of this License either on the same media as an Executable version or via an accepted Electronic Distribution Mechanism to anyone to whom you made an Executable version available; and if made available via Electronic Distribution Mechanism, must remain available for at least twelve (12) months after the date it initially became available, or at least six (6) months after a subsequent version of that particular Modification has been made available to such recipients. You are responsible for ensuring that the Source Code version remains available even if the Electronic Distribution Mechanism is maintained by a third party. + + 3.3. Description of Modifications. You must cause all Covered Code to which you contribute to contain a file documenting the changes You made to create that Covered Code and the date of any change. You must include a prominent statement that the Modification is derived, directly or indirectly, from Original Code provided by the Initial Developer and including the name of the Initial Developer in (a) the Source Code, and (b) in any notice in an Executable version or related documentation in which You describe the origin or ownership of the Covered Code. + + 3.4. Intellectual Property Matters + + (a) Third Party Claims. If You have knowledge that a party claims an intellectual property right in particular functionality or code (or its utilization under this License), you must include a text file with the source code distribution titled ``LEGAL'' which describes the claim and the party making the claim in sufficient detail that a recipient will know whom to contact. If you obtain such knowledge after You make Your Modification available as described in Section 3.2, You shall promptly modify the LEGAL file in all copies You make available thereafter and shall take other steps (such as notifying appropriate mailing lists or newsgroups) reasonably calculated to inform those who received the Covered Code that new knowledge has been obtained. + + (b) Contributor APIs. If Your Modification is an application programming interface and You own or control patents which are reasonably necessary to implement that API, you must also include this information in the LEGAL file. + + 3.5. Required Notices. You must duplicate the notice in Exhibit A in each file of the Source Code, and this License in any documentation for the Source Code, where You describe recipients' rights relating to Covered Code. If You created one or more Modification(s), You may add your name as a Contributor to the notice described in Exhibit A. If it is not possible to put such notice in a particular Source Code file due to its structure, then you must include such notice in a location (such as a relevant directory file) where a user would be likely to look for such a notice. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Code. However, You may do so only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You must make it absolutely clear than any such warranty, support, indemnity or liability obligation is offered by You alone, and You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of warranty, support, indemnity or liability terms You offer. + + 3.6. Distribution of Executable Versions. You may distribute Covered Code in Executable form only if the requirements of Section 3.1-3.5 have been met for that Covered Code, and if You include a notice stating that the Source Code version of the Covered Code is available under the terms of this License, including a description of how and where You have fulfilled the obligations of Section 3.2. The notice must be conspicuously included in any notice in an Executable version, related documentation or collateral in which You describe recipients' rights relating to the Covered Code. You may distribute the Executable version of Covered Code under a license of Your choice, which may contain terms different from this License, provided that You are in compliance with the terms of this License and that the license for the Executable version does not attempt to limit or alter the recipient's rights in the Source Code version from the rights set forth in this License. If You distribute the Executable version under a different license You must make it absolutely clear that any terms which differ from this License are offered by You alone, not by the Initial Developer or any Contributor. You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of any such terms You offer. + + 3.7. Larger Works. You may create a Larger Work by combining Covered Code with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Covered Code. + +4. Inability to Comply Due to Statute or Regulation. + + If it is impossible for You to comply with any of the terms of this License with respect to some or all of the Covered Code due to statute or regulation then You must: (a) comply with the terms of this License to the maximum extent possible; and (b) describe the limitations and the code they affect. Such description must be included in the LEGAL file described in Section 3.4 and must be included with all distributions of the Source Code. Except to the extent prohibited by statute or regulation, such description must be sufficiently detailed for a recipient of ordinary skill to be able to understand it. + +5. Application of this License. + + This License applies to code to which the Initial Developer has attached the notice in Exhibit A, and to related Covered Code. + +6. Versions of the License. + + 6.1. New Versions. Netscape Communications Corporation (``Netscape'') may publish revised and/or new versions of the License from time to time. Each version will be given a distinguishing version number. + + 6.2. Effect of New Versions. Once Covered Code has been published under a particular version of the License, You may always continue to use it under the terms of that version. You may also choose to use such Covered Code under the terms of any subsequent version of the License published by Netscape. No one other than Netscape has the right to modify the terms applicable to Covered Code created under this License. + + 6.3. Derivative Works. If you create or use a modified version of this License (which you may only do in order to apply it to code which is not already Covered Code governed by this License), you must (a) rename Your license so that the phrases ``Mozilla'', ``MOZILLAPL'', ``MOZPL'', ``Netscape'', ``NPL'' or any confusingly similar phrase do not appear anywhere in your license and (b) otherwise make it clear that your version of the license contains terms which differ from the Mozilla Public License and Netscape Public License. (Filling in the name of the Initial Developer, Original Code or Contributor in the notice described in Exhibit A shall not of themselves be deemed to be modifications of this License.) + +7. DISCLAIMER OF WARRANTY. + + COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN ``AS IS'' BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. + +8. TERMINATION. + + This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within 30 days of becoming aware of the breach. All sublicenses to the Covered Code which are properly granted shall survive any termination of this License. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive. + +9. LIMITATION OF LIABILITY. + + UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO YOU OR ANY OTHER PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THAT EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. + +10. U.S. GOVERNMENT END USERS. + + The Covered Code is a ``commercial item,'' as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of ``commercial computer software'' and ``commercial computer software documentation,'' as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Code with only those rights set forth herein. + +11. MISCELLANEOUS. + + This License represents the complete agreement concerning subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed by California law provisions (except to the extent applicable law, if any, provides otherwise), excluding its conflict-of-law provisions. With respect to disputes in which at least one party is a citizen of, or an entity chartered or registered to do business in, the United States of America: (a) unless otherwise agreed in writing, all disputes relating to this License (excepting any dispute relating to intellectual property rights) shall be subject to final and binding arbitration, with the losing party paying all costs of arbitration; (b) any arbitration relating to this Agreement shall be held in Santa Clara County, California, under the auspices of JAMS/EndDispute; and (c) any litigation relating to this Agreement shall be subject to the jurisdiction of the Federal Courts of the Northern District of California, with venue lying in Santa Clara County, California, with the losing party responsible for costs, including without limitation, court costs and reasonable attorneys fees and expenses. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not apply to this License. + +12. RESPONSIBILITY FOR CLAIMS. + + Except in cases where another Contributor has failed to comply with Section 3.4, You are responsible for damages arising, directly or indirectly, out of Your utilization of rights under this License, based on the number of copies of Covered Code you made available, the revenues you received from utilizing such rights, and other relevant factors. You agree to work with affected parties to distribute responsibility on an equitable basis. + +EXHIBIT A. + + ``The contents of this file are subject to the Mozilla Public License Version 1.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.mozilla.org/MPL/ + + Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License. + + The Original Code is . + + The Initial Developer of the Original Code is . Portions created by are Copyright (C) . All Rights Reserved. + + Contributor(s): .'' + +---- + +Copyright (c) 1999-2002 Xerox Corporation +Copyright (c) 2002 Palo Alto Research Center, Incorporated + +MOZILLA PUBLIC LICENSE +Version 1.1 + +1. Definitions. + + 1.0.1. "Commercial Use" means distribution or otherwise making the Covered Code available to a third party. + + 1.1. "Contributor" means each entity that creates or contributes to the creation of Modifications. + + 1.2. "Contributor Version" means the combination of the Original Code, prior Modifications used by a Contributor, and the Modifications made by that particular Contributor. + + 1.3. "Covered Code" means the Original Code or Modifications or the combination of the Original Code and Modifications, in each case including portions thereof. + + 1.4. "Electronic Distribution Mechanism" means a mechanism generally accepted in the software development community for the electronic transfer of data. + + 1.5. "Executable" means Covered Code in any form other than Source Code. + + 1.6. "Initial Developer" means the individual or entity identified as the Initial Developer in the Source Code notice required by Exhibit A. + + 1.7. "Larger Work" means a work which combines Covered Code or portions thereof with code not governed by the terms of this License. + + 1.8. "License" means this document. + + 1.8.1. "Licensable" means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently acquired, any and all of the rights conveyed herein. + + 1.9. "Modifications" means any addition to or deletion from the substance or structure of either the Original Code or any previous Modifications. When Covered Code is released as a series of files, a Modification is: A. Any addition to or deletion from the contents of a file containing Original Code or previous Modifications. + + B. Any new file that contains any part of the Original Code or previous Modifications. + + 1.10. "Original Code" means Source Code of computer software code which is described in the Source Code notice required by Exhibit A as Original Code, and which, at the time of its release under this License is not already Covered Code governed by this License. + + 1.10.1. "Patent Claims" means any patent claim(s), now owned or hereafter acquired, including without limitation, method, process, and apparatus claims, in any patent Licensable by grantor. + + 1.11. "Source Code" means the preferred form of the Covered Code for making modifications to it, including all modules it contains, plus any associated interface definition files, scripts used to control compilation and installation of an Executable, or source code differential comparisons against either the Original Code or another well known, available Covered Code of the Contributor's choice. The Source Code can be in a compressed or archival form, provided the appropriate decompression or de-archiving software is widely available for no charge. + + 1.12. "You" (or "Your") means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License or a future version of this License issued under Section 6.1. For legal entities, "You" includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, "control" means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity. + +2. Source Code License. + + 2.1. The Initial Developer Grant. The Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license, subject to third party intellectual property claims: (a) under intellectual property rights (other than patent or trademark) Licensable by Initial Developer to use, reproduce, modify, display, perform, sublicense and distribute the Original Code (or portions thereof) with or without Modifications, and/or as part of a Larger Work; and + + (b) under Patents Claims infringed by the making, using or selling of Original Code, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Code (or portions thereof). + + (c) the licenses granted in this Section 2.1(a) and (b) are effective on the date Initial Developer first distributes Original Code under the terms of this License. + + (d) Notwithstanding Section 2.1(b) above, no patent license is granted: 1) for code that You delete from the Original Code; 2) separate from the Original Code; or 3) for infringements caused by: i) the modification of the Original Code or ii) the combination of the Original Code with other software or devices. + + 2.2. Contributor Grant. Subject to third party intellectual property claims, each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license + + (a) under intellectual property rights (other than patent or trademark) Licensable by Contributor, to use, reproduce, modify, display, perform, sublicense and distribute the Modifications created by such Contributor (or portions thereof) either on an unmodified basis, with other Modifications, as Covered Code and/or as part of a Larger Work; and + + (b) under Patent Claims infringed by the making, using, or selling of Modifications made by that Contributor either alone and/or in combination with its Contributor Version (or portions of such combination), to make, use, sell, offer for sale, have made, and/or otherwise dispose of: 1) Modifications made by that Contributor (or portions thereof); and 2) the combination of Modifications made by that Contributor with its Contributor Version (or portions of such combination). + + (c) the licenses granted in Sections 2.2(a) and 2.2(b) are effective on the date Contributor first makes Commercial Use of the Covered Code. + + (d) Notwithstanding Section 2.2(b) above, no patent license is granted: 1) for any code that Contributor has deleted from the Contributor Version; 2) separate from the Contributor Version; 3) for infringements caused by: i) third party modifications of Contributor Version or ii) the combination of Modifications made by that Contributor with other software (except as part of the Contributor Version) or other devices; or 4) under Patent Claims infringed by Covered Code in the absence of Modifications made by that Contributor. + +3. Distribution Obligations. + + 3.1. Application of License. The Modifications which You create or to which You contribute are governed by the terms of this License, including without limitation Section 2.2. The Source Code version of Covered Code may be distributed only under the terms of this License or a future version of this License released under Section 6.1, and You must include a copy of this License with every copy of the Source Code You distribute. You may not offer or impose any terms on any Source Code version that alters or restricts the applicable version of this License or the recipients' rights hereunder. However, You may include an additional document offering the additional rights described in Section 3.5. + + 3.2. Availability of Source Code. Any Modification which You create or to which You contribute must be made available in Source Code form under the terms of this License either on the same media as an Executable version or via an accepted Electronic Distribution Mechanism to anyone to whom you made an Executable version available; and if made available via Electronic Distribution Mechanism, must remain available for at least twelve (12) months after the date it initially became available, or at least six (6) months after a subsequent version of that particular Modification has been made available to such recipients. You are responsible for ensuring that the Source Code version remains available even if the Electronic Distribution Mechanism is maintained by a third party. + + 3.3. Description of Modifications. You must cause all Covered Code to which You contribute to contain a file documenting the changes You made to create that Covered Code and the date of any change. You must include a prominent statement that the Modification is derived, directly or indirectly, from Original Code provided by the Initial Developer and including the name of the Initial Developer in (a) the Source Code, and (b) in any notice in an Executable version or related documentation in which You describe the origin or ownership of the Covered Code. + + 3.4. Intellectual Property Matters (a) Third Party Claims. If Contributor has knowledge that a license under a third party's intellectual property rights is required to exercise the rights granted by such Contributor under Sections 2.1 or 2.2, Contributor must include a text file with the Source Code distribution titled "LEGAL" which describes the claim and the party making the claim in sufficient detail that a recipient will know whom to contact. If Contributor obtains such knowledge after the Modification is made available as described in Section 3.2, Contributor shall promptly modify the LEGAL file in all copies Contributor makes available thereafter and shall take other steps (such as notifying appropriate mailing lists or newsgroups) reasonably calculated to inform those who received the Covered Code that new knowledge has been obtained. + + (b) Contributor APIs. If Contributor's Modifications include an application programming interface and Contributor has knowledge of patent licenses which are reasonably necessary to implement that API, Contributor must also include this information in the LEGAL file. + + (c) Representations. Contributor represents that, except as disclosed pursuant to Section 3.4(a) above, Contributor believes that Contributor's Modifications are Contributor's original creation(s) and/or Contributor has sufficient rights to grant the rights conveyed by this License. + + 3.5. Required Notices. You must duplicate the notice in Exhibit A in each file of the Source Code. If it is not possible to put such notice in a particular Source Code file due to its structure, then You must include such notice in a location (such as a relevant directory) where a user would be likely to look for such a notice. If You created one or more Modification(s) You may add your name as a Contributor to the notice described in Exhibit A. You must also duplicate this License in any documentation for the Source Code where You describe recipients' rights or ownership rights relating to Covered Code. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Code. However, You may do so only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You must make it absolutely clear than any such warranty, support, indemnity or liability obligation is offered by You alone, and You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of warranty, support, indemnity or liability terms You offer. + + 3.6. Distribution of Executable Versions. You may distribute Covered Code in Executable form only if the requirements of Section 3.1-3.5 have been met for that Covered Code, and if You include a notice stating that the Source Code version of the Covered Code is available under the terms of this License, including a description of how and where You have fulfilled the obligations of Section 3.2. The notice must be conspicuously included in any notice in an Executable version, related documentation or collateral in which You describe recipients' rights relating to the Covered Code. You may distribute the Executable version of Covered Code or ownership rights under a license of Your choice, which may contain terms different from this License, provided that You are in compliance with the terms of this License and that the license for the Executable version does not attempt to limit or alter the recipient's rights in the Source Code version from the rights set forth in this License. If You distribute the Executable version under a different license You must make it absolutely clear that any terms which differ from this License are offered by You alone, not by the Initial Developer or any Contributor. You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of any such terms You offer. + + 3.7. Larger Works. You may create a Larger Work by combining Covered Code with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Covered Code. + +4. Inability to Comply Due to Statute or Regulation. + + If it is impossible for You to comply with any of the terms of this License with respect to some or all of the Covered Code due to statute, judicial order, or regulation then You must: (a) comply with the terms of this License to the maximum extent possible; and (b) describe the limitations and the code they affect. Such description must be included in the LEGAL file described in Section 3.4 and must be included with all distributions of the Source Code. Except to the extent prohibited by statute or regulation, such description must be sufficiently detailed for a recipient of ordinary skill to be able to understand it. + +5. Application of this License. + + This License applies to code to which the Initial Developer has attached the notice in Exhibit A and to related Covered Code. + +6. Versions of the License. + + 6.1. New Versions. Netscape Communications Corporation ("Netscape") may publish revised and/or new versions of the License from time to time. Each version will be given a distinguishing version number. + + 6.2. Effect of New Versions. Once Covered Code has been published under a particular version of the License, You may always continue to use it under the terms of that version. You may also choose to use such Covered Code under the terms of any subsequent version of the License published by Netscape. No one other than Netscape has the right to modify the terms applicable to Covered Code created under this License. + + 6.3. Derivative Works. If You create or use a modified version of this License (which you may only do in order to apply it to code which is not already Covered Code governed by this License), You must (a) rename Your license so that the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape", "MPL", "NPL" or any confusingly similar phrase do not appear in your license (except to note that your license differs from this License) and (b) otherwise make it clear that Your version of the license contains terms which differ from the Mozilla Public License and Netscape Public License. (Filling in the name of the Initial Developer, Original Code or Contributor in the notice described in Exhibit A shall not of themselves be deemed to be modifications of this License.) + +7. DISCLAIMER OF WARRANTY. + + COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. + +8. TERMINATION. + + 8.1. This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within 30 days of becoming aware of the breach. All sublicenses to the Covered Code which are properly granted shall survive any termination of this License. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive. + + 8.2. If You initiate litigation by asserting a patent infringement claim (excluding declatory judgment actions) against Initial Developer or a Contributor (the Initial Developer or Contributor against whom You file such action is referred to as "Participant") alleging that: + + (a) such Participant's Contributor Version directly or indirectly infringes any patent, then any and all rights granted by such Participant to You under Sections 2.1 and/or 2.2 of this License shall, upon 60 days notice from Participant terminate prospectively, unless if within 60 days after receipt of notice You either: (i) agree in writing to pay Participant a mutually agreeable reasonable royalty for Your past and future use of Modifications made by such Participant, or (ii) withdraw Your litigation claim with respect to the Contributor Version against such Participant. If within 60 days of notice, a reasonable royalty and payment arrangement are not mutually agreed upon in writing by the parties or the litigation claim is not withdrawn, the rights granted by Participant to You under Sections 2.1 and/or 2.2 automatically terminate at the expiration of the 60 day notice period specified above. + + (b) any software, hardware, or device, other than such Participant's Contributor Version, directly or indirectly infringes any patent, then any rights granted to You by such Participant under Sections 2.1(b) and 2.2(b) are revoked effective as of the date You first made, used, sold, distributed, or had made, Modifications made by that Participant. + + 8.3. If You assert a patent infringement claim against Participant alleging that such Participant's Contributor Version directly or indirectly infringes any patent where such claim is resolved (such as by license or settlement) prior to the initiation of patent infringement litigation, then the reasonable value of the licenses granted by such Participant under Sections 2.1 or 2.2 shall be taken into account in determining the amount or value of any payment or license. + + 8.4. In the event of termination under Sections 8.1 or 8.2 above, all end user license agreements (excluding distributors and resellers) which have been validly granted by You or any distributor hereunder prior to termination shall survive termination. + +9. LIMITATION OF LIABILITY. + + UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. + +10. U.S. GOVERNMENT END USERS. + + The Covered Code is a "commercial item," as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer software" and "commercial computer software documentation," as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Code with only those rights set forth herein. + +11. MISCELLANEOUS. + + This License represents the complete agreement concerning subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed by California law provisions (except to the extent applicable law, if any, provides otherwise), excluding its conflict-of-law provisions. With respect to disputes in which at least one party is a citizen of, or an entity chartered or registered to do business in the United States of America, any litigation relating to this License shall be subject to the jurisdiction of the Federal Courts of the Northern District of California, with venue lying in Santa Clara County, California, with the losing party responsible for costs, including without limitation, court costs and reasonable attorneys' fees and expenses. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not apply to this License. + +12. RESPONSIBILITY FOR CLAIMS. + + As between Initial Developer and the Contributors, each party is responsible for claims and damages arising, directly or indirectly, out of its utilization of rights under this License and You agree to work with Initial Developer and Contributors to distribute such responsibility on an equitable basis. Nothing herein is intended or shall be deemed to constitute any admission of liability. + +13. MULTIPLE-LICENSED CODE. + + Initial Developer may designate portions of the Covered Code as "Multiple-Licensed". "Multiple-Licensed" means that the Initial Developer permits you to utilize portions of the Covered Code under Your choice of the NPL or the alternative licenses, if any, specified by the Initial Developer in the file described in Exhibit A. + +EXHIBIT A -Mozilla Public License. + + ``The contents of this file are subject to the Mozilla Public License Version 1.1 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.mozilla.org/MPL/ + + Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License. + + The Original Code is . + + The Initial Developer of the Original Code is . Portions created by are Copyright (C) . All Rights Reserved. + + Contributor(s): . + + Alternatively, the contents of this file may be used under the terms of the license (the "[ ] License"), in which case the provisions of [ ] License are applicable instead of those above. If you wish to allow use of your version of this file only under the terms of the [ ] License and not to allow others to use your version of this file under the MPL, indicate your decision by deleting the provisions above and replace them with the notice and other provisions required by the [ ] License. If you do not delete the provisions above, a recipient may use your version of this file under either the MPL or the [ ] License." + + [NOTE: The text of this Exhibit A may differ slightly from the text of the notices in the Source Code files of the Original Code. You should use the text of this Exhibit A rather than the text found in the Original Code Source Code for Your Modifications.] + +---- + +Copyright (c) 1999, 2006 Tanuki Software Inc. +Copyright 2004-2022 H2 Group. Multiple-Licensed + +Mozilla Public License Version 2.0 +================================== + +1. Definitions +-------------- + +1.1. "Contributor" + means each individual or legal entity that creates, contributes to + the creation of, or owns Covered Software. + +1.2. "Contributor Version" + means the combination of the Contributions of others (if any) used + by a Contributor and that particular Contributor's Contribution. + +1.3. "Contribution" + means Covered Software of a particular Contributor. + +1.4. "Covered Software" + means Source Code Form to which the initial Contributor has attached + the notice in Exhibit A, the Executable Form of such Source Code + Form, and Modifications of such Source Code Form, in each case + including portions thereof. + +1.5. "Incompatible With Secondary Licenses" + means + + (a) that the initial Contributor has attached the notice described + in Exhibit B to the Covered Software; or + + (b) that the Covered Software was made available under the terms of + version 1.1 or earlier of the License, but not also under the + terms of a Secondary License. + +1.6. "Executable Form" + means any form of the work other than Source Code Form. + +1.7. "Larger Work" + means a work that combines Covered Software with other material, in + a separate file or files, that is not Covered Software. + +1.8. "License" + means this document. + +1.9. "Licensable" + means having the right to grant, to the maximum extent possible, + whether at the time of the initial grant or subsequently, any and + all of the rights conveyed by this License. + +1.10. "Modifications" + means any of the following: + + (a) any file in Source Code Form that results from an addition to, + deletion from, or modification of the contents of Covered + Software; or + + (b) any new file in Source Code Form that contains any Covered + Software. + +1.11. "Patent Claims" of a Contributor + means any patent claim(s), including without limitation, method, + process, and apparatus claims, in any patent Licensable by such + Contributor that would be infringed, but for the grant of the + License, by the making, using, selling, offering for sale, having + made, import, or transfer of either its Contributions or its + Contributor Version. + +1.12. "Secondary License" + means either the GNU General Public License, Version 2.0, the GNU + Lesser General Public License, Version 2.1, the GNU Affero General + Public License, Version 3.0, or any later versions of those + licenses. + +1.13. "Source Code Form" + means the form of the work preferred for making modifications. + +1.14. "You" (or "Your") + means an individual or a legal entity exercising rights under this + License. For legal entities, "You" includes any entity that + controls, is controlled by, or is under common control with You. For + purposes of this definition, "control" means (a) the power, direct + or indirect, to cause the direction or management of such entity, + whether by contract or otherwise, or (b) ownership of more than + fifty percent (50%) of the outstanding shares or beneficial + ownership of such entity. + +2. License Grants and Conditions +-------------------------------- + +2.1. Grants + +Each Contributor hereby grants You a world-wide, royalty-free, +non-exclusive license: + +(a) under intellectual property rights (other than patent or trademark) + Licensable by such Contributor to use, reproduce, make available, + modify, display, perform, distribute, and otherwise exploit its + Contributions, either on an unmodified basis, with Modifications, or + as part of a Larger Work; and + +(b) under Patent Claims of such Contributor to make, use, sell, offer + for sale, have made, import, and otherwise transfer either its + Contributions or its Contributor Version. + +2.2. Effective Date + +The licenses granted in Section 2.1 with respect to any Contribution +become effective for each Contribution on the date the Contributor first +distributes such Contribution. + +2.3. Limitations on Grant Scope + +The licenses granted in this Section 2 are the only rights granted under +this License. No additional rights or licenses will be implied from the +distribution or licensing of Covered Software under this License. +Notwithstanding Section 2.1(b) above, no patent license is granted by a +Contributor: + +(a) for any code that a Contributor has removed from Covered Software; + or + +(b) for infringements caused by: (i) Your and any other third party's + modifications of Covered Software, or (ii) the combination of its + Contributions with other software (except as part of its Contributor + Version); or + +(c) under Patent Claims infringed by Covered Software in the absence of + its Contributions. + +This License does not grant any rights in the trademarks, service marks, +or logos of any Contributor (except as may be necessary to comply with +the notice requirements in Section 3.4). + +2.4. Subsequent Licenses + +No Contributor makes additional grants as a result of Your choice to +distribute the Covered Software under a subsequent version of this +License (see Section 10.2) or under the terms of a Secondary License (if +permitted under the terms of Section 3.3). + +2.5. Representation + +Each Contributor represents that the Contributor believes its +Contributions are its original creation(s) or it has sufficient rights +to grant the rights to its Contributions conveyed by this License. + +2.6. Fair Use + +This License is not intended to limit any rights You have under +applicable copyright doctrines of fair use, fair dealing, or other +equivalents. + +2.7. Conditions + +Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted +in Section 2.1. + +3. Responsibilities +------------------- + +3.1. Distribution of Source Form + +All distribution of Covered Software in Source Code Form, including any +Modifications that You create or to which You contribute, must be under +the terms of this License. You must inform recipients that the Source +Code Form of the Covered Software is governed by the terms of this +License, and how they can obtain a copy of this License. You may not +attempt to alter or restrict the recipients' rights in the Source Code +Form. + +3.2. Distribution of Executable Form + +If You distribute Covered Software in Executable Form then: + +(a) such Covered Software must also be made available in Source Code + Form, as described in Section 3.1, and You must inform recipients of + the Executable Form how they can obtain a copy of such Source Code + Form by reasonable means in a timely manner, at a charge no more + than the cost of distribution to the recipient; and + +(b) You may distribute such Executable Form under the terms of this + License, or sublicense it under different terms, provided that the + license for the Executable Form does not attempt to limit or alter + the recipients' rights in the Source Code Form under this License. + +3.3. Distribution of a Larger Work + +You may create and distribute a Larger Work under terms of Your choice, +provided that You also comply with the requirements of this License for +the Covered Software. If the Larger Work is a combination of Covered +Software with a work governed by one or more Secondary Licenses, and the +Covered Software is not Incompatible With Secondary Licenses, this +License permits You to additionally distribute such Covered Software +under the terms of such Secondary License(s), so that the recipient of +the Larger Work may, at their option, further distribute the Covered +Software under the terms of either this License or such Secondary +License(s). + +3.4. Notices + +You may not remove or alter the substance of any license notices +(including copyright notices, patent notices, disclaimers of warranty, +or limitations of liability) contained within the Source Code Form of +the Covered Software, except that You may alter any license notices to +the extent required to remedy known factual inaccuracies. + +3.5. Application of Additional Terms + +You may choose to offer, and to charge a fee for, warranty, support, +indemnity or liability obligations to one or more recipients of Covered +Software. However, You may do so only on Your own behalf, and not on +behalf of any Contributor. You must make it absolutely clear that any +such warranty, support, indemnity, or liability obligation is offered by +You alone, and You hereby agree to indemnify every Contributor for any +liability incurred by such Contributor as a result of warranty, support, +indemnity or liability terms You offer. You may include additional +disclaimers of warranty and limitations of liability specific to any +jurisdiction. + +4. Inability to Comply Due to Statute or Regulation +--------------------------------------------------- + +If it is impossible for You to comply with any of the terms of this +License with respect to some or all of the Covered Software due to +statute, judicial order, or regulation then You must: (a) comply with +the terms of this License to the maximum extent possible; and (b) +describe the limitations and the code they affect. Such description must +be placed in a text file included with all distributions of the Covered +Software under this License. Except to the extent prohibited by statute +or regulation, such description must be sufficiently detailed for a +recipient of ordinary skill to be able to understand it. + +5. Termination +-------------- + +5.1. The rights granted under this License will terminate automatically +if You fail to comply with any of its terms. However, if You become +compliant, then the rights granted under this License from a particular +Contributor are reinstated (a) provisionally, unless and until such +Contributor explicitly and finally terminates Your grants, and (b) on an +ongoing basis, if such Contributor fails to notify You of the +non-compliance by some reasonable means prior to 60 days after You have +come back into compliance. Moreover, Your grants from a particular +Contributor are reinstated on an ongoing basis if such Contributor +notifies You of the non-compliance by some reasonable means, this is the +first time You have received notice of non-compliance with this License +from such Contributor, and You become compliant prior to 30 days after +Your receipt of the notice. + +5.2. If You initiate litigation against any entity by asserting a patent +infringement claim (excluding declaratory judgment actions, +counter-claims, and cross-claims) alleging that a Contributor Version +directly or indirectly infringes any patent, then the rights granted to +You by any and all Contributors for the Covered Software under Section +2.1 of this License shall terminate. + +5.3. In the event of termination under Sections 5.1 or 5.2 above, all +end user license agreements (excluding distributors and resellers) which +have been validly granted by You or Your distributors under this License +prior to termination shall survive termination. + +************************************************************************ +* * +* 6. Disclaimer of Warranty * +* ------------------------- * +* * +* Covered Software is provided under this License on an "as is" * +* basis, without warranty of any kind, either expressed, implied, or * +* statutory, including, without limitation, warranties that the * +* Covered Software is free of defects, merchantable, fit for a * +* particular purpose or non-infringing. The entire risk as to the * +* quality and performance of the Covered Software is with You. * +* Should any Covered Software prove defective in any respect, You * +* (not any Contributor) assume the cost of any necessary servicing, * +* repair, or correction. This disclaimer of warranty constitutes an * +* essential part of this License. No use of any Covered Software is * +* authorized under this License except under this disclaimer. * +* * +************************************************************************ + +************************************************************************ +* * +* 7. Limitation of Liability * +* -------------------------- * +* * +* Under no circumstances and under no legal theory, whether tort * +* (including negligence), contract, or otherwise, shall any * +* Contributor, or anyone who distributes Covered Software as * +* permitted above, be liable to You for any direct, indirect, * +* special, incidental, or consequential damages of any character * +* including, without limitation, damages for lost profits, loss of * +* goodwill, work stoppage, computer failure or malfunction, or any * +* and all other commercial damages or losses, even if such party * +* shall have been informed of the possibility of such damages. This * +* limitation of liability shall not apply to liability for death or * +* personal injury resulting from such party's negligence to the * +* extent applicable law prohibits such limitation. Some * +* jurisdictions do not allow the exclusion or limitation of * +* incidental or consequential damages, so this exclusion and * +* limitation may not apply to You. * +* * +************************************************************************ + +8. Litigation +------------- + +Any litigation relating to this License may be brought only in the +courts of a jurisdiction where the defendant maintains its principal +place of business and such litigation shall be governed by laws of that +jurisdiction, without reference to its conflict-of-law provisions. +Nothing in this Section shall prevent a party's ability to bring +cross-claims or counter-claims. + +9. Miscellaneous +---------------- + +This License represents the complete agreement concerning the subject +matter hereof. If any provision of this License is held to be +unenforceable, such provision shall be reformed only to the extent +necessary to make it enforceable. Any law or regulation which provides +that the language of a contract shall be construed against the drafter +shall not be used to construe this License against a Contributor. + +10. Versions of the License +--------------------------- + +10.1. New Versions + +Mozilla Foundation is the license steward. Except as provided in Section +10.3, no one other than the license steward has the right to modify or +publish new versions of this License. Each version will be given a +distinguishing version number. + +10.2. Effect of New Versions + +You may distribute the Covered Software under the terms of the version +of the License under which You originally received the Covered Software, +or under the terms of any subsequent version published by the license +steward. + +10.3. Modified Versions + +If you create software not governed by this License, and you want to +create a new license for such software, you may create and use a +modified version of this License if you rename the license and remove +any references to the name of the license steward (except to note that +such modified license differs from this License). + +10.4. Distributing Source Code Form that is Incompatible With Secondary +Licenses + +If You choose to distribute Source Code Form that is Incompatible With +Secondary Licenses under the terms of this version of the License, the +notice described in Exhibit B of this License must be attached. + +Exhibit A - Source Code Form License Notice +------------------------------------------- + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. + +If it is not possible or desirable to put the notice in a particular +file, then You may include the notice in a location (such as a LICENSE +file in a relevant directory) where a recipient would be likely to look +for such a notice. + +You may add additional accurate notices of copyright ownership. + +Exhibit B - "Incompatible With Secondary Licenses" Notice +--------------------------------------------------------- + + This Source Code Form is "Incompatible With Secondary Licenses", as + defined by the Mozilla Public License, v. 2.0. + +---- + +Microsoft Public License (Ms-PL) + +This license governs use of the accompanying software. If you use the software, +you accept this license. If you do not accept the license, do not use the +software. + +1. Definitions + +The terms "reproduce," "reproduction," "derivative works," and "distribution" +have the same meaning here as under U.S. copyright law. + +A "contribution" is the original software, or any additions or changes to the +software. + +A "contributor" is any person that distributes its contribution under this +license. + +"Licensed patents" are a contributor's patent claims that read directly on its +contribution. + +2. Grant of Rights + +(A) Copyright Grant- Subject to the terms of this license, including the license +conditions and limitations in section 3, each contributor grants you a non- +exclusive, worldwide, royalty-free copyright license to reproduce its +contribution, prepare derivative works of its contribution, and distribute its +contribution or any derivative works that you create. + +(B) Patent Grant- Subject to the terms of this license, including the license +conditions and limitations in section 3, each contributor grants you a non- +exclusive, worldwide, royalty-free license under its licensed patents to make, +have made, use, sell, offer for sale, import, and/or otherwise dispose of its +contribution in the software or derivative works of the contribution in the +software. + +3. Conditions and Limitations + +(A) No Trademark License- This license does not grant you rights to use any +contributors' name, logo, or trademarks. + +(B) If you bring a patent claim against any contributor over patents that you +claim are infringed by the software, your patent license from such contributor +to the software ends automatically. + +(C) If you distribute any portion of the software, you must retain all +copyright, patent, trademark, and attribution notices that are present in the +software. + +(D) If you distribute any portion of the software in source code form, you may +do so only under this license by including a complete copy of this license with +your distribution. If you distribute any portion of the software in compiled or +object code form, you may only do so under a license that complies with this +license. + +(E) The software is licensed "as-is." You bear the risk of using it. The +contributors give no express warranties, guarantees, or conditions. You may have +additional consumer rights under your local laws which this license cannot +change. To the extent permitted under your local laws, the contributors exclude +the implied warranties of merchantability, fitness for a particular purpose and +non-infringement. + +---- + +Copyright 1991 by the Massachusetts Institute of Technology + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and +that both that copyright notice and this permission notice appear in +supporting documentation, and that the name of the authors not be +used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. The authors +makes no representations about the suitability of this software for any +purpose. It is provided "as is" without express or implied warranty. + +---- + +Noweb is protected by copyright. It is not public-domain +software or shareware, and it is not protected by a ``copyleft'' +agreement like the one used by the Free Software Foundation. + +Noweb is available free for any use in any field of endeavor. You may +redistribute noweb in whole or in part provided you acknowledge its +source and include this COPYRIGHT file. You may modify noweb and +create derived works, provided you retain this copyright notice, but +the result may not be called noweb without my written consent. + +You may sell noweb if you wish. For example, you may sell a CD-ROM +including noweb. + +You may sell a derived work, provided that all source code for your +derived work is available, at no additional charge, to anyone who buys +your derived work in any form. You must give permisson for said +source code to be used and modified under the terms of this license. +You must state clearly that your work uses or is based on noweb and +that noweb is available free of change. You must also request that +bug reports on your work be reported to you. + +---- + +(c) 2012-2014 GitHub +(c) 2012-2014 GitHub When + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. + +---- + +The OpenLDAP Public License + Version 2.8, 17 August 2003 + +Redistribution and use of this software and associated documentation +("Software"), with or without modification, are permitted provided +that the following conditions are met: + +1. Redistributions in source form must retain copyright statements + and notices, + +2. Redistributions in binary form must reproduce applicable copyright + statements and notices, this list of conditions, and the following + disclaimer in the documentation and/or other materials provided + with the distribution, and + +3. Redistributions must contain a verbatim copy of this document. + +The OpenLDAP Foundation may revise this license from time to time. +Each revision is distinguished by a version number. You may use +this Software under terms of this license revision or under the +terms of any subsequent revision of the license. + +THIS SOFTWARE IS PROVIDED BY THE OPENLDAP FOUNDATION AND ITS +CONTRIBUTORS ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, +INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT +SHALL THE OPENLDAP FOUNDATION, ITS CONTRIBUTORS, OR THE AUTHOR(S) +OR OWNER(S) OF THE SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + +The names of the authors and copyright holders must not be used in +advertising or otherwise to promote the sale, use or other dealing +in this Software without specific, written prior permission. Title +to copyright in this Software shall at all times remain with copyright +holders. + +OpenLDAP is a registered trademark of the OpenLDAP Foundation. + +Copyright 1999-2003 The OpenLDAP Foundation, Redwood City, +California, USA. All Rights Reserved. Permission to copy and +distribute verbatim copies of this document is granted. + +---- + +copyright 1996, 2004 Carsten Heinz +copyright 2006-2007 Brooks Moses + +LICENSE ISSUES + ============== + + The OpenSSL toolkit stays under a dual license, i.e. both the conditions of + the OpenSSL License and the original SSLeay license apply to the toolkit. + See below for the actual license texts. Actually both licenses are BSD-style + Open Source licenses. In case of any license issues related to OpenSSL + please contact openssl-core@openssl.org. + + OpenSSL License + --------------- + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + +3. All advertising materials mentioning features or use of this + software must display the following acknowledgment: + "This product includes software developed by the OpenSSL Project + for use in the OpenSSL Toolkit. (http://www.openssl.org/)" + +4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to + endorse or promote products derived from this software without + prior written permission. For written permission, please contact + openssl-core@openssl.org. + +5. Products derived from this software may not be called "OpenSSL" + nor may "OpenSSL" appear in their names without prior written + permission of the OpenSSL Project. + +6. Redistributions of any form whatsoever must retain the following + acknowledgment: + "This product includes software developed by the OpenSSL Project + for use in the OpenSSL Toolkit (http://www.openssl.org/)" + +THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY +EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED +OF THE POSSIBILITY OF SUCH DAMAGE. + + +This product includes cryptographic software written by Eric Young +(eay@cryptsoft.com). This product includes software written by Tim +Hudson (tjh@cryptsoft.com). + + + Original SSLeay License + ----------------------- + +Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) +All rights reserved. + +This package is an SSL implementation written +by Eric Young (eay@cryptsoft.com). +The implementation was written so as to conform with Netscapes SSL. + +This library is free for commercial and non-commercial use as long as +the following conditions are aheared to. The following conditions +apply to all code found in this distribution, be it the RC4, RSA, +lhash, DES, etc., code; not just the SSL code. The SSL documentation +included with this distribution is covered by the same copyright terms +except that the holder is Tim Hudson (tjh@cryptsoft.com). + +Copyright remains Eric Young's, and as such any Copyright notices in +the code are not to be removed. +If this package is used in a product, Eric Young should be given attribution +as the author of the parts of the library used. +This can be in the form of a textual message at program startup or +in documentation (online or textual) provided with the package. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. All advertising materials mentioning features or use of this software + must display the following acknowledgement: + "This product includes cryptographic software written by + Eric Young (eay@cryptsoft.com)" + The word 'cryptographic' can be left out if the rouines from the library + being used are not cryptographic related :-). +4. If you include any Windows specific code (or a derivative thereof) from + the apps directory (application code) you must include an acknowledgement: + "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" + +THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +The licence and distribution terms for any publically available version or +derivative of this code cannot be changed. i.e. this code cannot simply be +copied and put under another distribution licence +[including the GNU Public Licence.] + +---- + +Copyright (c) 2006 World Wide Web Consortium +Copyright 2005 ?? World Wide Web Consortium + +By obtaining, using and/or copying this work, you (the licensee) agree that you +have read, understood, and will comply with the following terms and conditions. + +Permission to copy, modify, and distribute this software and its documentation, +with or without modification, for any purpose and without fee or royalty is +hereby granted, provided that you include the following on ALL copies of the +software and documentation or portions thereof, including modifications: + +The full text of this NOTICE in a location viewable to users of the +redistributed or derivative work. + +Any pre-existing intellectual property disclaimers, notices, or terms and +conditions. If none exist, the W3C Software Short Notice should be included +(hypertext is preferred, text is permitted) within the body of any redistributed +or derivative code. + +Notice of any changes or modifications to the files, including the date changes +were made. (We recommend you provide URIs to the location from which the code is +derived.) + +Disclaimers +THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE +NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT +THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY +PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. + +COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION. + +The name and trademarks of copyright holders may NOT be used in advertising or +publicity pertaining to the software without specific, written prior permission. +Title to copyright in this software and any associated documentation will at all +times remain with copyright holders. + +---- + +(c) 2001 W3C (Massachusetts Institute of Technology, Institut National de Recherche en Informatique et en Automatique, Keio University) +Copyright (c) 2001 World Wide Web Consortium, (Massachusetts Institute of Technology, Institut National de Recherche en Informatique et en Automatique, Keio University) +Copyright (c) 2003 W3C(R) (MIT, ERCIM, Keio) +Copyright 2001 Martin Gudgin, Developmentor. http://www.develop.co.uk +Copyright 2001 The Internet Society and W3C (Massachusetts Institute of Technology, Institut National de Recherche en Informatique et en Automatique, Keio University) +Copyright 2001 W3C (Massachusetts Institute of Technology, Institut National de Recherche en Informatique et en Automatique, Keio University) +Portions (c) 2001 DevelopMentor + +W3C® SOFTWARE NOTICE AND LICENSE + +Copyright © 1994-2002 World Wide Web Consortium, (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 W3C work (including software, documents, or other related items) is being +provided by the copyright holders under the following license. By obtaining, +using and/or copying this work, you (the licensee) agree that you have read, +understood, and will comply with the following terms and conditions: + +Permission to use, copy, modify, and distribute this software and its +documentation, with or without modification, for any purpose and without fee or +royalty is hereby granted, provided that you include the following on ALL copies +of the software and documentation or portions thereof, including modifications, +that you make: + +The full text of this NOTICE in a location viewable to users of the +redistributed or derivative work. + +Any pre-existing intellectual property disclaimers, notices, or terms and +conditions. If none exist, a short notice of the following form (hypertext is +preferred, text is permitted) should be used within the body of any +redistributed or derivative code: "Copyright © [$date-of-software] World Wide +Web Consortium, (Massachusetts Institute of Technology, Institut National de +Recherche en Informatique et en Automatique, Keio University). All Rights +Reserved. http://www.w3.org/Consortium/Legal/" + +Notice of any changes or modifications to the W3C files, including the date +changes were made. (We recommend you provide URIs to the location from which the +code is derived.) + +THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE +NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT +THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY +PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. + +COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION. + +The name and trademarks of copyright holders may NOT be used in advertising or +publicity pertaining to the software without specific, written prior permission. +Title to copyright in this software and any associated documentation will at all +times remain with copyright holders. + + +This formulation of W3C's notice and license became active on August 14 1998 so +as to improve compatibility with GPL. This version ensures that W3C software +licensing terms are no more restrictive than GPL and consequently W3C software +may be distributed in GPL packages. See the older formulation for the policy +prior to this date. Please see our Copyright FAQ for common questions about +using materials from our site, including specific terms and conditions for +packages like libwww, Amaya, and Jigsaw. Other questions about this notice can +be directed to site-policy@w3.org. + +---- + +Copyright (c) 2003 The Trustees of Indiana University + +Indiana University Extreme! Lab Software License, Version 1.2 + +Copyright (C) 2004 The Trustees of Indiana University. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +1) All redistributions of source code must retain the above + copyright notice, the list of authors in the original source + code, this list of conditions and the disclaimer listed in this + license; + +2) All redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the disclaimer + listed in this license in the documentation and/or other + materials provided with the distribution; + +3) Any documentation included with all redistributions must include + the following acknowledgement: + + "This product includes software developed by the Indiana + University Extreme! Lab. For further information please visit + http://www.extreme.indiana.edu/" + + Alternatively, this acknowledgment may appear in the software + itself, and wherever such third-party acknowledgments normally + appear. + +4) The name "Indiana University" or "Indiana University + Extreme! Lab" shall not be used to endorse or promote + products derived from this software without prior written + permission from Indiana University. For written permission, + please contact http://www.extreme.indiana.edu/. + +5) Products derived from this software may not use "Indiana + University" name nor may "Indiana University" appear in their name, + without prior written permission of the Indiana University. + +Indiana University provides no reassurances that the source code +provided does not infringe the patent or any other intellectual +property rights of any other entity. Indiana University disclaims any +liability to any recipient for claims brought by any other entity +based on infringement of intellectual property rights or otherwise. + +LICENSEE UNDERSTANDS THAT SOFTWARE IS PROVIDED "AS IS" FOR WHICH +NO WARRANTIES AS TO CAPABILITIES OR ACCURACY ARE MADE. INDIANA +UNIVERSITY GIVES NO WARRANTIES AND MAKES NO REPRESENTATION THAT +SOFTWARE IS FREE OF INFRINGEMENT OF THIRD PARTY PATENT, COPYRIGHT, OR +OTHER PROPRIETARY RIGHTS. INDIANA UNIVERSITY MAKES NO WARRANTIES THAT +SOFTWARE IS FREE FROM "BUGS", "VIRUSES", "TROJAN HORSES", "TRAP +DOORS", "WORMS", OR OTHER HARMFUL CODE. LICENSEE ASSUMES THE ENTIRE +RISK AS TO THE PERFORMANCE OF SOFTWARE AND/OR ASSOCIATED MATERIALS, +AND TO THE PERFORMANCE AND VALIDITY OF INFORMATION GENERATED USING +SOFTWARE. + diff --git a/BUILD.md b/BUILD.md new file mode 100644 index 00000000..01b04a29 --- /dev/null +++ b/BUILD.md @@ -0,0 +1,113 @@ +# Building X-Road Catalog + +## License + +This document is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License. +To view a copy of this license, visit . + +## About + +Developing and building the X-Road Catalog software requires an Ubuntu or a RHEL host. If you are using some other +operating system (e.g. Windows or MacOS), the easiest option is to first install Ubuntu 22.04 or RHEL7 into a virtual +machine. + +**Tools** + +Required for building: +* OpenJDK / JDK version 11 +* Gradle +* Docker + +Recommended for development environment: +* Docker +* [LXD](https://linuxcontainers.org/lxd/) + * For setting up a local X-Road instance. +* Ansible + * For automating the [X-Road ecosystem installation](https://github.com/nordic-institute/X-Road/tree/develop/ansible). + +The development environment should have at least 8GB of memory and 20GB of free disk space (applies to a virtual machine +as well), especially if you set up a local X-Road ecosystem. + +**Prerequisites** + +* Checkout the `x-road-catalog` repository. +* The directory structure should look like this: + + ``` + - + |-- xroad-catalog-collector + |-- xroad-catalog-lister + |-- xroad-catalog-persistence + ``` +* The build scripts assumes the above directory structure. + +## Build X-Road Catalog Collector + +See [xroad-catalog-collector/README.md](xroad-catalog-collector/README.md#build) for details. + +## Build X-Road Catalog Lister + +See [xroad-catalog-lister/README.md](xroad-catalog-lister/README.md#build) for details. + +## Build X-Road Catalog Persistence + +See [xroad-catalog-persistence/README.md](xroad-catalog-persistence/README.md#build) for details. + +## Profiles + +Profiles can be used to configure different features in X-Road Catalog. By default, X-Road Catalog includes four different +profiles: + +* `default` - a profile used for default operation of X-Road Catalog, without any country-specific features. + * The default profile can be set with `spring.profiles.active=`. +* `fi` - an extra profile used in addition to the default profile, which has country-specific (Finland) features, e.g., + fetching additional data from a national business registry. Other country-specific profiles can be added if needed. + * The profile can be set with `spring.profiles.active=fi`. +* `production` - a profile used in the production deployment. + * The profile can be set with `spring.profiles.active=production`. +* `sshtest` - a profile used to test SSH tunneling with X-Road Catalog. + * The profile can be set with `spring.profiles.active=sshtest`. + +Multiple profiles can be activated at the same time by separating them with a comma, e.g., `spring.profiles.active=production,fi`. + +X-Road Catalog supports adding new profiles. For example, new country-specific features should be added by creating a +new country-specific profile. + +### How Profiles Are Used During the Build? + +* First, a Docker image for building the X-Road Catalog rpm packages is built. + * For X-Road Catalog Collector: + ```bash + docker build -t collector-rpm packages/xroad-catalog-collector/docker --build-arg CATALOG_PROFILE=fi + ``` + * For X-Road Catalog Lister: + ```bash + docker build -t lister-rpm packages/xroad-catalog-lister/docker --build-arg CATALOG_PROFILE=fi + ``` +* Profile value is provided to the respective `Dockerfile` with an argument `--build-arg CATALOG_PROFILE=fi`. Then within + the `Dockerfile` an environment variable `CATALOG_PROFILE` is initalized with that profile value. +* A shell script `build_rpm.sh` is run within a Docker container, which takes a `p` (profile) parameter as input, which is read from the environment variable `CATALOG_PROFILE`. +* The shell script `build_rpm.sh` passes on the profile parameter (the script assumes the profile is `default` when no value is given with the `profile` parameter) + to `xroad-catalog-collector.spec` or `xroad-catalog-lister.spec` which configures a prepares the creation Systemd service for X-Road Catalog Collector or X-Road Catalog Lister. +* Within that `.spec` file the catalog profile value will be written to a properties file: + ```bash + echo "CATALOG_PROFILE=%{profile}" >> catalog-profile.properties + ``` +* Then that file will be copied to `/etc/xroad/xroad-catalog` among other properties files. +* In addition, specific db scripts will be run within that `.spec` file according to the value of the `profile`: + ```bash + sudo -u postgres psql --file=/usr/share/xroad/sql/create_tables_%{profile}.sql + ``` +* Finally, the profile value will be read from that properties file: + ```bash + source /etc/xroad/xroad-catalog/catalog-profile.properties + ``` +* Then a Systemd service will be created with the following content: + * For X-Road Catalog Collector: + ```bash + exec ${JAVA_HOME}/bin/java -Xms128m -Xmx2g -Dspring.profiles.active=base,production -Dspring.profiles.include=$CATALOG_PROFILE -jar /usr/lib/xroad-catalog/xroad-catalog-collector.jar --spring.config.location=/etc/xroad/xroad-catalog/ --spring.config.name=collector,catalogdb + ``` + * For X-Road Catalog Lister: + ```bash + exec ${JAVA_HOME}/bin/java -Xms128m -Xmx2g -Dserver.port=8070 -Dspring.profiles.active=production -Dspring.profiles.include=$CATALOG_PROFILE -jar /usr/lib/xroad-catalog/xroad-catalog-lister.jar --spring.config.location=/etc/xroad/xroad-catalog/ --spring.config.name=lister,catalogdb + ``` diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..89e88732 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,128 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, religion, or sexual identity +and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the + overall community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or + advances of any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email + address, without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at +https://www.niis.org/contact. +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series +of actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or +permanent ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within +the community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.0, available at +https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. + +Community Impact Guidelines were inspired by [Mozilla's code of conduct +enforcement ladder](https://github.com/mozilla/diversity). + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see the FAQ at +https://www.contributor-covenant.org/faq. Translations are available at +https://www.contributor-covenant.org/translations. diff --git a/LICENSE.txt b/LICENSE.txt index 662ff71c..13901a52 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,9 +1,22 @@ The MIT License -Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency +Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) +Copyright (c) 2016-2023 Finnish Digital Agency -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/README.md b/README.md index 2f49c642..4021e54d 100644 --- a/README.md +++ b/README.md @@ -1,48 +1,99 @@ +# X-Road Catalog + +[![Go to X-Road Community Slack](https://img.shields.io/badge/Go%20to%20Community%20Slack-grey.svg)](https://jointxroad.slack.com/) +[![Get invited](https://img.shields.io/badge/No%20Slack-Get%20invited-green.svg)](https://x-road.global/community) + ## About the repository -This repository contains information about the X-Road Catalog, source codes, its development, installation and documentation. +This repository contains information about the X-Road Catalog, its source code, development, installation and documentation. ## Introduction to X-Road Catalog -The purpose of this piece of software is to collect information, more specifically members, subsystems and services, from an X-RoadC instance and offer an interface where the information can be read. +X-Road Catalog is an [X-Road](https://github.com/nordic-institute/X-Road/) extension that collects information on +members, subsystems and services from an X-Road ecosystem and provides a REST and SOAP interfaces to access the data. + +X-Road Catalog can be used together with an additional API Catalog component - a web portal that contains descriptions of all the +services available in the ecosystem. The primary purpose of the API Catalog is to provide a user-friendly channel to +search and discover available services. The API Catalog is targeted at both business and technical users. + +When services are connected to X-Road, their service descriptions are published on the Security Server by the Security +Server administrator. The service descriptions can then be accessed using a [service discovery mechanism](https://docs.x-road.global/Protocols/pr-mrest_x-road_service_metadata_protocol_for_rest.html) +provided by X-Road. However, the mechanism is very technical and requires direct access to the Security Server's +messaging interface. Also, getting a list of all services available in the ecosystem would require querying each +Security Server separately. Therefore, a more user-friendly API Catalog is needed. + +X-Road Catalog is used to automate the collection of the service metadata from the Security Servers. In that way, the +descriptions need to be maintained in a single place only, and all the changes in the source are automatically updated +to the API Catalog. Nevertheless, additional metadata must be manually added and maintained on the API Catalog by a service +administrator representing the organisation owning the service. The metadata may include any information related to the +service and its use, e.g., a more detailed description of the data set, terms and conditions, contact information, +pricing information, SLAs, etc. -The software consists of three parts: -- [xroad-catalog-collector](xroad-catalog-collector/README.md) - * Collects information from the X-Road instance (possibly also from external apis) and stores it to the postgresql database. +![X-Road ecosystem overview](img/ecosystem.png) + +## Architecture + +The X-Road Catalog software consists of three modules: + +- [X-Road Catalog Collector](xroad-catalog-collector/README.md) + * Collects information from the X-Road ecosystem (possibly also from external APIs) and stores it to the postgresql database. * Implemented using concurrent Akka actors. -- [xroad-catalog-lister](xroad-catalog-lister/README.md) - * SOAP and REST interfaces that offer information collected by the Collector. - * Can be used as an X-Road service (X-Road headers are in place) -- [xroad-catalog-persistence](xroad-catalog-persistence/README.md) - * Library used to persist and read persisted data. Used by both of the above. +- [X-Road Catalog Lister](xroad-catalog-lister/README.md) + * Provides REST and SOAP interfaces that offer information collected by the Collector. + * Can be used as an X-Road service (X-Road headers are in place). +- [X-Road Catalog Persistence](xroad-catalog-persistence/README.md) + * Library used to persist and read persisted data. Used by the X-Road Catalog Collector and X-Road Catalog Lister modules. -![X-Road Catalog overview](architecture.png) +![X-Road Catalog overview](img/architecture.png) + +## Installation + +**How to build X-Road Catalog?** + +See instructions in [BUILD.md](BUILD.md). + +**How to install and configure X-Road Catalog?** + +See the [X-Road Catalog Installation Guide](doc/xroad_catalog_installation_guide.md). + +**How to use X-Road Catalog?** + +See the [X-Road Catalog User Guide](doc/xroad_catalog_user_guide.md). + +## How to contribute? + +[Sign up](https://id.atlassian.com/signup) for an account and +get access to the [X-Road Service Desk](https://nordic-institute.atlassian.net/servicedesk/customer/portal/4) and +[X-Road Catalog Backlog](https://nordic-institute.atlassian.net/browse/XRDCAT). +Submit a pull request to [X-Road Catalog source code Github repository](https://github.com/nordic-institute/X-Road-Catalog) +or an enhancement request to the [X-Road Service Desk](https://nordic-institute.atlassian.net/servicedesk/customer/portal/4). -## Version management -For versioning, [GitHub Flow](https://guides.github.com/introduction/flow/) is used +When opening a pull request, please provide a signed Contributor Licence Agreement (CLA). More information can be found +[here](https://github.com/nordic-institute/X-Road/blob/develop/CONTRIBUTING.md#legal-notice). -* Anything in the master branch is deployable -* To work on something new, create a branch off from master and given a descriptive name(ie: new-oauth2-scopes) -* Commit to that branch locally and regularly push your work to the same named branch on the server -* When you need feedback or help, or you think the branch is ready for merging, open a pull request -* After someone else has reviewed and signed off on the feature, you can merge it into master -* Once it is merged and pushed to master, you can and should deploy immediately +## Support disclaimer -## Tools -Running the X-Road Catalog software requires Linux (Ubuntu or RHEL). If you are using some other operating system (e.g. Windows or macOS), the easiest option is to first install Ubuntu 20.04 or RHEL 7.0 into a virtual machine. +The following activities, among others, are undertaken by the +[Nordic Institute for Interoperability Solutions (NIIS)](https://www.niis.org/) +with regard to X-Road Catalog: +* management, development, verification, and audit of the source code +* administration of documentation +* administration of business and technical requirements +* conducting development +* developing and implementing principles of licensing and distribution +* providing second-line support for the NIIS members +* international cooperation. -*Required for building* -* OpenJDK / JDK version 11 -* Gradle +[X-Road Technology Partners](https://x-road.global/xroad-technology-partners) are enterprises providing X-Road consultation +services, e.g. deploying independent X-Road instances, developing X-Road extensions and X-Road-compatible services, +integrating informations systems with X-Road etc. -*Recommended for development environment* -* Docker (for deb/rpm packaging) -* LXD (https://linuxcontainers.org/lxd/) - * for setting up a local X-Road instance -* Ansible - * for automating the X-Road instance installation +No support for X-Road Catalog deployment is provided here. -The development environment should have at least 8GB of memory and 20GB of free disk space (applies to a virtual machine as well), especially if you set up a local X-Road instance. +## Credits +* X-Road Catalog was originally developed by the [Finnish Digital Agency](https://dvv.fi/en) during 2016-2023. +* In 2023 it was agreed that [Nordic Institute for Interoperability Solutions (NIIS)](https://www.niis.org/) takes +maintenance responsibility. \ No newline at end of file diff --git a/doc/xroad_catalog_installation_guide.md b/doc/xroad_catalog_installation_guide.md new file mode 100644 index 00000000..27b2dca9 --- /dev/null +++ b/doc/xroad_catalog_installation_guide.md @@ -0,0 +1,310 @@ +# X-Road Catalog Installation Guide +Version: 1.3.0 +Doc. ID: IG-XRDCAT + +--- + +## Version history +| Date | Version | Description | Author | +|------------|---------|-------------------------------------------------------------------------------------------|------------------| +| 22.03.2023 | 1.0.0 | Export installation-related parts from the X-Road Catalog User Guide | Petteri Kivimäki | +| 16.08.2023 | 1.1.0 | Add instructions to install and configure the `xroad-conflient` module | Petteri Kivimäki | +| 09.09.2023 | 1.2.0 | Remove instructions to install the `xroad-conflient` module manually | Petteri Kivimäki | +| 24.09.2023 | 1.3.0 | Add instructions to disable the automatic backup job run by the `xroad-conflient` module | Petteri Kivimäki | + +## Table of Contents + + + + +* [License](#license) +* [1. Introduction](#1-introduction) + * [1.1 Target Audience](#11-target-audience) +* [2. Installation](#2-installation) + * [2.1 Prerequisites to Installation](#21-prerequisites-to-installation) + * [2.2 Deployment Diagram](#22-deployment-diagram) + * [2.3 Setup Package Repository](#23-setup-package-repository) + * [2.4 Installation](#24-installation) + * [2.4.1 Complete the Installation of X-Road Configuration Client](#241-complete-the-installation-of-x-road-configuration-client) + * [2.5 Initial Configuration](#25-initial-configuration) + * [2.6 SSL (optional)](#26-ssl-optional) + * [2.7 Post-Installation Checks](#27-post-installation-checks) + * [2.8 Logs](#28-logs) + + + + +## License + +This document is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/. + +## 1. Introduction + +X-Road Catalog is an [X-Road](https://github.com/nordic-institute/X-Road/) extension that collects information on +members, subsystems and services from an X-Road ecosystem and provides a REST and SOAP interfaces to access the data. + +X-Road Catalog consists of three modules: + +- X-Road Catalog Collector + * Collects information from the X-Road ecosystem and stores it to a database. + * Optionally, can collect information from external APIs too, e.g., a national business registry. +- X-Road Catalog Lister + * Provides REST and SOAP interfaces offering information collected by the collector. + * Can be used as an X-Road service (X-Road headers are in place). +- X-Road Catalog Persistence + * Library used to persist and read persisted data. + * Used by the X-Road Catalog Collector and X-Road Catalog Lister modules. + +### 1.1 Target Audience + +The intended audience of this user guide are X-Road Operators responsible for managing and configuring the X-Road Central +Server and related services. The document is intended for readers with a good knowledge of Linux server management, +computer networks, and the X-Road principles. + +## 2. Installation + +## 2.1 Prerequisites to Installation + +Running X-Road Catalog using available RPM packages requires Red Hat Enterprise Linux (RHEL) +version 8 on a x86-64 platform. The software can be installed both on physical and virtualized hardware. + +The installation requires that the X-Road Catalog Lister is installed on the same host with the [X-Road Configuration +Client](https://docs.x-road.global/Architecture/arc-ss_x-road_security_server_architecture.html#33-xroad-confclient) +(`xroad-confclient`) module. If the X-Road Catalog Lister is not installed on the same host with a Security Server, +the X-Road Configuration Client (`xroad-confclient`) module is installed automatically as an RPM dependency. Also, the +X-Road Catalog Lister must be able to access the `/etc/xroad/globalconf//shared-params.xml` +configuration file. + +## 2.2 Deployment Diagram + +![X-Road Catalog production](../img/xroad_catalog_production.png) + +## 2.3 Setup Package Repository + +Install `yum-utils`, a collection of utilities that integrate with `yum` to extend its native features. + +```bash +sudo yum install yum-utils +``` + +Add X-Road package repository and Extra Packages for Enterprise Linux (EPEL) repository: + +```bash +sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm +sudo yum-config-manager --add-repo https://artifactory.niis.org/xroad-release-rpm/rhel/8/current +``` + +The following packages are fetched from EPEL: `crudini`, and `rlwrap`. + +Add the X-Road repository’s signing key to the list of trusted keys: + +```bash +sudo rpm --import https://artifactory.niis.org/api/gpg/key/public +``` + +## 2.4 Installation + +The installable software consists of `xroad-catalog-collector` and `xroad-catalog-lister` modules. Both are provided +as RPM packages. + +```bash +sudo yum install xroad-catalog-lister.rpm xroad-catalog-collector.rpm +``` + +Instructions on how to build the RPM packages using Docker can be found [here](../BUILD.md). + +## 2.4.1 Complete the Installation of X-Road Configuration Client + +**Note:** The configuration steps described in this section are needed only if the X-Road Catalog Lister is not installed on the +same host with a Security Server + +If the X-Road Catalog Lister is not installed on the same host with a Security Server, the X-Road Configuration Client +(`xroad-confclient`) module is installed automatically as an RPM dependency. In this case, some manual configuration steps +are needed. + +Copy the X-Road ecosystem configuration anchor to `/etc/xroad/configuration-anchor.xml`. Make sure that the `xroad` user +is the owner of the file with sufficient permissions: + +```bash +sudo chown xroad:xroad /etc/xroad/configuration-anchor.xml +sudo chmod 660 /etc/xroad/configuration-anchor.xml +``` + +The Configuration Client is responsible for running the Security Server automatic backup job. When the Configuration +Client isn't installed on the same host with the Security Server, the backup job must be disabled. Disable the backup job +by adding the below configuration in the `/etc/xroad/conf.d/local.ini` configuration file: + +```bash +[configuration-client] +proxy-configuration-backup-cron=* * * * * ? 2099 +``` + +Make sure that the `xroad-confclient` service is enabled on boot and start the service: + +```bash +sudo systemctl enable xroad-confclient +sudo systemctl start xroad-confclient +``` + +The application log of the `xroad-confclient` module is available in `/var/log/xroad/configuration_client.log`. + +## 2.5 Initial Configuration + +Configure the below parameters in `/etc/xroad/xroad-catalog/collector-production.properties`, especially X-Road instance +information and URL of Security Server. + +```properties +xroad-catalog.xroad-instance= +xroad-catalog.member-class= +xroad-catalog.member-code= +xroad-catalog.subsystem-code= +xroad-catalog.security-server-host= +``` + +In addition, configure also parameters related to behaviour of X-Road Catalog Collector: + +```properties +xroad-catalog.flush-log-time-after-hour= +xroad-catalog.flush-log-time-before-hour= +xroad-catalog.error-log-length-in-days= +xroad-catalog.fetch-run-unlimited= +xroad-catalog.fetch-time-after-hour= +xroad-catalog.fetch-time-before-hour= +xroad-catalog.collector-interval-min= +``` + +The parameters are explained in the table below. + +| Parameter | Description | +|-----------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `ERROR_LOGS_FLUSH_IN_DB_TIME_INTERVAL_AFTER` | A parameter for setting the start of time interval during which the error logs in the db will be deleted when those exceed the amount in days set by `ERROR_LOGS_KEPT_IN_DB_LENGTH_IN_DAYS` parameter, e.g. value `18` means starting from `18:00`. | +| `ERROR_LOGS_FLUSH_IN_DB_TIME_INTERVAL_AFTER` | A parameter for setting the start of time interval during which the error logs in the db will be deleted when those exceed the amount in days set by `ERROR_LOGS_KEPT_IN_DB_LENGTH_IN_DAYS` parameter, e.g. value `18` means starting from `18:00`. | +|`ERROR_LOGS_FLUSH_IN_DB_TIME_INTERVAL_BEFORE` | A parameter for setting the end of time interval during which the error logs in the db will be deleted when those exceed the amount in days set by `ERROR_LOGS_KEPT_IN_DB_LENGTH_IN_DAYS` parameter, e.g. value `23` means ending at `23:00`. | +| `ERROR_LOGS_KEPT_IN_DB_LENGTH_IN_DAYS` | A parameter for setting the amount in days for how long the errors logs should be kept in the db, e.g. value `90` means `for 90 days`. | +| `XROAD_CATALOG_COLLECTOR_FETCH_UNLIMITED` | A parameter for setting whether the X-Road Catalog Collector should try to fetch data from Security Server continuously during a day or only between certain hours, e.g. value `true` means `continously`. | +| `XROAD_CATALOG_COLLECTOR_FETCH_INTERVAL_AFTER` | A parameter for setting the start of time interval during which the X-Road Catalog Collector should try to fetch data from Security Server continuously (this parameter will be ignored if the parameter `XROAD_CATALOG_COLLECTOR_FETCH_UNLIMITED` is set to `true`), e.g. value `18` means starting from `18:00`. | +| `XROAD_CATALOG_COLLECTOR_FETCH_INTERVAL_BEFORE` | A parameter for setting the end of time interval during which the X-Road Catalog Collector should try to fetch data from Security Server continuously (this parameter will be ignored if the parameter `XROAD_CATALOG_COLLECTOR_FETCH_UNLIMITED` is set to `true`), e.g. value `23` means ending at `23:00`. | +| `XROAD_CATALOG_COLLECTOR_FETCH_INTERVAL_MINUTES` | A parameter for setting the amount of time in minutes after which the X-Road Catalog Collector should start re-fetching data from Security Server, e.g. value `60` means `every 60 minutes`. | + +In addition, update the `xroad-catalog.shared-params-file` property value in `/etc/xroad/xroad-catalog/lister-production.properties`. +The value must point to the `/etc/xroad/globalconf//shared-params.xml` X-Road global configuration file: + +```properties +xroad-catalog.shared-params-file=/etc/xroad/globalconf//shared-params.xml +``` + +Change also the database password in `/etc/xroad/xroad-catalog/catalogdb-production.properties`: + +```properties +spring.datasource.password=password +``` +And in the DB: +```bash +sudo -u postgres psql -U postgres -d postgres -c "alter user xroad_catalog with password 'password';" +``` + +Make sure that the X-Road Catalog services are enabled on boot and restart services in order to make the changes to have effect: +```bash +sudo systemctl enable postgresql +sudo systemctl enable xroad-catalog-lister +sudo systemctl enable xroad-catalog-collector +sudo systemctl restart xroad-catalog-lister +sudo systemctl restart xroad-catalog-collector +``` + +## 2.6 SSL (optional) + +If secure connection to the Security Server is required, add the server's cert for the JVM trust store. For example: + +```bash +sudo cp cert.pem /etc/pki/ca-trust/source/anchors/ +sudo update-ca-trust extract +``` + +If you don't have the certificate, it can be asked as follows: + +```bash +openssl s_client -showcerts -connect :443 ` placeholder with a real country code): + +```bash +sudo keytool -alias xroad-catalog -genkeypair -keystore /etc/xroad/xroad-catalog/keystore -validity 7300 -keyalg RSA -keysize 2048 -sigalg SHA256withRSA -dname C=,CN=xroad-catalog +keytool -keystore /etc/xroad/xroad-catalog/keystore -exportcert -rfc -alias xroad-catalog > xroad-catalog.cer +``` + +The created `xroad-catalog.cer` file must be added to the Security Server (Through UI: Security Server Clients > SELECT SERVICE > Internal Servers > Internal TLS Certificates > ADD) + +The keystore password can be configured in `/etc/xroad/xroad-catalog/collector-production.properties`. + +```properties +xroad-catalog.ssl-keystore-password=changeit +``` + +## 2.7 Post-Installation Checks + +This instruction expects that `xroad-catalog-collector` and `xroad-catalog-lister` are installed on the same host. It +is also possible to install them on different hosts, but then database settings need to be set for both services. For the +`xroad-catalog-lister` host, the file `/etc/xroad/xroad-catalog/catalogdb-production.properties` must be manually created. + +**X-Road Catalog Collector** + +```bash +sudo systemctl status xroad-catalog-collector +``` +```bash +● xroad-catalog-collector.service - X-Road Catalog Collector + Loaded: loaded (/usr/lib/systemd/system/xroad-catalog-collector.service; disabled; vendor preset: enabled) + Active: active (running) since Thu 2016-04-07 11:00:42 EEST; 3min 11s ago + Main PID: 7298 (java) + CGroup: /system.slice/xroad-catalog-collector.service + └─7298 /bin/java -Dspring.profiles.active=production -jar /usr/lib/xroad-catalog/xroad-catalog-collector.jar -... +Apr 07 11:01:12 ip-172-31-128-199.eu-west-1.compute.internal xroad-catalog-collector[7298]: Hibernate: select subsystem0..._ +Apr 07 11:01:12 ip-172-31-128-199.eu-west-1.compute.internal xroad-catalog-collector[7298]: Hibernate: select wsdls0_.ser... +Apr 07 11:01:12 ip-172-31-128-199.eu-west-1.compute.internal xroad-catalog-collector[7298]: Hibernate: select nextval ('...) +Apr 07 11:01:12 ip-172-31-128-199.eu-west-1.compute.internal xroad-catalog-collector[7298]: Hibernate: insert into wsdl ...) +Apr 07 11:01:12 ip-172-31-128-199.eu-west-1.compute.internal xroad-catalog-collector[7298]: 2016-04-07 11:01:12.211 INF...y +Apr 07 11:01:13 ip-172-31-128-199.eu-west-1.compute.internal xroad-catalog-collector[7298]: Hibernate: select service0_....s +Apr 07 11:01:13 ip-172-31-128-199.eu-west-1.compute.internal xroad-catalog-collector[7298]: Hibernate: select subsystem0..._ +Apr 07 11:01:13 ip-172-31-128-199.eu-west-1.compute.internal xroad-catalog-collector[7298]: Hibernate: select wsdls0_.ser... +Apr 07 11:01:13 ip-172-31-128-199.eu-west-1.compute.internal xroad-catalog-collector[7298]: Hibernate: update wsdl set d...? +Apr 07 11:01:13 ip-172-31-128-199.eu-west-1.compute.internal xroad-catalog-collector[7298]: 2016-04-07 11:01:13.766 INF...y +Hint: Some lines were ellipsized, use -l to show in full. +``` + +**X-Road Catalog Lister** + +```bash +sudo systemctl status xroad-catalog-lister +``` +```bash +● xroad-catalog-lister.service - X-Road Catalog Lister + Loaded: loaded (/usr/lib/systemd/system/xroad-catalog-lister.service; enabled; vendor preset: enabled) + Active: active (running) since Thu 2016-04-07 07:06:03 EEST; 3h 58min ago + Main PID: 763 (java) + CGroup: /system.slice/xroad-catalog-lister.service + └─763 /bin/java -Dserver.port=8070 -Dspring.profiles.active=production -jar /usr/lib/xroad-catalog/xroad-catal... +Apr 07 11:01:11 ip-172-31-128-199.eu-west-1.compute.internal xroad-catalog-lister[763]: 2016-04-07 11:01:11.084 DEBUG 76...t +Apr 07 11:01:11 ip-172-31-128-199.eu-west-1.compute.internal xroad-catalog-lister[763]: 2016-04-07 11:01:11.101 DEBUG 76...t +Apr 07 11:01:11 ip-172-31-128-199.eu-west-1.compute.internal xroad-catalog-lister[763]: 2016-04-07 11:01:11.102 DEBUG 76...l +Apr 07 11:01:11 ip-172-31-128-199.eu-west-1.compute.internal xroad-catalog-lister[763]: 2016-04-07 11:01:11.105 DEBUG 76...] +Apr 07 11:01:11 ip-172-31-128-199.eu-west-1.compute.internal xroad-catalog-lister[763]: 2016-04-07 11:01:11.105 INFO 76...s +Apr 07 11:01:11 ip-172-31-128-199.eu-west-1.compute.internal xroad-catalog-lister[763]: 2016-04-07 11:01:11.105 DEBUG 76...y +Apr 07 11:01:11 ip-172-31-128-199.eu-west-1.compute.internal xroad-catalog-lister[763]: 2016-04-07 11:01:11.600 DEBUG 76...] +Apr 07 11:01:11 ip-172-31-128-199.eu-west-1.compute.internal xroad-catalog-lister[763]: 2016-04-07 11:01:11.611 DEBUG 76...] +Apr 07 11:01:11 ip-172-31-128-199.eu-west-1.compute.internal xroad-catalog-lister[763]: 2016-04-07 11:01:11.691 DEBUG 76...t +Apr 07 11:01:11 ip-172-31-128-199.eu-west-1.compute.internal xroad-catalog-lister[763]: 2016-04-07 11:01:11.692 DEBUG 76...t +Hint: Some lines were ellipsized, use -l to show in full. +``` + +## 2.8 Logs + +The application logs of the `xroad-catalog-collector` and `xroad-catalog-lister` can be accessed using the `journalctl` +command: + +```bash +sudo journalctl -fu xroad-catalog-collector --since="2023-08-16 06:00:00" --output=cat +sudo journalctl -fu xroad-catalog-lister --since="2023-08-16 06:00:00" --output=cat +``` diff --git a/doc/xroad_catalog_user_guide.md b/doc/xroad_catalog_user_guide.md new file mode 100644 index 00000000..317d9458 --- /dev/null +++ b/doc/xroad_catalog_user_guide.md @@ -0,0 +1,2485 @@ +# X-Road Catalog User Guide +Version: 4.2.0 +Doc. ID: UG-XRDCAT + +--- + +## Version history +| Date | Version | Description | Author | +|------------|---------|--------------------------------------------------------------------------------|------------------| +| 21.07.2021 | 1.0.0 | Initial draft | Bert Viikmäe | +| 21.07.2021 | 1.0.1 | Add installation section | Bert Viikmäe | +| 22.07.2021 | 1.0.2 | Add X-Road Catalog Collector section | Bert Viikmäe | +| 23.07.2021 | 1.0.3 | Add X-Road Catalog Lister section | Bert Viikmäe | +| 23.07.2021 | 1.0.4 | Add X-Road Catalog Persistence section | Bert Viikmäe | +| 25.08.2021 | 1.0.5 | Add list distinct services endpoint description | Bert Viikmäe | +| 02.09.2021 | 1.0.6 | Add list errors endpoint description | Bert Viikmäe | +| 22.09.2021 | 1.0.7 | Update heartbeat endpoint description | Bert Viikmäe | +| 26.10.2021 | 1.0.8 | Update listErrors endpoint description | Bert Viikmäe | +| 27.10.2021 | 1.1.0 | Add listSecurityServers and listDescriptors endpoint descriptions | Bert Viikmäe | +| 15.12.2021 | 1.1.1 | Update listErrors endpoint description | Bert Viikmäe | +| 08.02.2022 | 1.2.0 | Add getOrganization and getOrganizationChanges endpoint descriptions | Bert Viikmäe | +| 29.07.2022 | 2.0.0 | Substitute since with start and end date parameter and update related chapters | Bert Viikmäe | +| 04.10.2022 | 2.1.0 | Add getRest and getEndpoints descriptions | Bert Viikmäe | +| 15.01.2023 | 3.0.0 | Restructure of the document | Bert Viikmäe | +| 22.03.2023 | 4.0.0 | Split document into X-Road Catalog Installation Guide and User Guide | Petteri Kivimäki | +| 16.08.2023 | 4.1.0 | Update Catalog Lister port number from `8080` to `8070` | Petteri Kivimäki | +| 09.09.2023 | 4.2.0 | Update REST endpoint descriptions | Petteri Kivimäki | + +## Table of Contents + + + + +* [License](#license) +* [1. Introduction](#1-introduction) + * [1.1 Target Audience](#11-target-audience) +* [2. X-Road Catalog Collector](#2-x-road-catalog-collector) +* [3. X-Road Catalog Lister](#3-x-road-catalog-lister) + * [3.1 SOAP endpoints](#31-soap-endpoints) + * [3.1.1 List all members](#311-list-all-members) + * [3.1.2 Retrieve WSDL descriptions](#312-retrieve-wsdl-descriptions) + * [3.1.3 Retrieve OPENAPI descriptions](#313-retrieve-openapi-descriptions) + * [3.1.4 Get service type](#314-get-service-type) + * [3.1.5 Check if member is provider](#315-check-if-member-is-provider) + * [3.1.6 List errors](#316-list-errors) + * [3.1.7 List organizations](#317-list-organizations) + * [3.1.8 List organization changes](#318-list-organization-changes) + * [3.1.9 List companies](#319-list-companies) + * [3.1.10 List company changes](#3110-list-company-changes) + * [3.2 REST endpoints](#32-rest-endpoints) + * [3.2.1 List service statistics](#321-list-service-statistics) + * [3.2.2 List service statistics in CSV format](#322-list-service-statistics-in-csv-format) + * [3.2.3 List services](#323-list-services) + * [3.2.4 List services in CSV format](#324-list-services-in-csv-format) + * [3.2.5 Check heartbeat](#325-check-heartbeat) + * [3.2.6 List distinct service statistics](#326-list-distinct-service-statistics) + * [3.2.7 List errors](#327-list-errors) + * [3.2.8 List Security Servers](#328-list-security-servers) + * [3.2.9 List descriptors](#329-list-descriptors) + * [3.2.10 Get endpoints](#3210-get-endpoints) + * [3.2.11 Get Rest](#3211-get-rest) + * [3.2.12 Get Organization](#3212-get-organization) + * [3.2.13 Get Organization changes](#3213-get-organization-changes) + * [3.2.14 Check organization heartbeat](#3214-check-organization-heartbeat) +* [4. X-Road Catalog Persistence](#4-x-road-catalog-persistence) + + + + +## License + +This document is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/. + +## 1. Introduction + +X-Road Catalog is an [X-Road](https://github.com/nordic-institute/X-Road/) extension that collects information on +members, subsystems and services from an X-Road ecosystem and provides a REST and SOAP interfaces to access the data. + +X-Road Catalog consists of three modules: + +- X-Road Catalog Collector + * Collects information from the X-Road ecosystem and stores it to a database. + * Optionally, can collect information from external APIs too, e.g., a national business registry. +- X-Road Catalog Lister + * Provides REST and SOAP interfaces offering information collected by the collector. + * Can be used as an X-Road service (X-Road headers are in place). +- X-Road Catalog Persistence + * Library used to persist and read persisted data. + * Used by the X-Road Catalog Collector and X-Road Catalog Lister modules. + +### 1.1 Target Audience + +The intended audience of this user guide are X-Road Operators responsible for managing and configuring the X-Road Central +Server and related services. The document is intended for readers with a good knowledge of Linux server management, +computer networks, and the X-Road principles. + +## 2. X-Road Catalog Collector + +The purpose of this module is to collect members, subsystems and services from the X-Road ecosystem and store them to the PostgreSQL database. + +More information about the [X-Road Catalog Collector](../xroad-catalog-collector/README.md) module. + +## 3. X-Road Catalog Lister + +The purpose of this module is to provide a web service which lists all the X-Road members and the services they provide together with service descriptions. + +More information about the [X-Road Catalog Lister](../xroad-catalog-lister/README.md) module. + +### 3.1 SOAP endpoints + +The main SOAP endpoints the module provides with the `default` [profile](../BUILD.md#profiles): + +* `ListMembers` - get a list all the members the Catalog Collector has stored to the db. +* `GetWsdl` - retrieve a WSDL description for a given service. +* `GetOpenAPI` - retrieve an OpenAPI description for a given service. +* `GetServiceType` - retrieve the service type (`SOAP`, `REST` or `OPENAPI3`) for a given service. +* `IsProvider` - check is a given member a service provider. +* `GetErrors` - get a list of errors related to fetching data from different apis and Security Servers. + +In addition, some more SOAP endpoints are provided when the `fi` [profile](../BUILD.md#profiles) is active: + +* `GetOrganizations` - retrieve public organization details. +* `HasOrganizationChanged` - check have the details of a given public organisation changed. +* `GetCompanies` - retrieve private company details. +* `HasCompanyChanged` - check have the details of a given private company changed. + +### 3.1.1 List all members + +In order to list all members and related subsystems and services, a request in XML format has to be sent to the respective SOAP endpoint: + +```bash +curl -k -d @servicerequest.xml --header "Content-Type: text/xml" -X POST http://:8070/ws/ListMembers +``` + +**Note!** Replace the `SERVER_ADDRESS` placeholder with the server address on which the X-Road Catalog Lister is running on, e.g., `localhost`. + +Contents of the example `servicerequest.xml` file: +```xml + + + 4.x + ID11234 + EE1234567890 + + FI + GOV + 1710128-9 + + + FI + GOV + 1710128-9 + SS1 + ListMembers + v1 + + + + + 2020-01-01 + 2022-01-01 + + + +``` + +Contents of the XML response of the request +```xml + + + + 4.x + ID11234 + EE1234567890 + + FI + GOV + 1710128-9 + + + FI + GOV + 1710128-9 + SS1 + ListMembers + v1 + + + + + + + DEV + GOV + 1234 + ACME + + + MANAGEMENT + + + clientReg + + 1584692751893_da8be621-5d6b-4920-91c9-d8c359dddbad + 2020-03-20T10:25:51.892+02:00 + 2020-03-20T10:25:51.892+02:00 + 2020-03-20T12:31:09.188+02:00 + + 2020-03-20T10:25:51.632+02:00 + 2020-03-20T10:25:51.632+02:00 + 2020-03-20T12:31:07.223+02:00 + + + respa.tampere.fi + 2020-03-20T10:25:51.632+02:00 + 2020-03-20T10:25:51.632+02:00 + 2020-03-20T12:31:07.223+02:00 + + + authCertDeletion + + 1584692751942_ab002cbd-bbbd-43c7-a311-b0dc5adf3af1 + 2020-03-20T10:25:51.936+02:00 + 2020-03-20T10:25:51.936+02:00 + 2020-03-20T12:31:09.009+02:00 + + 2020-03-20T10:25:51.632+02:00 + 2020-03-20T10:25:51.632+02:00 + 2020-03-20T12:31:07.223+02:00 + + + clientDeletion + + 1584692751908_5bdde30d-3a5f-42c0-9f45-d884f5810996 + 2020-03-20T10:25:51.906+02:00 + 2020-03-20T10:25:51.906+02:00 + 2020-03-20T12:31:07.383+02:00 + + 2020-03-20T10:25:51.632+02:00 + 2020-03-20T10:25:51.632+02:00 + 2020-03-20T12:31:07.223+02:00 + + + ownerChange + + 1584692751888_07141c5a-bfe0-4c84-b621-e5e4a9db01fa + 2020-03-20T10:25:51.884+02:00 + 2020-03-20T10:25:51.884+02:00 + 2020-03-20T12:31:07.479+02:00 + + 2020-03-20T10:25:51.632+02:00 + 2020-03-20T10:25:51.632+02:00 + 2020-03-20T12:31:07.223+02:00 + + + PetStoreNew + 2020-03-20T10:25:51.632+02:00 + 2020-03-20T10:25:51.632+02:00 + 2020-03-20T12:31:07.223+02:00 + + + 2020-03-20T10:25:51.055+02:00 + 2020-03-20T10:25:51.055+02:00 + 2020-03-20T12:31:01.394+02:00 + + + TEST + + 2020-03-20T10:25:51.055+02:00 + 2020-03-20T10:25:51.055+02:00 + 2020-03-20T12:31:01.394+02:00 + + + 2020-03-20T10:25:51.055+02:00 + 2020-03-20T10:25:51.055+02:00 + 2020-03-20T12:31:01.394+02:00 + + + + + +``` + +The XML response has a `` element with the following structure: + +* `ListMembersResponse` + * `memberList` + * `member` + * `subsystems` + * `subsystem` + * `subsystemCode` + * `services` + * `service` + * `serviceCode` + * `wsdl` (if the given service description is a WSDL description) + * `externalId` + +In addition, each subsystem, service and wsdl contains also fields `created`, `changed`, `fetched` and `removed`, +reflecting the creation, change, fetch and removal (when a subsystem/service/wsdl was fetched by X-Road Catalog Collector to the DB) dates. + +### 3.1.2 Retrieve WSDL descriptions + +In order to retrieve a WSDL service description, a request in XML format has to be sent to the respective SOAP endpoint: + +```bash +curl -k -d @wsdlrequest.xml --header "Content-Type: text/xml" -X POST http://:8070/ws/GetWsdl +``` + +**Note!** Replace the `SERVER_ADDRESS` placeholder with the server address on which the X-Road Catalog Lister is running on, e.g., `localhost`. + +Contents of the example `wsdlrequest.xml` file: +```xml + + + 4.x + ID11234 + EE1234567890 + + FI + GOV + 1710128-9 + + + FI + GOV + 1710128-9 + SS1 + ListMembers + v1 + + + + + 1584692751908_5bdde30d-3a5f-42c0-9f45-d884f5810996 + + + +``` + +In the request, the `externalId` field identifies the WSDL to be retrieved. + +The response of the given request is in XML format, containing the WSDL service description. + +### 3.1.3 Retrieve OPENAPI descriptions + +In order to retrieve an OPENAPI service descriptions, a request in XML format has to be sent to the respective SOAP endpoint: + +```bash +curl -k -d @openapirequest.xml --header "Content-Type: text/xml" -X POST http://:8070/ws/GetOpenAPI +``` + +**Note!** Replace the `SERVER_ADDRESS` placeholder with the server address on which the X-Road Catalog Lister is running on, e.g., `localhost`. + +Contents of the example `openapirequest.xml` file: +```xml + + + 4.x + ID11234 + EE1234567890 + + FI + GOV + 1710128-9 + + + FI + GOV + 1710128-9 + SS1 + ListMembers + v1 + + + + + 1584692752414_504b3ad4-eca3-4b96-8b21-71209225cfc8 + + + +``` + +In the request, the `externalId` field identifies the OPENAPI to be retrieved. + +The response of the given request is in XML format, containing the OPENAPI service description. + +### 3.1.4 Get service type + +In order to retrieve service type information, a request in XML format has to be sent to the respective SOAP endpoint: + +```bash +curl -k -d @GetServiceTypeRequest.xml --header "Content-Type: text/xml" -X POST http://:8070/ws/GetServiceType +``` + +**Note!** Replace the `SERVER_ADDRESS` placeholder with the server address on which the X-Road Catalog Lister is running on, e.g., `localhost`. + +Contents of the example `GetServiceTypeRequest.xml` file: +```xml + + + 4.x + ID11234 + EE1234567890 + + FI + GOV + 1710128-9 + + + FI + GOV + 1710128-9 + SS1 + ListMembers + v1 + + + + + DEV + GOV + 1234 + authCertDeletion + MANAGEMENT + v1 + + + +``` + +The following request fields need to be filled: + +* `xRoadInstance` - X-Road Instance name, e.g. `DEV`. +* `memberClass` - member class, e.g., `GOV`. +* `memberCode` - member code, e.g., `1234`. +* `serviceCode` - service code, e.g., `authCertDeletion`- +* `subsystemCode` - subsystem code, e.g., `MANAGEMENT`. +* `serviceVersion` - service version, e.g., `v1`. + +The XML response has a `` element with the following structure: + +* `GetServiceTypeResponse` + * `type` (values: `REST`/`OPENAPI3`/`WSDL`) + +### 3.1.5 Check if member is provider + +In order to check if a given X-Road member (Security Server) is a provider, a request in XML format has to be sent to the respective SOAP endpoint: + +```bash +curl -k -d @IsProviderRequest.xml --header "Content-Type: text/xml" -X POST http://:8070/ws/IsProvider +``` + +**Note!** Replace the `SERVER_ADDRESS` placeholder with the server address on which the X-Road Catalog Lister is running on, e.g., `localhost`. + +Contents of the example `IsProviderRequest.xml` file: +```xml + + + 4.x + ID11234 + EE1234567890 + + FI + GOV + 1710128-9 + + + FI + GOV + 1710128-9 + SS1 + ListMembers + v1 + + + + + DEV + GOV + 1234 + + + +``` + +The following request fields need to be filled: + +* `xRoadInstance` - X-Road Instance name, e.g., `DEV`. +* `memberClass` - member class, e.g., `GOV`. +* `memberCode` - member code, e.g., `1234`. + +The XML response has a `` element with the following structure: + +* `IsProviderResponse` + * `provider` (values: `true`/`false`) + +### 3.1.6 List errors + +In order to fetch information about errors in the X-Road Catalog, a request in XML format has to be sent to the respective SOAP endpoint: + +```bash +curl -k -d @GetErrorsRequest.xml --header "Content-Type: text/xml" -X POST http://:8070/ws/GetErrors +``` + +**Note!** Replace the `SERVER_ADDRESS` placeholder with the server address on which the X-Road Catalog Lister is running on, e.g., `localhost`. + +Contents of the example `GetErrorsRequest.xml` file: +```xml + + + 4.x + ID11234 + EE1234567890 + + FI + GOV + 1710128-9 + + + FI + GOV + 1710128-9 + SS1 + ListMembers + v1 + + + + + 2020-01-01 + 2022-01-01 + + + +``` +The following request fields need to be filled: + +* `startDateTime` - date after which to list errors, e.g., `2020-01-01`. +* `endDateTime` - date before which to list errors, e.g., `2022-01-01`. + +The XML response has a `` element with the following structure: + +* `GetErrorsResponse` + * `errorLogList` + * `errorLog` + * `message` + * `code` + * `created` + +### 3.1.7 List organizations + +**Note!** Requires the `fi` [profile](../BUILD.md#profiles). + +In order to fetch information about organizations, a request in XML format has to be sent to the respective SOAP endpoint: + +```bash +curl -k -d @GetOrganizationsRequest.xml --header "Content-Type: text/xml" -X POST http://:8070/ws/GetOrganizations +``` + +**Note!** Replace the `SERVER_ADDRESS` placeholder with the server address on which the X-Road Catalog Lister is running on, e.g., `localhost`. + +Contents of the example `GetOrganizationsRequest.xml` file: +```xml + + + 4.x + ID11234 + EE1234567890 + + FI + GOV + 1710128-9 + + + FI + GOV + 1710128-9 + SS1 + ListMembers + v1 + + + + + 0181367-9 + + + +``` + +The following request fields need to be filled: + +* `businessCode` - business code of the searchable organization, e.g., `0181367-9`. + +The XML response has a `` element with the following structure: + +* `GetOrganizationsResponse` + * `organizationList` + * `organization` + * `organizationType` + * `publishingStatus` + * `businessCode` + * `guid` + * `organizationNames` + * `organizationName` + * `language` + * `type` + * `value` + * `created` + * `changed` + * `fetched` + * `removed` + * `organizationDescriptions` + * `organizationDescription` + * `language` + * `type` + * `value` + * `created` + * `changed` + * `fetched` + * `removed` + * `emails` + * `email` + * `language` + * `type` + * `value` + * `created` + * `changed` + * `fetched` + * `removed` + * `phoneNumbers` + * `phoneNumber` + * `language` + * `additionalInformation` + * `serviceChargeType` + * `chargeDescription` + * `prefixNumber` + * `number` + * `isFinnishServiceNumber` + * `created` + * `changed` + * `fetched` + * `removed` + * `webPages` + * `webPage` + * `language` + * `url` + * `value` + * `created` + * `changed` + * `fetched` + * `removed` + * `addresses` + * `address` + * `country` + * `type` + * `subType` + * `streetAddresses` + * `streetAddress` + * `postalCode` + * `latitude` + * `longitude` + * `coordinateState` + * `streets` + * `street` + * `language` + * `value` + * `created` + * `changed` + * `fetched` + * `removed` + * `postOffices` + * `streetAddressPostOffice` + * `language` + * `value` + * `created` + * `changed` + * `fetched` + * `removed` + * `municipalities` + * `streetAddressMunicipality` + * `code` + * `streetAddressMunicipalityNames` + * `streetAddressMunicipalityName` + * `language` + * `value` + * `created` + * `changed` + * `fetched` + * `removed` + * `created` + * `changed` + * `fetched` + * `removed` + * `additionalInformation` + * `streetAddressAdditionalInformation` + * `language` + * `value` + * `created` + * `changed` + * `fetched` + * `removed` + * `created` + * `changed` + * `fetched` + * `removed` + * `created` + * `changed` + * `fetched` + * `removed` + +In addition, most sections also contain fields `created`, `changed`, `fetched` and `removed`, reflecting the creation, +change, fetch and removal (when the respective data was fetched by X-Road Catalog Collector to the DB) dates. + +### 3.1.8 List organization changes + +**Note!** Requires the `fi` [profile](../BUILD.md#profiles). + +In order to fetch information about changed organization fields, a request in XML format has to be sent to the respective SOAP endpoint: + +```bash +curl -k -d @HasOrganizationChangedRequest.xml --header "Content-Type: text/xml" -X POST http://:8070/ws/HasOrganizationChanged +``` + +**Note!** Replace the `SERVER_ADDRESS` placeholder with the server address on which the X-Road Catalog Lister is running on, e.g., `localhost`. + +Contents of the example `HasOrganizationChangedRequest.xml` file: +```xml + + + 4.x + ID11234 + EE1234567890 + + FI + GOV + 1710128-9 + + + FI + GOV + 1710128-9 + SS1 + ListMembers + v1 + + + + + e6b33f11-bb47-496e-98c5-6a736dae6014 + 2020-01-01 + 2022-01-01 + + + +``` + +The following request fields need to be filled: +- `guid` - unique id of the searchable organization, e.g., `e6b33f11-bb47-496e-98c5-6a736dae6014`. +- `startDateTime` - date to check against after which an organization may have changed its field values, e.g., `2020-01-01`. +- `endDateTime` - date to check against before which an organization may have changed its field values, e.g., `2022-01-01`. + +The XML response has a `` element with the following structure: + +* `HasOrganizationChangedResponse` + * `changed` (values: `true`/`false`) + * `changedValueList` + * `changedValue` + * `name` (values: e.g., `OrganizationName`, `Email`, `Address`, etc.) + +### 3.1.9 List companies + +**Note!** Requires the `fi` [profile](../BUILD.md#profiles). + +In order to fetch information about companies, a request in XML format has to be sent to the respective SOAP endpoint: + +```bash +curl -k -d @GetCompaniesRequest.xml --header "Content-Type: text/xml" -X POST http://:8070/ws/GetCompanies +``` + +**Note!** Replace the `SERVER_ADDRESS` placeholder with the server address on which the X-Road Catalog Lister is running on, e.g., `localhost`. + +Contents of the example `GetCompaniesRequest.xml` file: +```xml + + + 4.x + ID11234 + EE1234567890 + + FI + GOV + 1710128-9 + + + FI + GOV + 1710128-9 + SS1 + ListMembers + v1 + + + + + 1710128-9 + + + +``` + +The following request fields need to be filled: +- `businessId` - business code of the searchable organization, e.g., `1710128-9`. + +The XML response has a `` element with the following structure: + +* `GetCompaniesResponse` + * `companyList` + * `company` + * `companyForm` + * `detailsUri` + * `businessId` + * `name` + * `registrationDate` + * `businessAddresses` + * `businessAddress` + * `source` + * `version` + * `careOf` + * `street` + * `postCode` + * `city` + * `language` + * `type` + * `country` + * `registrationDate` + * `created` + * `changed` + * `fetched` + * `removed` + * `businessAuxiliaryNames` + * `businessAuxiliaryName` + * `source` + * `ordering` + * `version` + * `name` + * `language` + * `registrationDate` + * `created` + * `changed` + * `fetched` + * `removed` + * `businessIdChanges` + * `businessIdChange` + * `source` + * `description` + * `reason` + * `changeDate` + * `change` + * `oldBusinessId` + * `newBusinessId` + * `language` + * `created` + * `changed` + * `fetched` + * `removed` + * `businessLines` + * `businessLine` + * `source` + * `ordering` + * `version` + * `name` + * `language` + * `registrationDate` + * `created` + * `changed` + * `fetched` + * `removed` + * `businessNames` + * `businessName` + * `companyId` + * `source` + * `ordering` + * `version` + * `name` + * `language` + * `registrationDate` + * `endDate` + * `created` + * `changed` + * `fetched` + * `removed` + * `companyForms` + * `companyForm` + * `source` + * `version` + * `name` + * `language` + * `type` + * `registrationDate` + * `created` + * `changed` + * `fetched` + * `removed` + * `contactDetails` + * `contactDetail` + * `source` + * `version` + * `language` + * `value` + * `type` + * `registrationDate` + * `created` + * `changed` + * `fetched` + * `languages` + * `language` + * `source` + * `version` + * `name` + * `language` + * `registrationDate` + * `created` + * `changed` + * `fetched` + * `liquidations` + * `liquidation` + * `companyId` + * `source` + * `version` + * `name` + * `language` + * `registrationDate` + * `endDate` + * `created` + * `changed` + * `fetched` + * `removed` + * `registeredEntries` + * `registeredEntry` + * `companyId` + * `description` + * `status` + * `register` + * `language` + * `authority` + * `registrationDate` + * `endDate` + * `created` + * `changed` + * `fetched` + * `removed` + * `registeredOffices` + * `registeredOffice` + * `companyId` + * `source` + * `ordering` + * `version` + * `name` + * `language` + * `registrationDate` + * `endDate` + * `created` + * `changed` + * `fetched` + * `removed` + +### 3.1.10 List company changes + +**Note!** Requires the `fi` [profile](../BUILD.md#profiles). + +In order to fetch information about changed company fields, a request in XML format has to be sent to the respective SOAP endpoint: + +```bash +curl -k -d @HasCompanyChangedRequest.xml --header "Content-Type: text/xml" -X POST http://:8070/ws/HasCompanyChanged +``` + +**Note!** Replace the `SERVER_ADDRESS` placeholder with the server address on which the X-Road Catalog Lister is running on, e.g., `localhost`. + +Contents of the example `HasCompanyChangedRequest.xml` file: +```xml + + + 4.x + ID11234 + EE1234567890 + + FI + GOV + 1710128-9 + + + FI + GOV + 1710128-9 + SS1 + ListMembers + v1 + + + + + 1710128-9 + 2020-01-01 + 2022-01-01 + + + +``` + +The following request fields need to be filled: +- `businessId` - business id of the searchable company, e.g., `1710128-9`. +- `startDateTime` - date to check against after which a company may have changed its field values, e.g., `2020-01-01`. +- `endDateTime` - date to check against before which a company may have changed its field values, e.g., `2022-01-01`. + +The XML response has a `` element with the following structure: + +* `HasCompanyChangedResponse` + * `changed` (values: `true`/`false`) + * `changedValueList` + * `changedValue` + * `name` (values: e.g., `Company`, `ContactDetail`, etc.) + +## 3.2 REST endpoints + +The main endpoints provided by the default [profile](../BUILD.md#profiles): + +* `getServiceStatistics` - request a list of statistics, consisting of numbers of SOAP/REST services over time. +* `getServiceStatisticsCSV` - request a list of statistics in CSV format, consisting of numbers of SOAP/REST services over time. +* `getListOfServices` - request a list of members and related subsystems, services and Security Servers over time. +* `getListOfServicesCSV` - request a list of members and related subsystems, services and Security Servers in CSV format. +* `getDistinctServiceStatistics` - request a list of statistics, consisting of numbers of distinct services over time. +* `listErrors` - list errors for a given member or subsystem, supports pagination. +* `heartbeat` - request the heartbeat of X-Road Catalog. +* `listSecurityServers` - list Security Servers and related information. +* `listDescriptors` - list subsystems. +* `getRest` - request a list of endpoints for a REST type of service. +* `getEndpoints` - request a list of endpoints for a `REST` or `OPENAPI3` type of service. + +In addition, some more REST endpoints are provided when the `fi` [profile](../BUILD.md#profiles) is active: + +* `getOrganization` - list organization/company data. +* `getOrganizationChanges` - request whether given organization/company has some of its details changed. +* `organizationHeartbeat` - request the heartbeat of organization and companies of X-Road Catalog. + + +### 3.2.1 List service statistics + +In order to fetch information about service statistics in the X-Road Catalog, an HTTP request has to be sent to a respective REST endpoint: + +```bash +curl "http://:8070/api/getServiceStatistics?startDate=&endDate=" -H "Content-Type: application/json" +``` + +The required request parameters are: + +* `SERVER_ADDRESS` - the server address on which the X-Road Catalog Lister is running on, e.g., `localhost`. +* `START_DATE` - an optional parameter(a string in format `YYYY-MM-DD`), if not used, today's date will be assumed. +* `END_DATE` - an optional parameter(a string in format `YYYY-MM-DD`), if not used, today's date will be assumed. + +Response in JSON: +```json +{ + "serviceStatisticsList":[ + { + "created": "2022-07-01T00:00:00", + "numberOfSoapServices":0, + "numberOfRestServices":0, + "numberOfOpenApiServices":0 + }, + { + "created": "2022-07-02T00:00:00", + "numberOfSoapServices":0, + "numberOfRestServices":0, + "numberOfOpenApiServices":0 + } + ] +} +``` + +The response has the following fields: + +* `serviceStatisticsList` + * `created` + * `numberOfSoapServices` + * `numberOfRestServices` + * `numberOfOpenApiServices` + +### 3.2.2 List service statistics in CSV format + +In order to fetch information about service statistics in the X-Road Catalog, an HTTP request has to be sent to a respective REST endpoint: + +```bash +curl "http://:8070/api/getServiceStatisticsCSV?startDate=&endDate=" -H "Content-Type: text/csv" --output service_statistics.csv +``` + +The required request parameters are: + +* `SERVER_ADDRESS` - the server address on which the X-Road Catalog Lister is running on, e.g., `localhost`. +* `START_DATE` - an optional parameter(a string in format `YYYY-MM-DD`), if not used, today's date will be assumed. +* `END_DATE` - an optional parameter(a string in format `YYYY-MM-DD`), if not used, today's date will be assumed. + +Response is a file `service_statistics.csv` with the following content: + +```csv +Date,Number of REST services,Number of SOAP services,Number of OpenApi services +2022-07-01T00:00,0,0,0,0 +2022-07-02T00:00,0,0,0,0 +``` + +### 3.2.3 List services + +In order to fetch information about services in the X-Road Catalog, an HTTP request has to be sent to a respective REST endpoint: + +```bash +curl "http://:8070/api/getListOfServices?startDate=&endDate=" -H "Content-Type: application/json" +``` + +The required request parameters are: + +* `SERVER_ADDRESS` - the server address on which the X-Road Catalog Lister is running on, e.g., `localhost`. +* `START_DATE` - an optional parameter(a string in format `YYYY-MM-DD`), if not used, today's date will be assumed. +* `END_DATE` - an optional parameter(a string in format `YYYY-MM-DD`), if not used, today's date will be assumed. + +Response in JSON: + +```json +{ + "memberData":[ + { + "date": "2021-08-24T00:00:00", + "memberDataList":[ + { + "created": "2021-08-24T16:20:26", + "memberClass":"COM", + "memberCode":"222", + "name":"ACME", + "provider":false, + "subsystemList":[ + { + "created": "2022-02-03T14:10:25", + "subsystemCode":"FRUIT", + "active":true, + "serviceList":[ + + ] + } + ], + "xroadInstance":"DEV" + }, + { + "created": "2021-08-24T16:20:26", + "memberClass":"COM", + "memberCode":"12345", + "name":"Company", + "provider":false, + "subsystemList":[ + + ], + "xroadInstance":"DEV" + } + ] + }, + { + "date": "2021-08-25T00:00:00", + "memberDataList":[ + { + "created": "2021-08-24T16:20:26", + "memberClass":"COM", + "memberCode":"222", + "name":"ACME", + "provider":false, + "subsystemList":[ + { + "created": "2021-02-03T14:10:25", + "subsystemCode":"FRUIT", + "active":true, + "serviceList":[ + + ] + } + ], + "xroadInstance":"DEV" + }, + { + "created": "2021-08-24T16:20:26", + "memberClass":"COM", + "memberCode":"12345", + "name":"Company", + "provider":false, + "subsystemList":[ + + ], + "xroadInstance":"DEV" + } + ] + } + ], + "securityServerData":[ + { + "serverCode":"SS1", + "address":"SS1", + "memberClass":"GOV", + "memberCode":"1234", + "xroadInstance":"DEV" + }, + { + "serverCode":"ss4", + "address":"ss4", + "memberClass":"GOV", + "memberCode":"1234", + "xroadInstance":"DEV" + } + ] +} +``` + +The response has the following fields: + +* `memberData` + * `date` + * `memberDataList` + * `created` + * `memberClass` + * `memberCode` + * `name` + * `subsystemList` + * `created` + * `subsystemCode` + * `active` (values: `true`/`false`) + * `serviceList` + * `created` + * `serviceCode` + * `serviceVersion` + * `active` (values: `true`/`false`) + * `xroadInstance` +* `securityServerData` + * `serverCode` + * `address` + * `memberClass` + * `memberCode` + +### 3.2.4 List services in CSV format + +In order to fetch information about services in the X-Road Catalog, an HTTP request has to be sent to a respective REST endpoint: + +```bash +curl "http://:8070/api/getListOfServicesCSV?startDate=&endDate=" -H "Content-Type: text/csv" --output list_of_services.csv +``` + +The required request parameters are: + +* `SERVER_ADDRESS` - the server address on which the X-Road Catalog Lister is running on, e.g., `localhost`. +* `START_DATE` - an optional parameter(a string in format `YYYY-MM-DD`), if not used, today's date will be assumed. +* `END_DATE` - an optional parameter(a string in format `YYYY-MM-DD`), if not used, today's date will be assumed. + +Response is a file `list_of_services.csv` with the following content: + +```csv +Date,XRoad instance,Member class,Member code,Member name,Member created,Subsystem code,Subsystem created,Subsystem active,Service code,Service version,Service created,Service active +2021-08-24T00:00,,,,,,,,,,,, +"",DEV,COM,222,ACME,2021-08-24T16:20:26.830,FRUIT,2022-02-03T14:10:25.712,true,,,, +"",DEV,COM,12345,Company,2021-08-24T16:20:26.830,,,,,,, +2021-08-25T00:00,,,,,,,,,,,, +"",DEV,COM,222,ACME,2021-08-24T16:20:26.830,FRUIT,2022-02-03T14:10:25.712,true,,,, +"",DEV,COM,12345,Company,2021-08-24T16:20:26.830,,,,,,, +"",Security server (SS) info:,,,,,,,,,,, +instance,member class,member code,server code,address,,,,,,,, +DEV,GOV,1234,SS1,SS1,,,,,,,, +DEV,GOV,1234,ss4,ss4,,,,,,,, +``` + +### 3.2.5 Check heartbeat + +In order to fetch X-Road Catalog heartbeat information, an HTTP request has to be sent to a respective REST endpoint: + +```bash +curl "http://:8070/api/heartbeat" -H "Content-Type: application/json" +``` + +The required request parameters are: + +* `SERVER_ADDRESS` - the server address on which the X-Road Catalog Lister is running on, e.g., `localhost`. + +Response in JSON: +```json +{"appWorking":true, + "dbWorking":true, + "appName":"X-Road Catalog Lister", + "appVersion":"1.2.1", + "systemTime":[2021,9,20,10,12,15,132000000], + "lastCollectionData": + {"membersLastFetched":[2021,9,20,10,8,51,380000000], + "subsystemsLastFetched":[2021,9,20,10,8,51,380000000], + "servicesLastFetched":[2021,9,1,15,32,51,123000000], + "wsdlsLastFetched":[2021,9,1,15,32,53,87000000], + "openapisLastFetched":[2020,11,22,22,12,32,202000000] + } +} +``` + +The response has the following fields: + +* `appWorking` +* `dbWorking` +* `appName` +* `appVersion` +* `systemTime` +* `lastCollectionData` + * `membersLastFetched` + * `subsystemsLastFetched` + * `servicesLastFetched` + * `wsdlsLastFetched` + * `openapisLastFetched` + +### 3.2.6 List distinct service statistics + +In order to fetch information about distinct service statistics in the X-Road Catalog, an HTTP request has to be sent to a respective REST endpoint: + +```bash +curl "http://:8070/api/getDistinctServiceStatistics?startDate=&endDate=" -H "Content-Type: application/json" +``` + +The required request parameters are: + +* `SERVER_ADDRESS` - the server address on which the X-Road Catalog Lister is running on, e.g., `localhost`. +* `START_DATE` - an optional parameter(a string in format `YYYY-MM-DD`), if not used, today's date will be assumed. +* `END_DATE` - an optional parameter(a string in format `YYYY-MM-DD`), if not used, today's date will be assumed. + +Response in JSON: +```json +{ + "distinctServiceStatisticsList":[ + { + "created": "2020-11-20T00:00:00", + "numberOfDistinctServices":3 + }, + { + "created": "2020-11-21T00:00:00", + "numberOfDistinctServices":3 + }, + { + "created": "2020-11-22T00:00:00", + "numberOfDistinctServices":3 + }, + { + "created": "2020-11-23T00:00:00", + "numberOfDistinctServices":3 + }, + { + "created": "2020-11-24T00:00:00", + "numberOfDistinctServices":3 + }, + { + "created": "2020-11-25T00:00:00", + "numberOfDistinctServices":3 + }, + { + "created": "2020-11-26T00:00:00", + "numberOfDistinctServices":3 + }, + { + "created": "2020-11-27T00:00:00", + "numberOfDistinctServices":3 + }, + { + "created": "2020-11-28T00:00:00", + "numberOfDistinctServices":3 + }, + { + "created": "2020-11-29T00:00:00", + "numberOfDistinctServices":3 + }, + { + "created": "2020-11-30T00:00:00", + "numberOfDistinctServices":3 + } + ] +} +``` + +The response has the following fields: + +* `serviceStatisticsList` + * `created` + * `numberOfDistinctServices` + +### 3.2.7 List errors + +In order to fetch information about errors during data harvesting in the X-Road Catalog, an HTTP request has to be sent to a respective REST endpoint: + +List errors for a given subsystem: +```bash +curl "http://:8070/api/listErrors////?startDate=&endDate=" -H "Content-Type: application/json" +``` + +List errors for a given member: +```bash +curl "http://:8070/api/listErrors///?startDate=&endDate=" -H "Content-Type: application/json" +``` + +List errors for a given member class: +```bash +curl "http://:8070/api/listErrors//?startDate=&endDate=" -H "Content-Type: application/json" +``` + +List errors for a given instance: +```bash +curl "http://:8070/api/listErrors/?startDate=&endDate=" -H "Content-Type: application/json" +``` + +List errors for all the instances and members: +```bash +curl "http://:8070/api/listErrors?startDate=&endDate=" -H "Content-Type: application/json" +``` + +List errors for a given subsystem with pagination: +```bash +curl "http://:8070/api/listErrors////?startDate=&endDate=&page=&limit=" -H "Content-Type: application/json" +``` + +List errors for a given member with pagination: +```bash +curl "http://:8070/api/listErrors///?startDate=&endDate=&page=&limit=" -H "Content-Type: application/json" +``` + +List errors for a given member class with pagination: +```bash +curl "http://:8070/api/listErrors//?startDate=&endDate=&page=&limit=" -H "Content-Type: application/json" +``` + +List errors for a given instance with pagination: +```bash +curl "http://:8070/api/listErrors/?startDate=&endDate=&page=&limit=" -H "Content-Type: application/json" +``` + +List errors for all the instances and members with pagination: +```bash +curl "http://:8070/api/listErrors?startDate=&endDate=&page=&limit=" -H "Content-Type: application/json" +``` + +Example request: +```bash +curl "http://localhost:8900/api/listErrors/DEV/GOV/1234?startDate=2021-08-24&endDate=2021-08-25&page=0&limit=10" -H "Content-Type: application/json" +``` + +The request parameters are: + +* `SERVER_ADDRESS` - the server address on which the X-Road Catalog Lister is running on, e.g., `localhost`. +* `INSTANCE` - name of X-Road instance, e.g., `DEV`. +* `MEMBER_CLASS` - member class, e.g., `GOV`. +* `MEMBER_CODE` - member code, e.g., `1234`. +* `SUBSYSTEM_CODE` - subsystem code, e.g., `TEST`. +* `START_DATE` - (*optional*) a string in format `YYYY-MM-DD`, if not used, today's date will be assumed. +* `END_DATE` - (*optional*) a string in format `YYYY-MM-DD`, if not used, today's date will be assumed. +* `PAGE_NUMBER` - the number of page of the fetched results. +* `NO_OF_ERRORS_PER_PAGE` - number of errors per fetched page. + +Response in JSON: +```json +{ + "pageNumber":0, + "pageSize":10, + "numberOfPages":2, + "errorLogList":[ + { + "id":38, + "message":"Fetch of REST services failed(url: http://ss3/r1/DEV/GOV/1234/TEST/listMethods): 500 Server Error", + "code":"500", + "created": "2020-08-24T16:21:13", + "memberClass":"GOV", + "memberCode":"1234", + "subsystemCode":"TEST", + "groupCode":"", + "serviceCode":"", + "serviceVersion":null, + "securityCategoryCode":"", + "serverCode":"", + "xroadInstance":"DEV" + }, + { + "id":39, + "message":"Fetch of REST services failed(url: http://ss3/r1/DEV/GOV/1234/TESTCLIENT/listMethods): 500 Server Error", + "code":"500", + "created": "2020-08-24T16:21:13", + "memberClass":"GOV", + "memberCode":"1234", + "subsystemCode":"TESTCLIENT", + "groupCode":"", + "serviceCode":"", + "serviceVersion":null, + "securityCategoryCode":"", + "serverCode":"", + "xroadInstance":"DEV" + }, + { + "id":40, + "message":"Fetch of REST services failed(url: http://ss3/r1/DEV/GOV/1234/MASTER/listMethods): 500 Server Error", + "code":"500", + "created": "2020-08-24T16:21:13", + "memberClass":"GOV", + "memberCode":"1234", + "subsystemCode":"MASTER", + "groupCode":"", + "serviceCode":"", + "serviceVersion":null, + "securityCategoryCode":"", + "serverCode":"", + "xroadInstance":"DEV" + }, + { + "id":41, + "message":"Fetch of REST services failed(url: http://ss3/r1/DEV/GOV/1234/MANAGEMENT/listMethods): 500 Server Error", + "code":"500", + "created": "2020-08-24T16:31:39", + "memberClass":"GOV", + "memberCode":"1234", + "subsystemCode":"MANAGEMENT", + "groupCode":"", + "serviceCode":"", + "serviceVersion":null, + "securityCategoryCode":"", + "serverCode":"", + "xroadInstance":"DEV" + }, + { + "id":42, + "message":"Fetch of REST services failed(url: http://ss3/r1/DEV/GOV/1234/TESTCLIENT/listMethods): 500 Server Error", + "code":"500", + "created": "2020-08-24T16:31:39", + "memberClass":"GOV", + "memberCode":"1234", + "subsystemCode":"TESTCLIENT", + "groupCode":"", + "serviceCode":"", + "serviceVersion":null, + "securityCategoryCode":"", + "serverCode":"", + "xroadInstance":"DEV" + }, + { + "id":43, + "message":"Fetch of REST services failed(url: http://ss3/r1/DEV/GOV/1234/MANAGEMENT/listMethods): 500 Server Error", + "code":"500", + "created": "2020-08-24T16:34:46", + "memberClass":"GOV", + "memberCode":"1234", + "subsystemCode":"MANAGEMENT", + "groupCode":"", + "serviceCode":"", + "serviceVersion":null, + "securityCategoryCode":"", + "serverCode":"", + "xroadInstance":"DEV" + }, + { + "id":44, + "message":"Fetch of REST services failed(url: http://ss3/r1/DEV/GOV/1234/TESTCLIENT/listMethods): 500 Server Error", + "code":"500", + "created": "2020-08-24T16:34:46", + "memberClass":"GOV", + "memberCode":"1234", + "subsystemCode":"TESTCLIENT", + "groupCode":"", + "serviceCode":"", + "serviceVersion":null, + "securityCategoryCode":"", + "serverCode":"", + "xroadInstance":"DEV" + }, + { + "id":45, + "message":"Fetch of REST services failed(url: http://ss3/r1/DEV/GOV/1234/TESTCLIENT/listMethods): 500 Server Error", + "code":"500", + "created": "2020-08-24T16:36:25", + "memberClass":"GOV", + "memberCode":"1234", + "subsystemCode":"TESTCLIENT", + "groupCode":"", + "serviceCode":"", + "serviceVersion":null, + "securityCategoryCode":"", + "serverCode":"", + "xroadInstance":"DEV" + }, + { + "id":46, + "message":"Fetch of REST services failed(url: http://ss3/r1/DEV/GOV/1234/TESTCLIENT/listMethods): 500 Server Error", + "code":"500", + "created": "2020-08-24T16:39:30", + "memberClass":"GOV", + "memberCode":"1234", + "subsystemCode":"TESTCLIENT", + "groupCode":"", + "serviceCode":"", + "serviceVersion":null, + "securityCategoryCode":"", + "serverCode":"", + "xroadInstance":"DEV" + }, + { + "id":47, + "message":"Fetch of REST services failed(url: http://ss1/r1/DEV/GOV/1234/TESTCLIENT/listMethods): 500 Server Error", + "code":"500", + "created": "2020-08-24T16:41:34", + "memberClass":"GOV", + "memberCode":"1234", + "subsystemCode":"TESTCLIENT", + "groupCode":"", + "serviceCode":"", + "serviceVersion":null, + "securityCategoryCode":"", + "serverCode":"", + "xroadInstance":"DEV" + } + ] +} +``` + +The response has the following fields: + +* `pageNumber` +* `pageSize` +* `numberOfPages` +* `errorLogList` + * `id` + * `message` + * `code` + * `created` + * `memberClass` + * `memberCode` + * `subsystemCode` + * `groupCode` + * `serviceCode` + * `serviceVersion` + * `securityCategoryCode` + * `serverCode` + * `xroadInstance` + +### 3.2.8 List Security Servers + +In order to fetch information about Security Servers in the X-Road Catalog, an HTTP request has to be sent to a respective REST endpoint: + +```bash +curl "http://:8070/api/listSecurityServers" -H "Content-Type: application/json" +``` + +The required request parameters are: + +* `SERVER_ADDRESS` - the server address on which the X-Road Catalog Lister is running on, e.g., `localhost`. + +Response: +```json +{ + "securityServerDataList": [ + { + "owner": { + "memberClass": "GOV", + "memberCode": "1234", + "name": "ACME", + "subsystemCode": null + }, + "serverCode": "SS1", + "address": "SS1", + "clients": [ + { + "memberClass": "GOV", + "memberCode": "1234", + "name": "ACME", + "subsystemCode": "MANAGEMENT" + } + ] + }, + { + "owner": { + "memberClass": "GOV", + "memberCode": "1234", + "name": "ACME", + "subsystemCode": null + }, + "serverCode": "ss4", + "address": "ss4", + "clients": [ + { + "memberClass": "GOV", + "memberCode": "1234", + "name": "ACME", + "subsystemCode": "THESUBSYSTEM" + }, + { + "memberClass": "COM", + "memberCode": "222", + "name": "FRUIT", + "subsystemCode": null + } + ] + } + ] +} +``` + +The response has the following fields: + +* `securityServerDataList` + * `owner` + * `memberClass` + * `memberCode` + * `name` + * `subsystemCode` + * `serverCode` + * `address` + * `clients` + * `memberClass` + * `memberCode` + * `name` + * `subsystemCode` + +The **owner** property indicates the owner member of the Security Server + +The **clients** property provides a list of clients using the Security Server, where a client can be considered a member +when their `subsystemCode` is `null`. + + +### 3.2.9 List descriptors + +In order to fetch information about subsystem descriptions in the X-Road Catalog, an HTTP request has to be sent to a respective REST endpoint: + +```bash +curl "http://:8070/api/listDescriptors" -H "Content-Type: application/json" +``` + +The required parameters are: + +* `SERVER_ADDRESS` - the server address on which the X-Road Catalog Lister is running on, e.g., `localhost`. + +Response: + +```json +[ + { + "x_road_instance":"DEV", + "subsystem_name":{ + "et":"Subsystem Name ET", + "en":"Subsystem Name EN" + }, + "email":[ + { + "name":"Firstname Lastname", + "email":"yourname@yourdomain" + } + ], + "member_class":"GOV", + "member_code":"1234", + "member_name":"ACME", + "subsystem_code":"MANAGEMENT" + }, + { + "x_road_instance":"DEV", + "subsystem_name":{ + "et":"Subsystem Name ET", + "en":"Subsystem Name EN" + }, + "email":[ + { + "name":"Firstname Lastname", + "email":"yourname@yourdomain" + } + ], + "member_class":"GOV", + "member_code":"1234", + "member_name":"ACME", + "subsystem_code":"TEST" + } +] +``` + +The response has the following fields: + +A list of: + +* `x_road_instance` +* `member_class` +* `member_code` +* `member_name` +* `subsystem_code` +* `subsystem_name` +* `et` +* `en` + +A list of emails with: + +* `name` +* `email address` + +The **subsystem_name** property indicates a user-friendly name of the subsystem, in addition to the more technical +`subsystem_code` property. In the current implementation, the `subsystem_name` property contains default values, because +X-Road currently does not provide such information, but the fields are still required for the X-Road Metrics to operate +correctly. + +The **email** property is a list consisting of name of a contact person and their e-mail address. +In the current implementation, the property contains default values, because X-Road currently does not provide such +information, but the fields are still required for the X-Road Metrics to operate correctly. + +### 3.2.10 Get endpoints + +In order to fetch information about service endpoints belonging to a specific `OPENAPI3` or `REST` service in the X-Road Catalog, +an HTTP request has to be sent to a respective REST endpoint: + +```bash +curl "http://:8070/api/getEndpoints/////" -H "Content-Type: application/json" +``` + +The required parameters are: + +* `SERVER_ADDRESS` - the server address on which the X-Road Catalog Lister is running on, e.g., `localhost`. +* `INSTANCE` - name of X-Road instance, e.g., `DEV`. +* `MEMBER_CLASS` - member class, e.g., `GOV`. +* `MEMBER_CODE` - member code, e.g., `1234`. +* `SUBSYSTEM_CODE` - subsystem code, e.g., `TEST`. +* `SERVICE_CODE` - service code, e.g., `CATALOG_HEARTBEAT`. + +Example request: +```bash +curl "http://localhost:8070/api/getEndpoints/DEV/GOV/1234/TEST/CATALOG_HEARTBEAT" -H "Content-Type: application/json" +``` + +Response: + +```json +{ + "listOfServices":[ + { + "memberClass":"GOV", + "memberCode":"1234", + "subsystemCode":"TEST", + "serviceCode":"CATALOG_HEARTBEAT", + "serviceVersion":null, + "endpointList":[ + { + "method":"GET", + "path":"/heartbeat" + } + ], + "xroadInstance":"DEV" + } + ] +} +``` + +The response has the following fields: + +* `xroadInstance` +* `memberClass` +* `memberCode` +* `subsystemCode` +* `serviceCode` +* `serviceVersion` +* `endpointList` + * `method` + * `path` + +### 3.2.11 Get Rest + +In order to fetch information about a specific `REST` service in the X-Road Catalog, an HTTP request has to be sent to a respective REST endpoint: + +```bash +curl "http://:8070/api/getRest/////" -H "Content-Type: application/json" +``` + +The required request parameters are: + +* `SERVER_ADDRESS` - the server address on which the X-Road Catalog Lister is running on, e.g., `localhost`. +* `INSTANCE` - name of X-Road instance, e.g., `DEV`. +* `MEMBER_CLASS` - member class, e.g., `GOV`. +* `MEMBER_CODE` - member code, e.g., `1234`. +* `SUBSYSTEM_CODE` - subsystem code, e.g., `TEST`. +* `SERVICE_CODE` - service code, e.g., `CATALOG_HEARTBEAT`. + +Example request: +```bash +curl "http://localhost:8070/api/getRest/DEV/GOV/1234/TEST/CATALOG_HEARTBEAT" -H "Content-Type: application/json" +``` + +Response: + +```json +{ + "listOfServices":[ + { + "memberClass":"GOV", + "memberCode":"1234", + "subsystemCode":"TEST", + "serviceCode":"CATALOG_HEARTBEAT", + "serviceVersion":null, + "endpointList":[ + { + "method":"GET", + "path":"/heartbeat" + } + ], + "xroadInstance":"DEV" + } + ] +} +``` + + +The response has the following fields: + +* `xroadInstance` +* `memberClass` +* `memberCode` +* `subsystemCode` +* `serviceCode` +* `serviceVersion` +* `endpointList` + * `method` + * `path` + +### 3.2.12 Get Organization + +**Note!** Requires the `fi` [profile](../BUILD.md#profiles). + +Request: +```bash +curl "http://:8070/api/getOrganization/" -H "Content-Type: application/json" +``` + +The required request parameters are: + +* `SERVER_ADDRESS` - the server address on which the X-Road Catalog Lister is running on, e.g., `localhost`. +* `BUSINESS_CODE` - businessCode of the organization. + +Example request: +```bash +curl "http://localhost:8070/api/getOrganization/0130729-0" -H "Content-Type: application/json" +``` + +Response: + +```json +{ + "organizationData": { + "businessCode": "0130729-0", + "created": "2021-08-24T16:21:53", + "changed": "2021-08-24T16:21:53", + "fetched": "2022-02-03T13:19:34", + "removed": null, + "organizationType": "Municipality", + "publishingStatus": "Published", + "guid": "37962bfb-07a1-4f07-bad8-2b5c77e85451", + "organizationNames": [ + { + "language": "fi", + "type": "Name", + "value": "Pukkilan kunta", + "created": "2021-08-24T16:21:53", + "changed": "2021-08-24T16:21:53", + "fetched": "2022-02-03T13:19:34", + "removed": null + } + ] + }, + "companyData": null +} +``` + + +The response has the following fields: + +* `organizationData` + * `organizationType` + * `publishingStatus` + * `businessCode` + * `guid` + * `organizationNames` + * `organizationName` + * `language` + * `type` + * `value` + * `created` + * `changed` + * `fetched` + * `removed` + * `organizationDescriptions` + * `organizationDescription` + * `language` + * `type` + * `value` + * `created` + * `changed` + * `fetched` + * `removed` + * `emails` + * `email` + * `language` + * `type` + * `value` + * `created` + * `changed` + * `fetched` + * `removed` + * `phoneNumbers` + * `phoneNumber` + * `language` + * `additionalInformation` + * `serviceChargeType` + * `chargeDescription` + * `prefixNumber` + * `number` + * `isFinnishServiceNumber` + * `created` + * `changed` + * `fetched` + * `removed` + * `webPages` + * `webPage` + * `language` + * `url` + * `value` + * `created` + * `changed` + * `fetched` + * `removed` + * `addresses` + * `address` + * `country` + * `type` + * `subType` + * `streetAddresses` + * `streetAddress` + * `postalCode` + * `latitude` + * `longitude` + * `coordinateState` + * `streets` + * `street` + * `language` + * `value` + * `created` + * `changed` + * `fetched` + * `removed` + * `postOffices` + * `streetAddressPostOffice` + * `language` + * `value` + * `created` + * `changed` + * `fetched` + * `removed` + * `municipalities` + * `streetAddressMunicipality` + * `code` + * `streetAddressMunicipalityNames` + * `streetAddressMunicipalityName` + * `language` + * `value` + * `created` + * `changed` + * `fetched` + * `removed` + * `created` + * `changed` + * `fetched` + * `removed` + * `additionalInformation` + * `streetAddressAdditionalInformation` + * `language` + * `value` + * `created` + * `changed` + * `fetched` + * `removed` + * `created` + * `changed` + * `fetched` + * `removed` + * `created` + * `changed` + * `fetched` + * `removed` +* `companyData` + * `companyForm` + * `detailsUri` + * `businessCode` + * `name` + * `registrationDate` + * `businessAddresses` + * `businessAddress` + * `source` + * `version` + * `careOf` + * `street` + * `postCode` + * `city` + * `language` + * `type` + * `country` + * `registrationDate` + * `created` + * `changed` + * `fetched` + * `removed` + * `businessAuxiliaryNames` + * `businessAuxiliaryName` + * `source` + * `ordering` + * `version` + * `name` + * `language` + * `registrationDate` + * `created` + * `changed` + * `fetched` + * `removed` + * `businessIdChanges` + * `businessIdChange` + * `source` + * `description` + * `reason` + * `changeDate` + * `change` + * `oldBusinessId` + * `newBusinessId` + * `language` + * `created` + * `changed` + * `fetched` + * `removed` + * `businessLines` + * `businessLine` + * `source` + * `ordering` + * `version` + * `name` + * `language` + * `registrationDate` + * `created` + * `changed` + * `fetched` + * `removed` + * `businessNames` + * `businessName` + * `companyId` + * `source` + * `ordering` + * `version` + * `name` + * `language` + * `registrationDate` + * `endDate` + * `created` + * `changed` + * `fetched` + * `removed` + * `companyForms` + * `companyForm` + * `source` + * `version` + * `name` + * `language` + * `type` + * `registrationDate` + * `created` + * `changed` + * `fetched` + * `removed` + * `contactDetails` + * `contactDetail` + * `source` + * `version` + * `language` + * `value` + * `type` + * `registrationDate` + * `created` + * `changed` + * `fetched` + * `languages` + * `language` + * `source` + * `version` + * `name` + * `language` + * `registrationDate` + * `created` + * `changed` + * `fetched` + * `liquidations` + * `liquidation` + * `companyId` + * `source` + * `version` + * `name` + * `language` + * `registrationDate` + * `endDate` + * `created` + * `changed` + * `fetched` + * `removed` + * `registeredEntries` + * `registeredEntry` + * `companyId` + * `description` + * `status` + * `register` + * `language` + * `authority` + * `registrationDate` + * `endDate` + * `created` + * `changed` + * `fetched` + * `removed` + * `registeredOffices` + * `registeredOffice` + * `companyId` + * `source` + * `ordering` + * `version` + * `name` + * `language` + * `registrationDate` + * `endDate` + * `created` + * `changed` + * `fetched` + * `removed` + +The **organizationData** property holds values for different data related to organization fetched from an external API. + +The **companyData** property holds values for different data related to company fetched from another external API in case +the organization with the given `businessCode` was not found among the data retrieved from the first API. + +### 3.2.13 Get Organization changes + +**Note!** Requires the `fi` [profile](../BUILD.md#profiles). + +Request + +```bash +curl "http://:8070/api/getOrganizationChanges/?startDate=&endDate=" -H "Content-Type: application/json" +``` + +The required request parameters are: + +* `SERVER_ADDRESS` - the server address on which the X-Road Catalog Lister is running on, e.g., `localhost`. +* `BUSINESS_CODE` - `businessCode` of the organization. +* `START_DATE` - an optional parameter(a string in format `YYYY-MM-DD`), if not used, today's date will be assumed. +* `END_DATE` - an optional parameter(a string in format `YYYY-MM-DD`), if not used, today's date will be assumed. + +Example request: +```bash +curl "http://localhost:8070/api/getOrganizationChanges/0130729-0?startDate=2021-08-24&endDate=2021-08-25" -H "Content-Type: application/json" +``` + +Response: + +```json +{ + "changed":true, + "changedValueList":[ + { + "name":"Organization" + }, + { + "name":"OrganizationName" + }, + { + "name":"OrganizationDescription" + }, + { + "name":"Email" + }, + { + "name":"PhoneNumber" + }, + { + "name":"WebPage" + }, + { + "name":"Address" + }, + { + "name":"Street" + }, + { + "name":"Street" + }, + { + "name":"Street" + }, + { + "name":"Street" + }, + { + "name":"Street" + }, + { + "name":"Street" + }, + { + "name":"StreetAddress PostOffice" + }, + { + "name":"StreetAddress PostOffice" + }, + { + "name":"StreetAddress PostOffice" + }, + { + "name":"StreetAddress PostOffice" + }, + { + "name":"StreetAddress PostOffice" + }, + { + "name":"StreetAddress PostOffice" + }, + { + "name":"StreetAddress Municipality" + }, + { + "name":"StreetAddress Municipality Name" + }, + { + "name":"StreetAddress Municipality Name" + }, + { + "name":"StreetAddress Municipality Name" + }, + { + "name":"Address" + }, + { + "name":"Street" + }, + { + "name":"Street" + }, + { + "name":"Street" + }, + { + "name":"Street" + }, + { + "name":"Street" + }, + { + "name":"Street" + }, + { + "name":"StreetAddress PostOffice" + }, + { + "name":"StreetAddress PostOffice" + }, + { + "name":"StreetAddress PostOffice" + }, + { + "name":"StreetAddress PostOffice" + }, + { + "name":"StreetAddress PostOffice" + }, + { + "name":"StreetAddress PostOffice" + }, + { + "name":"StreetAddress Municipality" + }, + { + "name":"StreetAddress Municipality Name" + }, + { + "name":"StreetAddress Municipality Name" + }, + { + "name":"StreetAddress Municipality Name" + } + ] +} +``` + + +The response has the following fields: + +* `changed` +* `changedValueList` + * `name` + +The **changed** property is a boolean value which indicates whether there were any changes in all the data. +The **changedValueList** property is a list of changed data fields. +The **name** property is the name of the data field which has changes. + + +### 3.2.14 Check organization heartbeat + +**Note!** Requires the `fi` [profile](../BUILD.md#profiles). + +In order to fetch X-Road Catalog organization heartbeat information, an HTTP request has to be sent to a respective REST endpoint: + +```bash +curl "http://:8070/api/organizationHeartbeat" -H "Content-Type: application/json" +``` + +The required request parameters are: + +* `SERVER_ADDRESS` - the server address on which the X-Road Catalog Lister is running on, e.g., `localhost`. + +Response in JSON: +```json +{"appWorking":true, + "dbWorking":true, + "appName":"X-Road Catalog Lister", + "appVersion":"1.2.1", + "systemTime":[2021,9,20,10,12,15,132000000], + "lastCollectionData": + {"organizationsLastFetched":[2021,9,20,10,10,55,153000000], + "companiesLastFetched":null + } +} +``` + +The response has the following fields: + +* `appWorking` +* `dbWorking` +* `appName` +* `appVersion` +* `systemTime` +* `lastCollectionData` + * `organizationsLastFetched` + * `companiesLastFetched` + +### 4. X-Road Catalog Persistence + +The purpose of the module is to persist and read persisted data. Used by the X-Road Catalog Collector and X-Road +Catalog Lister modules. + +More information about the [X-Road Catalog Persistence](../xroad-catalog-persistence/README.md) module. diff --git a/gradle.properties b/gradle.properties index 2ffe3935..4254cdbd 100644 --- a/gradle.properties +++ b/gradle.properties @@ -16,7 +16,7 @@ javaxAnnotationVersion=1.3.2 XjcVersion=2.1.7 httpClientVersion=4.5.13 jsonVersion=20220924 -akkaVersion=2.7.0 +akkaVersion=2.6.21 logbackVersion=1.4.5 jaxWsVersion=4.0.0 cxfVersion=3.5.0 diff --git a/architecture.png b/img/architecture.png similarity index 100% rename from architecture.png rename to img/architecture.png diff --git a/img/ecosystem.png b/img/ecosystem.png new file mode 100644 index 0000000000000000000000000000000000000000..233e1c04a6052b2d51c7b5252921ec71af24c81b GIT binary patch literal 856796 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

bGM$p5odyRlQwYAvxYA5rr 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

|8;>Aw(4nOdL^thMK=(0K zUl#y0rdWgXTOm4Mp=#}|1d7HxGdU$%>MN+fZ4Ldfn}2>;nfBAW0a%}$Ds1)%zsx5w@E2v%y1|{4#w|6^0v5aOi*E>#nnm1A=0h70hevsvl{WV;AxDM%5_VdKv8 z04M*|z-c@2{Nm4@Jv7|i<#|aysL!&}GV~zH0D~D9E=pP!2R3S(1KPp$v|$YkQ;Mct z)e!&jQ$NvLFTcKep@0IJ@P?{g4lvCh)GnpmFgZmjF~~7xx*EYTz_4N;@U28R=r#4> za-_^-y6&7z#udO^L1%LQ|Lj`!R43T5da?&(SD@h!eg~{IGo_XUw4_zA+7wwYPA-ZZ zcvK94G=@FH%eecGYi?OvL2-l#bQP8@-uvdsc2UL1W-W}3k7xh%tl;GM%5Rq+;FpY= z-M@oHGokXAq?SvRkCFF(@mt`eIE)PLt`VH@SuLK$Se0T@U{?Dfo>HbA8>fs&Lz)Fd z!)%w`vk6|Ir7?lN6+H|e|;4qJEL2;4EYyECku%b9Fh1`QD z^QPgh$`+i()`MZ7nJeFqGNY~R$7CaYs1U~ZN(!y%-gnH;;FY26{9P@5N?qNgG?(Y= z!7$xzw{2P6bQbP1<`p1004V?m_|x+`VDFjvsQ^P*^RC+CvOYki7YA1j6J^Z}WN%E} z2xU=!pDb{d7mZFI&x#CmW?+gI7R|4&0N&+Lpm^NIw^hM{UGC@gZ~~KoDf-T{$7gn4 zEs;OS^ym>Oqr*69V#Q@J=Z&cIh@E|;TTPw~`AB0G`927E1@!>1y$7CI%6H;SrDVcW4hJQk&KRGhhZa#=pqWxIiJ&j?Hj_v!HU8;I{o>8LJ5EM=)-y6pni!{imW zo&i@FX(%sv1`VN2*xb-_5cfaQ)%Q_$MDO;+i#=nU2hgn!U+VFCK7|z7 zzjK0x$(aKXl7JJVCPjn(OSLGkWP~=7M}~c`5DGva4k1mYE-$Jq9ZJpzsp{ekxa6r4 z@>{d~3ZnvyqbEcFkmx6Z85O?MF+=Z_Z{20+kNdGG5Vi1G=b%Rxzx*?A-=5pcc;GAS z2%vQ_G;L;-utP@(rbMF1f>i)#9D~OEXSGIgYKzd2O>X!2|%w?bZZj}M5ZWP$PwuW&$b0feHgGWvE^Os3M)i5!57gbTg~WyN}r z??A-6L3Gi7`TU0ww@W0(^)tR*JM}wbMKK%J7#wy51s$wgAn=DKZ*-ZiiiQI<5!IG2 zO7ZSnI7Te~Yo+Np;1V7wkb`*s5S0QvH0ZZ4GJpO;$lwn4pcW5Xe#{g*{IiA@z9QM- zBUv&luVgW>o&mq6osR%x9asD(oefD~v|+eXAOgl&(%^DXuWc{&eqM2XyA_%KcZ}#E z!Xy#L3q7~+@?r<|YW`H975M=&xMH*;5DTW9x+j zOlSWWOw&z`Pf|^a)no6P(?jU?K@dd~UqSgA!I& z8mZ>8oTq>F>0SIn3ebgee%b(|N!2&|)R5?i;p}r-Z}a4(nz{OaYm|%3PSOJl_)z3P zf(+JUvo8pVJr1v-z}NkyudrBUaV_@)IwiwWSw{l_%#zs{X;|Cd|C$c zbRe8qayPNj3AV-wUdxvOjp8|}?Cn)LIMv-_QZFCmQ_}lb(PxRyuQ=9JRVHrkZ}8o3 zDg)gCRFFivY^aiN4R6OSw_A5v4&bn=ApxIXmoWNY8 z&6&@dY?Jpo?RAkbIE#P%b5thWEHb^MFbAMi+gJe)I3ok$d({LUm$@3_|81nu7zwXq zawX;r4D?cXn8Fl>MMS&@*`b~tteU{|j5i~Pz&HJmj1u8{zFy&vM6Y34(F5V8DBL6J*{vJXiAYd5WV8sL3)vRVfcg<_s@dT?`-g~h3y^9fEi@MvZ~93Oz-Y) zfWbKZ^D)7nrGr&Knoyd@(yXjKb2Ef^H{A=mG6G#5rQ>A1*4pf0x0YGy7t~^+={RtInSPrQ{2-Z)f zZv4v-iiNdv<)4wF7XNw)Iwus7Rv~-u&dv$S&C$^Z{vhjh>K#Bw=n&Qz30Q~R@x7u5 zq2!CB_+*GdP0Aep+4#N~aq7~Q5BygQw|7PL?%9zTK!7rFf-_6=T4!F}GZk2?F3i@g zPNA_QQ)li)lx0jbVYWc}ZZ_S3`$1m3B&^+5>Sl~zPE4|5L&7@qEKbE^ey~1V@p>9~ zKEO70$}a~vn_xhnZEnSKl?X8Ce7EGmlUS~2?0AP-MC74_Ir<71?0%2Qz zeJuVnH$DTPBSP~O!c}87k7~d%%ZW$oD&{og!3zzcW3CzNXS%CI^Ot}y72KWM;4mao z(1%cf`hupy-MqE%(YW(?gG94=SOabbh8m*rJ>+P`#OXASOdSL!!B$iDm|T8&eBYSd zql66&9~+9Ly-BcI#VSd7TJ`(JRh<8tBm+3;0)4wy72WjlWYig7DBt~s_}VdAIN3Mu zN5k|>k3Mpir!V9|!yTU)0u7?*m2 zfAJmGv+oVg;`oI2_LW5D)MhZSmL75+VQ!dV{=E*^fbzL7cn9g-rf^xQZu$W$FTDA8 zj3(DQu!6b_f$S0C-tk}V!NPn9E+Fo2z~MXR-aKl(n14nHjc)qee6#i&TaAGly=BW} zHxhH6ON1l}ARB|Gxa=o5^DS>(UPnbL`u|GTNZf{U4Sol6T2h1EV7k#@jhLFBi%u55 zS;S}PG6iA5=bz_4qr+km_d$~r{GNUVaA8LRy0^H^ZPkA`Hi3cB2~NsR42u+@09J}@_U{_YjIpM&CX$7b5N3vy&`!P#K)`fl{e z;Ud+KL2Z=!ptZW~#$;tpiyc9Y3rS*yvOKGC)uCbYZ6xm^4S7+5xzRPN0u=8fy}a;Xv_v~5(8*fCC?I}4 zcciE;2uKyBaFKNG6-{8A0JDa8b>s8re~EtW4Y|(iL^q)`eUpy(Tck?# z2?M8{44^?2V$ES3NWaMRgdg!^0W*RBMy+)@aG!W_+u`#!qY#b=$VSi&zxF6>2M3n5t((2VzcGNj{YSU|uRA4C`5ohJWkC=)-EDeINK1C*uKENwP7b zx`qS1{{H7WPQA}OIV>~L)fVT(HLl+xSOb&y~;;ND_l>kAFG8_LMj2 zZUiQ<0(y(=Nsg5-Q?Hg|fDXZ|R~t@_btsdx0bx24TnT=39Wa*s6%+O$1~7fO0h9tN_i*KNf{bbp_G*$6HW=1UKDD=^GAstS zg+GZ_fY$gg{lkMfXzMXrpQ0u`J+xgqSp=pH$Aa}CtB22$BY}b=n0&nj>_FhJmofo$ zvU-P;hYd4w7Vg*5hzJ-=pp%BDCTJod z(pbh9e0kXE#xZnq!`l>7O-0|kgA+yFKT-hz*%vMts!Q%!vLX?2Yv&i>Uwbxb=DDBt zn1lq1iI}-FA*B%vk6%k?dB;%=Uy?_0e{goxXf_dAu+@3dQcB>^_k}aUVm=JfMc?ha zaalvkhWIAmT^EyT%U4e{P;Q0Wwt4xD>VqEuIqn*HE(4_a4B!4!=Pb+vhj)6)Yos^= zYjs#{YYQXt&*)pon9vf_5bzu?Vmx;LL-??50i+s9DHN4$flEuK{|JW9Gc?L|0fng( z!|#npZ=_0Jb1@`QGInA6n*t1=N~|)hIS`At##?<|dH-_oPW$N(SH-lIm!zfI(_1E! zy|DU1mgI`cZ>f`Qb$A`5kg;%VVliQ(u=+hN`o0Gw*OflfIQ#vg%@ROhu&Wi>?ym(l zgx$M?>lea$OD%duAhr+VmEI6NX&M8&zJ}=${-K*7R10*{*a9o`P%PlR1$>Ch9rs6u zqEIp^Z!bQ`x5K+hqL+FUf7{n1h%ps7{R*2XqW{Nm1QI&B5+AHaUf?hk!$ivR58YGN zZu@5Q5~c=tidg4&vBYkdLoPK+CVe{~7|hk6Pz+uBCxF+v350~qT)qKUH1??F|7%Gv z)P9|WljBZcN;@T0jFc`QTauHp_~91qlTXbx^hk-qF+qc7r~lD?E#^tbs!c1;HtQ(Q zZY|KV%uwIFA1VppMgv;cp<;n8lWC_afPMccYwjK*Z0UlvU24kiOL)VaOBhmSgOoH4 zv*mft8h+O*78Dh(Dwvm0VM3Mev}e({2KK5ly8QL&CoNGW7!HWKdTD-|&Zqg2EKN=j zRfRB z`0*@AS+Q!-8I}Q_(m@?W77p*toVhaqvoA>kuuIL-a98g(RD-x#8NzA_H#z(tWri0E z4$l6jOzB9#Ajb&Fc6_>ZMC!W-#xVH!)_&bBt<%%ix!ZJiT@8DU@})b~a9}Pl`b*W7 zC=9;aMF``)*sNt;#Y7qK@3s`#@v{n2};V>+ORN zn#S*~#hzPyQc|P;14LfXoxalf{^9q+@(<=7a%PXH>X@M#ADH7y-dMyrX@S zouU4(97`EsGE!O`wWLv!iSyh`jHY28b!dw{Ixo>$wX}brtw{voM?pl_2gLk`epvb( zG`Pv$_kjL__Ig2f7_pjDz>g%*A*+4!O7w3986KUjJF&0dxdz@Eih^|r2DY#2ugXQP z1g4*l2TTn#0?^e^B!Ih*4=pquEEGiB1Z=N$fB?Q9?-%-4EmykrXJGdB6T=2oIQG;9 zTuI$7ve6apdhMgVf{Ef`qlXeKWPYC&b`jaNC$N>5o~d4$s|1$ZKMP{k9)mx{%eg>a zLpjJl;R;2_!>L+A&_JjhtprJO@Jg@PUN^5-fJhN7dbwo}t-lAUuWO_IA-N=c?{S57GKX1g+^`#&wfgQ+roI}HO%adSh-U|RX8XPmuK z-!e_Flir&7y-iJO2rHW@FAO<&L2%$jNGcDPk=enL7(PsJT^WH16>hw7lbr|T8UojX zg6t3-d^O-GuReW@Pvu&FB9~rK{MP)KL&xkWL5X^{ill?;2}SG)vNvEuhLRFH&)*eI zf5h1K4GZEYQR#FQ#)XM;`MhrrofI|>8_pCw!b%S`%{*>&s^wa!ySb^q)SrGyjShiq zCE?3{9a=IX0Y^Fhb`#sj+>7SJ2e3F3K~v$X$;ZcT(xL|zEqZ^a16E56Si1&+8-6g& zT@3h)UK{az!Mkw%!dFTf4y&xs0z+4vA|vj#_75hs+QWLg+)ZuLOYTmoOTB!%W2Hz; z>9_H1vtzF6>C#<{nRa;C1CxpOMsW9PvNc-)=K<%1g7}l(pZ&g@4@1Kj$Zt9d^sgY{ zkdDmnZ5a82At|%t+N}u&TUo)YXAXV%;MUWzIWTs|uU55IvMx`($j`H{#tXvZ0#S$& z3S{uH5ii7#=k_SLA-eIpZ&HFGb|%m3sFDfgIAo=<7`kDe3RvXh-td5|O#LBp_}BVw zv|zxlq(%%TG52VRoYT<|ez&@mt}EPc`vp2mf3%1*i{^=soT{Y072M97RkVmXemMwTbT2k;0T^fh$SF2|4Niwhz} z9XD)V@xyFGb(+Sx-1V~0V5iH=5>y0qULyJ5a$e+%ZaGQOL&E_3?Na#xDWT;(I#ci9 zh=0n(qLIuhW-Ern0RRI*K^B~7*xZ}EsqKY5;2zW;#K~jRPdax>50t7Q+ z%8&n%GqL1QR|MhMkg0!buPqt;uU@jF6?x=#pfrw2K~c3L6N=~`6bo->9c_NmV=N4qKIB3<|{S$#dbV*(JDyx3~M zZd^Bz)9H`c=c!*^E^yoYZiLuVrvNF@WYaf+rNZiWR=1+V5})Z-jjax-u}>1f>9_8> z7Tlb^cLP#`Ck0X14ZQvF`k%+X)L7X=as2XS1H^VQyyg?uL*d_%DLY&m*Z?P0A6|?I z2!{DndoDN!>>8A~a9C2VPHbQ-TuR3*>Ulz(A_XT3-}8{gOIPrDJNiG1j3Q_1Z^mOd zVZDTa{6&9m2h@9Ia*^Ecg2>)bJ`buEHRT5lnU9WYr*(Vm_eSjaPUxvl0*igPaaQB{ra7y(hqLfr z9|mY>gg%@%-)l^nKf6j$x_~Ve36wtS$0P7|yECPDS)=1-ErW&}9?=|oI6-(#Eg*3* zdkUg1sX^$>051(`NyTT1OZd#pNMM1et75F_S^5(fDyzWoXst$FN^2tl1d5I3m6cmU zvmZ7-3$8WJMG1F&D2V7i_{+dG9ej7cxL~w@d(Sy^H1M{MD$i>K>SP`XVe6_urCIj4 z&JNH?QlkF0I*P)LkzyB^1p*p#n^i7|+6NmN2Fr{B&!wL#&=CJu!FLV+tAZdoCjmy~BdwH6O?_%rr{e77GM%DM|NFqixUH9bAdz`L0#+txk5G-DRt_HHz zZ61ZI=?nDY#fx-aSKWKeu&{=LXe6cyzuCV!AP|%{F%Vt+<&%euR%BiQDmM7ZAiRHj zq4o1mDH|q>zHw3}%Tvfhv>^~J75(`K3f^ybW0=8*l74S2ErEfcfI`ga!B-I|KkO!W z)Jsqyr;K+7VoHZf8yYq&oz_bnDsO}qTeqQfFz`@p4F+VQPe7;L50!=u6Q6ga%K$;; zTuD!M{@Y?{pS-w^DJJa7DVW4tdBHu!V<_{4EVA+4@An9>hP-UMu`*c22|o*#9%~#<`XMfb70Auzhsx)SN)PZ_Bb` zWBcgQJ3H3ZK&Z%D(l3^&5Y>vm7B7d;1>#*scoogvv>me_0`QRlbj-5xh3dcL|3t>| zy5*`ga?Yh%lsOTs+LoQx6@Wp!t$aQFZMt`ybZ~Fij^2P=+Mx^y+U!Jqy&CKo!a;={0}w5aHaEQ_$H z5X6^CAVEFkn6Cdy>Jj{mV5`Z1F1yeBqGOLE)5#~Ko*wCf@!i9k@PPzQi*-!Y`AT09?Dfj6$(^2$ z_UAA^+f*&EgeV9VA3Pfhwd^rH6@nCYk^>>NVeyWT$*eyDB0fPQ+ujc03eH_=9ql;P z%g;lNHLgLiK#1#YsLez)0Yh3^y-|tmo$R3iYje<~rcsj}!g(Pqm+)7~%_~)k+yJPQ zj~>9pJ`l)WYz{J*@LNhV27_%FQYir%CWmnDlFUFT9gCNH&gnLjv)a8IW=bB2PKI<5 z@3#P!4gsGdLL%qG3aqFD1WYGve4Rf3lJGHe_YV%y)h*BBqeIX*qKD|peF@D{XwpjV zHEE1>!AL3NP8v)`hSS7|v%3t9OISnmo33@UXGwM|<|ZwDK#`-(=eh~Wa-O%!RHjV8 z?bVkK&9_~C_t7Ule3MwB<5x}KZxEal$Vs9>t;xR>pQ3;J=QHr}7)(~M*EMBYeYRCnbR>WFX7L!2AFXa(^3v%OK-ZZ+y1)Ga zu_+iS@f(tg`pO`nVH&Uj-xDfzvHwLeUY%Vj`pf}p*eou3aGV%v|KlYg{QmkWB`&@J zaWDl9usH)c&UqKZ1CKWkc)a^}gLKg!KfZ$7V?S$kNr8YQ8YuMZ+Yy+0IBfx0iw^mD zJf3f6+~n%3cY$V6pD4(@R?-lZasF^TlL-2)TlG*gAMjGY}3=j(1OC6c}ul?o2V~bUTbjbWYUu_ML*gIIB@M&zuhth>pH<3D$P_+Eyq8s&g z`49yNk1H;^T#t?S9T!U!3JSVB>PSHxCTo^3NOzl$k!>h7@M@Yr24`aWX-UjB5kxgi zI;~BWB53S*l3=x2&>FOm(&`VO*0kLWSfE!*DD>M|O-q|L7m_LurJuTsijnS6!W+gx z2jE!&g#hJEkv{ty4`w#9`?Wbk#9f_+ai^%WaXWu=e7!>2M*CMw3Dc4=MAp1H zdklheXS8c;z7i2O$gv$mtzMpqEXqkvXFantKbO*Px{XQVQUsYnjv+3*2=n7L;DZ9m znBSaj#*pcgT$+hP)=QEELID%{8Z25RZi>~ZXI}~UBHQAN4G{Dbeia3d-)Pnt&=R3r z9rrs&e?5XAn)htZCb8z%iqC0#5`bu`?1K|&DH!duz=)5&JAXT1sJK3At^Fj+ZxjfB zo3AUSj(lk!w4Uw63ks%e!E_bB%hjN)-xUx-rp%DRuQ_^N+&(2`KAf}~y&KHeN1Uc9~hIQE|7uW$gYt?{b^ zaQ1*L8bpB|=(7eq5BVb4ngvaHq5su`pk!+WyadTEghaLO`wyP~!$+$CW(_SA`1$s# z-VwX5!%(~{D_Z2^V&NJ<7j1jNY{YC-lAf+5hJp1(Ur-bq8(v6MtkVmx)r&ek_Zxy( z%5yu>wYaUA4eP4Li&rSh74lVcnP>d{r?f!SzOQmOH`vz+ZKL55PL1F@zJJ!XF<;rt zuBm|jWWUwL2tFEx-P_uu1-YukST5nwe)!ex_3I@EV%(gVhToZ1Cb)yP@~#1u4|!b*RS-Hyj8Zc>`Gkrz8HX+^FL19o;;^&<;W6 z!6@y%sKR2MK>kMrh$HFUJw>;l_CU;-x_cx&AR7iz7YKss71AfPCF@5}Ff z`QN_;0=P{aP98RzNHs_=G@EORtjgSj!u?({xcZ^@3X+HclkNT`$J!t%)oIi&jNA3a zXvOO&xfFivKF^O4=?Coos*`s6uwW*$rb`rR%aZ2%mXHPNf7s zA2`Xm@$M!V>&1kno1GD2?VnCJ92RJyL;6_cp7vd3hRHMcH|jE&*xR*9bD#I2n<3?U z=e_{nxZER@#r|!`M^7hAlyTaunY&kP9@tpZ`AqRb zGu6=%o}TRw+kER&^!SdSB3Jf_i!4+B$c=W#uAT>Y^8|TrFNp9L;JzDK-)GBXaRdgM z7Vz`)i^TYA1Y~og_0^ZEF-*U1`9&c*9FlXb^s-;v#L(yzRwco+hzt_Y@j_+43h0++ zWd3WW`)TMKpqYm3x?4*bx;-F_dN~+qJjuqTIm#!mhJ`t>F!XF4(SE~kro7L=?3YLZj^4MOS-%7{hh16 z-rwgl&kTPsGC06FXYak%UVClZF9hoQw!=W-+v2+@6}6zl+;>oTb){An(A;q%OKCHY zUWn@NAcUW9mSOq5GZQnbwC^~K+)9S5c~qp7C9br#f%)If6#nmKP8*^5C!Pt4_qoOO zS>;?9)?mGVU?zd*3|1ISbeHPZ1&=A>2Yc@%@(mo|=~xS0wL9@$X8YjcCI_EK?CHrXS5f?Qlbbc{un>JAT190o%|h$xbp=@4 zR<1{s_59R=rilB!-;&*p2ANlybZBuT4pPrad<~LV$69=BFUa&XWpAx zI?kSX!uBFa;mK!PsgwK;6XaqZn2spqaWF6Aq_QyvieIZR@?4F>WWmmjMv5;msk}KI zkn(VMh{%oh><|x%O(bJd>;4G&6>pWi8T9b?;>m}!FJiO?>3iR6>x;t-w6r8|6>`1| zrl!byS@`QDan@*^rz)3fX%BJ5O+JV5(}!s>$^mOpm#am|wbAs{mCcyhcl3NxcTJ@Y z7zQ_PCk1>NVM-EUPXu8T$BEZkpDczzGuhon%wvipYy1MAlLDOyImh}tWuOT50_8&M z`FEf=893V9uLQX=XxsC{%%Vc|VhIndVgSOS6h`dx5K)hMHCJeOVf#!t?Do*YocUKj z8Lk`^%TPL^coz#>xvqelphZ}^lH>AudD7Rll0hWEpUn^?NY1I!HH|_As|$a` zVzCv>%;PXVm1uIPunhlAP832iWifGizeu&jC-aMt&OD@en@Jx)U!>&`Fp_o^7g$q& z&*1p&!+BS4`U!QHf^$TnI^iv-7-3cAu~d!p+gKd3P-S41wWuizNhDN#>FMXk>FUGlcJoJn4fy*GL zHitd!nK-32Em^qN)-vHr2je@L-$v~5^OrUZfm1jDy6V2pGSg|CMsyVqHVGvsB+(0<=n0mWC78o|5J^vF zgT~&O=XrrS6UEpci@wcqo~Y5(Q=2P=aE0baMUVHZhr!l zN~Hhy`i~ux{+MsDw`Y`Z)YUtk{0J}@j8k<+jFhDrFlLtUXe8*oz^l& zcgvL0SFXh###Ka91X|Pcj?B!t*OuuJZ{Wun=l?%nToS2mik6N!RY;5r#FF^7vaW#G)v}$~$K(?`k~#sy8n8kD3#d z@;YER5adY6ObDsvPI&dkq9Rv;T0XYVB-iRFX-2o$Cy@Io{KB6R%Y#iEc09<=M{~QI z%m;KE#X>$L_lXAoh4NMy3JB$X_TcJ2M)+4J11{~)hbfX+U#Y@8UHIU#0+Pr5+=MT2 zlDVV45aHj`?8h2-G4GOu-({hL5(A0>&WfbO-Qdcvx`uG?Gm)5)zZNje4hxM;Z_vQZ z?0jP?Nn6?@E$p)(Yn4`-g^nG(j`pBulz#QaZS6o2N$XO_MP*M2Di`P(Ts+|bJFz-C zf~xLpk3s`x#@4c&iwMonRyoIKZcF_nURfjW`6yA6u=7RK%<>v&Ar!xTePL)QE9||n zazGZXEaCM@=J{Tkw1B)%nbL@Y5Q>`eoD9jHLCYa>SZ{f&#Nrz@Ad!aGC6ftRWmtWL z4t{v#=~Cc1SO)Ii@Gs6m`%_mk#eWtkSM@L+)6(udDM6s`hh8vc-E= zHmz~wr7mn&=`r<<&{YPK?@k^P4>%4P-}U9^(dnA)1Qd)c8( zsXh(k7?WjgGiR8%*RRuK4Gi?e)0zvcG2<6kKS|7-`AGn&^0{zrg_4NAWIRmUY3zf` zKk^}#{mEyf4|o$v$}wxs=WJ04XQ z4azTLD0)2kuSWHIOjuNZrLuykbvCQTs#6yr1}D)YcYB{lZ>{;T;Y4@F>m0UujsTDt zKC8v^JvP)=(}$a=QCA?9^;txy%g3xAq;l+xPpYn_T&~vx%vQwLbZ~@q4PUUwW5-Yx zRCa8@@L6cMj7%xYYU3wle0C0gzVAxYJ`G>I@%ScPUZ-*O1>^c0rgLlc;MTT~Qy(UR zXiCrxnOdVFla$f>)^1HOua`^s);9TdMIT}a^Z+wD8cWS^UeY;^^m?riU$Tvzw?Ps< zVcpbb0|01*v@02xI0~cMB6}6IX)_s+ouw&?%Wjz6{ADAgAC7_CJ@1I<6^6n$&oP$0 zQ-Ip!tpv?Z{^r)z#=b6zsqYE2fL@e*Kd^6=kBPi1*2;Whm!Fne{&0X<@YlS{jOlGX zg{+sck-7{m=Y;3oqFC~_02H<+NOY^K#-VKTE*9p=23tM&`u*-TF}>2x2e%IRb_`dX z)?1>FEwktBbq!M;p8w|oD#2M6XQ>~{te`O4AyJ}5^(RTf-6F86R0TSO8guWedVdXJ z<)RWWZv=if$jcJYi8O1_U$N-T6kF~ROpDLY>evykYDF?GcZhCpSJF=vN^&`0RMVZN z89xDf1ftJaK<$|Mq<(K2vE9K;nKhCi%uiC5*ky}I#DGVmp{(Y8~+x|Pa#M= zMCPKUGF1t-IoO$5jXH7gpB8|iR=>WTq4P)zPhC)lN*D2Lli_ zuplk{B|PEmlQUv;Q7SJh^h7FTWl7~&zE}-&P2TJZE)41`GuLQ2r8{=Q;+%ZIbrkZ9 ziP9A68ivm@@2XFKvr<*|EZ@ zT;>>u)5IwHGtL=(Z$c3Z3Bpfz??C*Q0A8i%q+M2IjKnla;g9_9px#7+9#-GY9iai5 zjGemQtL0uM__d@}eymp69_%oAO(kV}6KQD*Mse4hS1U>ig%1iW%$Bf6{tn(6cMD5WVButUR)ZoK9>ecFc$)cI`FUFE zf^Wm##>JAbk0k;A6i55R_Yb5tGpx%{e>vPfNDleDJw>U8XWgRMNS^v3ZN1q0zRsl> z3fLXiM*2E`(EzOLf_<<=M;#hC-|n%kp0r(^vT#@toS%;;^np2q4 zu^J&K8$-VTdc=$)%e<_vj}?I}U~ik0pMn!j(t6|H6FMDoznL^iM`}awvt*+CHd+Vc zbB8mBQ86QHBD60@h;$>kufXcpC{X8woPSzcC*oxLe9nusg4dQ4J|o)71LzN;x8`Sr z3%c5hb}U6`$%$|E<793~3+#m4-nx^N=qr<{%?^R`){{6T|9eDzFSExR5BK5D)~ZmE z|M-kbGTHlDo6n!~iD|rqyIA!btp!X}`9vg$5NrU4wp__uqi*&)dJ0sc$MSpQ_=WwE zATVG!+9!xnG@4}WBd7wjZY}a3P>jt;i0a2jvMM|oE=CJemsTIaD0iB;^_uV!WPbuC z`Rc#0u5gMWg@069VMIdS}M;*wK@(6QMF2tG$?m@Fv;E} z+e?!+U6?c}c|F*}m5v`8_*~L#?MN%gTiZT1|K{7 zB1ppQ%E-Jw(EFmTT|6FXp;fusy@by0^`r^cj5G{QJ=BLV;tml@nS89+r!m?%+F8gC zabFnyo#Ru&ZT5?FzzYAjDwG@uQx@+jXQhHm z3hi>NO!XwT=KkzQ(o>oU4K8AC_VOHXJUd;XZ#7{uU3*z@_)Z zx0GwxO3so-UdY=^N@)=LR|ux{eZ&SVc%)1Kk@8nbTKj+QgMUjE6i(0{4oc#gLE}ek zdarGLx!vaAlrM>SuyxiK3S_2T}YZu*)KTK*?#T!*cGKmELJ_o=u>6xO&3?3bYc4d%GcCA zAssI{-tt8=8mO7j@$utO#qexEwv0*_P27*!dyd@Qf9Z!!ruKs2i2r7Dr-H75^@GoC zanRSVngu%5NsuR+tt;5KBr8*;aW|QkuO&L$oo~G}zGa5t%QM6?W=aRnSuPUI0rL(~ zXE}j-{xa=96*I*PjkV)nS9i6uc}8eNOC-NuVv0{2VcWM~qCX>RnA|(VW@>6`kKN#? ze5&W|+Wa~YAE=3HzJYn6N@=WZM_?~F)Z%9AB8C}=DTVUO{g&{EU(b}E-wS$>-PZiX zVdD;av!CGwJulO9y>FTNpWzCvH|hBp$nCEXPVC4L;4JdGZSea4CFPEh1G8CE>Xm;T zkNEqGQlx9LhDG>8w3NguH^v_lX)s6guWnYzQ- z8rA*|?VvWx866-wJsf}Wd~vkkyDW7AS`H7@W)hTY} ziKb&1}vNXem7uV;cUnOq6Or^loA(zgT5$8m#Yoc;0 zOxtq2^VRm-cB!T>QY>IM43jrB@@Q7_YVrgSE#uxdyuxzF8HZ<9r?W9Bgpxf`GFjeI z)T(cANAm2rM*G52S&+L)tOicbPWK(1#k^kupsNX19#)^WJzopBaf`%$6i~v>3+m7s zaxJ<}P3!p(BLUE4eEI)VhCUES+3mYX`glJmc67WeDE13Ui3KqjVeLjg_CzBay#5^_ zCBJtu(0}k1umahs=T{fH?lzJHOm(@jGrCQo&cFygJcvlhR~ITMk2e09Pcaj;gRH0QG(?`p;$r-l z5h5szm*FEwD1k8u>x&3BwR>+-Ov%LmTi5oNxHFPQ5~IC>U)o5-fPrpQ9(5FJ14)8; zD6an56pm!Z~WRA2LpIm@OWwkL6n1kV1C&u4Gu3q5pv z6ypl>Y6Yg#F3s!V*KWgzmM(&WD(kS%IWM)J3ZS%zgWX9G%v4r+R!#S{7}En1&XIQ+Cw% z85U$IHOQJK$(?2!V-2U~HANcfm7d=ny(XG>ztS)!zULa6h3fhnhm3kO=2EF|Qkc*D z>b)%JFxA+ERt$HRD4yl{Y#pD4qWC*>^`ym1<>@EMU_GB#Qb2h{-^@r_evN8T{;(lD z%IIv-7B+C{nUiBT&3OPY*d;dt74SmRN=CqMFCj@Y(&{;o@>-hN%-CtJDX*I>>-cOw zB#tAGgRnC#rI{Bcpo-x*+16f)leT(ubNnmW(R{?5t!~mZ%4hCtT@+)SJ2Knidrr8PXor#v5d*6S>Knko~Lw4&J43GHh?n zuZ^0_NPkU~?MY>5S}!sy9a|mQgJGuC470n+!sOTN*cr$3Xo6NeKj3?MtXHqx7EQ(P zziWeVwF2CjpYFwq!UM|ifX}Jhzc~XupKZ_b_pCgWPD$K0>{)8kRtdT2kG0u9^sSs~ z2;Qxj{?6ex<;HIuSEX)4lKwU$?Co#RJ=;5QtW~638J~AA)&5j^^Nx7d6`KbE=>>8M z2khAKgleo$K7#XWvV2!a@2h7^*+*6{2vv(#-^xQH@gtpPa-KpDMipKqb61Vc4$1oN ztcH;ayJ`kgw8PdeW)?O=kS1f9eAKK3xZ?azARI>O8D~ z5Br=w19P2Vn{7yx?!U(lct#GZU3}Qy*h_MwSP?H3Y7!UOP*@piSXRi#_WJ z%*&m{P%2B=h`FDjrU-DQ0s@_M@@|-JC9%Hq`I`h0ZDu^MMWlvFt{()l8^q996I#La#Uy!|SP@mds-K56T z9nBIr53wR&rz4rARh$p|qy;*l>F!$ZLKGEH+WDyL)2CLOu3842Xa|hWU zywezJOy1;2aX)-lH(7RcZ-=1jIr`AIUCmq-@?J_`(^ens5ffC2V=!Kyk8PAxS%@bu zM%K$>9(khXfu>e0zaOki#YMDg5uc__r;=CuyO5BRp8ljHBY7(&0(v!RXkK~phijm^bnxRR zy)yJd<-6-xlm_=O;H7Dj>y|Ubdi%NYRY5yd>Ge+4A{OQz7JApk<2?;5UUw*`F643M z0}qcUy}*z7bB`VCckS=C_$&G>b!0htWFX6Iw&W}H%?Ot&GN!81GgLA3gmmeb)=?>* zB`)@+Omm_5tD^;>h#83`eEMk$|Fb1E`2yHn3HNJWS+aRAJ)t;1Fx$S}O(Lr4VB z!+f8P?*DeXn5oE}Mt>F%1?l5k)!hignVNaLVmfLtGI6wQ*>xGBTgtKlkX}Inv;F2% zROEi@PpY`$(?R~eThsml531wz)zoLU7RNQzMg_jh?*wz z{U|EFF|`YpuOMCRp#H>F^o*A&G?#_GB5?u?t<1>)T4g`HA$F=n-k{}DS?+W2jE+|) zY>$99f;?35;~`mpgxtq$9}DHq6VF#E!+CA#Nb7IQC!b+*PPpG?%988}!9-(YVI;(n zp%^U@kNvuI`1!q|0b|O_%hd(C#L1HU(e2`XJ(J;Vx^IZmnyWr)bz;D;r2s6+J^fyA zda5AC5(&z$5IB#*=j^@s^Q1Jj`*TdmZKS5=^cumc{AHTGrq~N+!eMMfgNG#ro0*%N zDBJN^YreJiy*G;h=Y?Qe$mBd#yr2b(-SnHe&9{hL2E*Kb@p=s6Bke?nYri*gdsyRY z=$d)v=HsHFcE#(tpQFpk?|hoC#%Jb~wEj-duO*13sp&nJjro)s^nC#@oVZQu)nZ}? z1Rxc1w`XG=i@38kTvH&|Gg_`MA2LA2#L0IA! zkEv!Q#RCD|yc`sCk}o0+`)MMHS8TBY>x`kCa_~U%8Up_w|NjmQ{iGDH z8_gOh7_pT2SiO4W?vYTr;WPT=6Ck%sw#uKBK7DTl;Y86?lx$Ezp5ySDAHEkWp}uyz zc(D0~Z#DFl_>lJ51Zk3^L;17L29kuAuXEp6Js;y{597057*@dRN*y2F%=sdP$;thI zxiustBE2fbTz24NCN4Do>0XP`Ghd}}m>4m;N?lNE`xY$zfO7;5O&p*E6GPwIUs6OZ z7C9xpE=sRUg6m*1IpK36{SWtXrNz%>(?$7vu5KjrRRBZDYg8V?R-IMOC2OVWx46=?;xwb+t*1#!3ct4&f>QT@IQAHt1<@jU0B! zBeTLDWbW16J+|FmJ^X9n^H-jMfP4yp=$yUVmNFJ>RqBQUvBo6-2Myd9kd`lbDot)X zOQzya$`jX4XKTCdVn?U=WZ?#zaKjW&l*fRjXKv=462$0Gg_N-Y7HgKrjTLC{T3wI< zFlqS47~LfA(%vXQ$jUM3;?rid2Tle?h=<%kVZL{VMgth9e%gPfoa@-F6_idSf*fLi z1PI`I_wmITsY8E$A-7=owo`c|+f?6(Ml|v9)+F!g2#xQ~w|s1qjC@YB_jNhGcN6%^ zgZhawiv#a-|LqmOJg~7dX;;z{eP@X)Z>W>~-ME=JmSx4rpN1Eau38peiWvvfj$n9p zs;X5D0X)H%at>@%{eoi-iyz&}}fi6my&1IJR)SV5|V@KYy>#tX^@wD?Q}?5EMc zgb;dDbel~739jS$^YLEJ2s~Ev@y_BUuJHMfD;!Cw7 z1Ic!Lw#3VZD=b#tP0%~GLKu|Hf-D71w z_TV*=k@w!>$uKpa@hifdjgM!-(XExNbG^ZZAwf~6*+9C+chdWcuwL_h%Vo?oo=+Qp zbtk1so8SjP#UJhPnRNcI!~HaOem)N%r;aM zqK_Su^9P*O^{WoAU#PQ{Ier^B4*S7JAqqMuk^pFDaCbZedy)XxSO@RQl%#bS{-3VQ zuq+7BIw2G-dw>xtc18KSvi!){?BCHQD^88p#}l67NzwoB`;3u5kA4{S^=Qxu6&0W} zE>Vmq1iW@ffIY9@4T^wZsml2m7kp(?Hg#%Oi2ccJnE3Gi=IS9fa*EV{ym1>aiFeY` z{2)vY;Xt~0#h7u-lp1rE_JTPTLlDf7%o?zaP;tlqBt2|79u(LXrdDvhqXYQ>SL^LBi!)pPM7_8rX61uKWb~Oo=tu^&i&2240?{9m z(8c$x9}y7|uHE=FSCb~1ZbklQhvmQ4HUdgr5<+0B9*K`DA0|cFfW|gx37kd#=k&ut7_k63)Z z^-52STHa6vEU^VeuO@$+zk0p{3JAlTV&)Vsc^Q@j7S zRloov(QBy*(GXH%8gCwX6`YzRMr%mtjiplu>Y^22!ocg4_MUPBY)Edzf&>V2Kt9W~ z6vqoCIJ75l5VF0PFi>dI5eNAk8m4%v^bo`8$@V*VY&81xuTmmADQ)xjTOm&uS^6u( zK8|NAPe2zQvXH;UsCH5avSyY&*PITU&&uRZ-_=F8i-)~zVsks){r@Uj z@>fQG3mOF;;TNDa8yE#ntfPmN3H;AIVF+Q~Hn;T=@2-24%nVM22jR3sTo>o*9W7G@ z#*kaRFb%ad9~w%dGPU28tF8d$dn2A^ zyjEYS*!;R#`q`MnMy|4~RBT}wXk&QTnKr@FROC6W zLM#H|-<-!m&xf>LI!h5OAB^^`hZ!ch52M~~Rsp@kUgMOU(*Y-qnAl4*zIIBBS^;f| z5w@nq5Z#uRiI^yNK*o7?ed)LgMjMU)#os_Y%ua zj8`%xfaXU*gHmSfTU9O4iHwYgnT%cNhn9REU5cs&F`6nGSCvp1}E$RzF zV&lm67Gn!s7;ZjB19Q0qr&^=;X)r3kE6rvGI@I^eA`d@6z{{;e`KNecgMF|<&d{%g zxEULB9%cAeI|0PGEzA))T9HLB$lnWtjsvZ7Hy@^Yyz}SMDEOZMo_C0?zmnDt?~j3x-oZB?}pc5b4Q3o`3I7xvZXzq6t}f`0xQ;w=vZPrj;a-ruM1vsLv_gg{}FNjk}m z&>D|iG9jC2Z@VXajQ*F&wu`Z#S$Q{FeSo#@%>mb6z3ug>7|KbmS?fE?+mKMz(cs82 zl^*$aL#wiUe$DGTOJ)tE5dqh$J#g6+gM*<4PB2N8D)C;G9TNIHLmMt^{Q6#6*7Xh0 z47q!QD$`j-KQ5RLwB&sIQ(&g+QmRmw@~RHfqg*r{^>`O7!+g59&<~v|YO%x0rrO*^ zvJLs#nLhYC3^Q$Rur1q!n_U*e8f@XbaSf0B!t9F#lSu9RY|y6HaF{x~N2nN`arHT8 z@;>ne|N5fH%lVqLHV2ZY7;qTocMs(h@9J85u5U{Bl;QU`DP-jK>qj3%=@@@Uiv)lR zNb!vP)MXFcSqig=bw)AxoxNu)Nm1aAr|%@~eh_6&IlnQS{ZdDeM}fM?^mr3baL1)J z^a$<#96$4{Y&BjJfwb5N^UQzwt`@S?bpZ+-r?7@Y9As;_LcRu*f*5?c48{K|=pR2j zG8>=|dqhVsd9(gs2!u zDoHN-{9>HDb-ut;+V^|1e48=2xpjQS@_VUIp(q7O_{He{Is)1LB(otd^Qz{Dk(fXVkyv;v_7+i*{R8{m~at z*;>FwR$6pgb|%VYtAlb`Z4KQ!C1N$iXtCaxvH>kaKT#ddnEJ&uq*J2BJW0NQU=Jgu zXug=rbYW;wQomJ7*huPL5CS z&MI$LK0%X|vHw9(5kJ&JF-Ddja7O7@0K8hlqSXRR-;BJGz+A1HDz#mt#5*z&)K=II z7*IakBU#z~gaa4}03HA4*G2!!Z1>kFoZo|60pC3Gn!Pt*o0Tjk(O&v%#yx&fPDmWc znR!1Dzsj7lNzkt%v-(7^SBatjoiDP$<1!sYyGQq2$K0yUKGn=@{CP!Z zyhDnM#RK#O&PbIPS@g%gI*10C%12~-r>l8Pr)_=c?az)YH)AE6SR{AMPn5l#59DOz zpxfzh558d+#_!D1^h3=-K8`gl%+{{JP-~LgQdN@N1VD_UYJH4Hk6dYo|l0b@PPvw%$9Q>PY zz(leYZgDiI5Iu;qnPb}6EBUy8qX+?@<@ltQ%iW?ofhjajUPnuWS26>q)W+&)RGj-u zw6s*%`K9BS`9%Ou5Mo*DRVn$Vw>5DZOobE+Q`xi* zFut3lztFjEZjs-omUk0*O;E`N59#J?N5eP#?8WZSyH2#xtuj@Wz^rbUObam^ketO1t zl#Fp!8yNF1bA!F2o>4C|D@*si(Z2D^v|2&R9>O^;Dups|8(XiD!Ne!}H2YWPl&|8- z%3^8LC71~KmXsh<<1qWKe|^YrpDxZX91Ef&>mPiaTHhRXHT8=}!~z1LDRUR+FJF@I zEYhs{XfFgk?+*^S{3L)4;-es_$vN?9@sU?K+-hy^n}knvl1*qYE0uohDI(6=+m9SlX2K&GrsR^bCgn3WPZ<5hsn=# z1KIT;=;dLT5`3iQzqHGRBn(MAf!Q-P^-=ow8)*Ws?Rqm(FVH^XzN9JTK5TN|Lpw{_ zR-Z-7a!&n7wBbsGU-s+bN4Cv^Bbbsnow$)dor%$rcX4_90g}LMZOjsQr73_cI2BOxP+TZzDw5(=x}SwfyI4njAasMMfYn zaq^O*6%?wRp^XuQ<$t=kF~a8)x3{E@(1>ZDaxJQ@)VI~b z7roU}Os8wWIMT<}ZEb|`8cgp|8UM<)US87T+bMk2OP0;ZVQra(QSunbVafm-wluu| zxE9W5kryN5FEn{QAcA0Fv88x%P!@MCG}1MZDflszrHBUJ_kfpD+6ffv3ig+nA4d_j#t>DB3Sp?7^ zn>~bqF`U%|dus_*DO-++Cf;DJaRq8HpNGbjTq^%@b-gEyjz(O^++-ls!^8D^9SU+7 zzaAHV{JYTDy*nT{*YWVoF)KF(RpBYp&RW}T5z{lql$-sNvrZTT<#>LH%kKxkm5pqx=;9(;=t+j|{LI4t_+4;BSKhCeOB#F_X6L2zG+*(|KsTcr)ZS14NB8fV-A` zrGc-D-~(=`6+p{Y19e~)8A9QA#31(b+P$hXI_*1iLXwR|9=-x|&dMUcn$6tmk_4Y? zMI8(1;ADWhK&>R6eeP5XE6414(PLyelzt3oGClJ7?>X6P5c@Og>~m$%(9|TWuQkq( zb|OxtlhV0!$r8F z=|5Z!c|wa{ErH~3kJWm~8Qhp8vh!CZ)*bl1zg$h1={D5~ibpf9c7VnFBQxVjCVE_J zXM{1A)7XF%{mJtIdO+gpq^+%BQx+I{#4`IT5+*BvJSF+D1b&GS`r4f{L+<4ILNnJN zl;--ho*A-nM?KijE?KNZ`4wE6z<`vyUi3MzwUIP4Z(V&DwAm--xK8;m!io+C3GmCg z#uLQRUPIB5CjrPnzFF&wGgXcGc*%rdaT zDzhJzo;Ci%8U6Z4(PkL`;f#c7SuTZM=-=k@+%aYRCx@u}jIf9u9-+P;F4$N@3r|Mu zwq?Layfq0~C#kXXp;r=-!1&01)<=}g&fj#huR^kK{nOO(8$p|Vb{O4MFV%g7j zYlC6NYg!DI8LO0b9V?tAaduzWq(b$YK9Jo@dVNgoiY)?ID{Ejwc&W?e5&ctmBY30= z=)IsYVR)8mLS4F>S~vr**#+E*}dmX zt#AgbGt*W!AHR|?ojt9|kd9=Qr}hzD_Gb+3u> z9!K82HPli~4YqtwI1*RAMYOr=f?=L)#jg7W`ODh)%ni& znRkE7IiYLWUlYvMrvN+@DW>Zl2#M#jkG3XNiX zJ?D`OR;MSyICfah(XuW6J&61=E>dLx%nZKqrzDlMPE=nngWpzjAyFErO+r4DYc~JY zRc!~~HlPjY2>F?;dR~;K3E5@j?dRj#!Y1>sRZWC#D4z|W8`ST;XKJ?rgSb!Pa$cA~ ztJQdn9;2930cG!9c^?3z=);vC-4&-&Jj z+l;ajMK)u8#MIkv0wnWUqWlHIn1pypR(5BjO;ca4S?WK@&1nubP$X;3$ul_!EP5*6 zxjX&%dgOEzu2;RCpEDxoYN(z`hu=eKEgd17a~GxX1ut!T_i&`Alyfv$k>R59>jPd% zl;X<^3>}{DYSEnR#NPV&dyRJQO@yEg=hve;T}Q2W#LgPeNp2Q7CN3#EYT&)(ggP7H zd)-KXuwH8oa(!0|CEbd~VL6>YicZfLc$CwWC*6a!z#YX!$hD9In^Ayrz`iU!)4=M_ zCA!r5%bdOb0ndXAS_;rQedRfeV(i%enXmo&AfllB7{C#P7a&-2!KG3}_tA3y=3kx< zfE4Hn#Et~nt}gI@*{)RX0pr}iJxaLXdVP8HFdPvPw7-2gmn+_w;S<+^pkO?EF2E52 z<)@e9Y0+mtZoBL)Nj>d}vH?ZyfSP)y4W=;<@G~?bwT6M!cdFRtn|;QIwnt9WjLyo) zygoYjYnYpu;%gQKn>C%mutpYWMWF@#_}Bz?+Dh*jU|UH?nFoKm_XAfAG<*U=3E~1o zlmKBt*rTgEBI&AEqh13h?i4dere+S@tA7t+)Z4{0<_}+Sn~i;YNNxGxhgdG7`SW-; zGM0l4JQ=e`{_X-oNxZoUTC8%<;Tb;_jMh>HDr7@-J4zR;MsaG@f7Cm6<0V$X*nSr7 zgRAk{xY(KHCmJfj9z^c8@rRhQ&gh3y9gCmV?y$OVs3*tftxBflmFi)Zn}C8aO;%8d z$ONcg#U(>)amh7L+Kx#Rw_?Y(AGDGg@dw@x#0D-@J(^}q`^){k4BK-)Np8;m7&Dex zE>Ax^q2J2hk6j=^{Q~&45nzAn*FEUj;JiH-n`lDa2 zXP>;*_DX+eMG$AZonBays-`+3$!V&uR{vc!Ay`jo56Iya;CI3E{I5+;M!ECpbb(Vp zuZ5WV+6%bHLrcrY?9a?E!Rj8ltvK~QpK+Y-?6Hs0O?_cieePU7v$9b`YWN>Fzo7w+ zOsymi^Q5$T1<^`G1P!1hrmF0dW4(UI3Oy6V0-*EeUQqgIb$Ofm%wucW@~4LD46Q$N zO76kalpx;?0~JPwVQLzK=Nt8jVn$%rf9q=qO^kdw&tw&CC>;P4JlkB(#a?Ae0E)*H zC#OBU`mV$T#*|(=RL-)@Jik$BgX+5)3IV#aD3RjohSrW_lp$*J#~1b4w1LbP_Mt^e z-LI0ZTCW(XG?Tr7=yl60!8c#RnaKXYGu8zVVm{3VJ1 zBHpJecrSWs4cvqo57c+?5bsxsB68cOeRSJH^zl6}N0~hua=Wz1W?vZ4aRy`Z>tOr= zRk?QmvI*qh9Wc~Yk-Nnr`=8l(s~(ceytOg&{qYA#=kOrl*@ZUwF9-yHAn>*m%K#n( zg8yF-@a$$3_~)C90fN9}$bCjc#1c5zz^*id{?YeltNy4HBkp1$%NcnLx~_9unLHSzjy*MtI=oXA26H`jI=; z!y&TSO)#WdftN@DwV0FL<7{kbj0AQp@r-Ui`}Jmwqulo5prwH^ZrkpkD=pyU%QlxP z$}TV!+AM!M>cBxLPNQ5Mptvgy`%W!BVF)HOWcM69vYwfZ2uV{H%#g?Xcg>TgX)E+A zG5;G&eF-i8O+;XXSTv7`y@TUTq!eo9Y5<&)*kCu`RPj;p-N|CZQm5ojH%rz!eRs04 z(W>FvnFd&0H8~)jf5VCAk~CqRBL4w&V(=sz_s@Qf)?CB+4a*x-DK%YG0?#La)E4;?L_n({?Qb92@oaH-@#KFF@RC zaUDY$8iK=T$v|}ScSuL(=0}i13u6F=fX}SpjP>H2TxdbF&UKS{>o8CKN~Az2tI@*A zg*s@)CYjpQHUQ2TtCGB2FXnZrDFO`Cse)`pVl^M5UGFow@X)h>^X7n`w~Y6b=08!C z7_1tMk4k?@hy}pR`xrS?iDAC;xs9WNM$2P!7%bwC;x7|9&;XWNudIcOeassMGz}g- zC*5;Tl45Xd3dnaNqVc?y@7*X@#{V*G`Z*wGWJzXm_Ck{P?{P!y`TgbW`f~PMr)p&; z_I8(qQ3Au@tyM|Vy}z%$E)l$TZfUY+Z~=cs|G(ExB28xfw`eHi2d~{FihS3V9mLhQ z623ooAI%)97nQNs3QeS8-)s?3LTrB+NeTTP%#<%8!@QGB2VKX?3iulzAk<}K+;^Gx zz8}j^-mO%6eYp0(=?rV6Kq~=uf!nZcq|?t3+-S_KGO!Yi&>Tr zzjWLZ89>cRki$X4l~asG>AWE-X=}P6=YIC(#b5Lz!vzoPS`C>C2fCmkMbI?B9;7h_ zdYf{v3(J5v<@Tul<-;R8aye;5%*m;8GW6GJ0Y2A_L0{{|br_j{i5YT~qN+ zN@qrmw;b+G617pEeeoB-bUok2^{!1)!Q9Li!Sl~@Qpg`0cHTr=;3t2P1Flk@M;Vsa zEBY2A&FyXFPHVSbp&Xa>yJwJjpJ*>HxK`$#{nOf9wPOe%U?+irMsW>H0$X(59k){n^3S?7bdFrko_L%IGo26m_#kw3J|b!R zw7dG(V}{aFnF1n#k?6O%Nuy1R z?lqB<&E)e@7o@-n(lFIjmfyAj8Bn03a0>Jb6kQlpSaae=%eQM(bTLvAN}VP9M}%Lu zpCKr-&TlF~kmn>sHqrdxGZ*y3hi8WWA6tJNRrU6LkHd6#cS?seC@GyHjew*Q(k%@F zf`o{43rKf&cZW36-O>%eeYp3&KhOA%XAJ*P;t1!p_gZt!HP>7)?o!#c2rQ^dJNPga zi3ZXEWspb8Y2Im2T;XyFr-gZhXv3Jv)*|=Zvz7!c8Sw5;Ttf=n4d&NOmZSZqSrs!4 zMqpWkB@P}eCbbpMf07DFZ=3Ml)1IXLC)dA!cyj$UjQ=;y1NNi4gnRX&t3j#L*bpof zL;Vd}0cw&Jmi=1wdH$dSEB@gM%F8q3EUN+3R8pX}VpUh>;0grut-B9NbZ{;MJ~c=N zCoiuH4Em4%(*gjwe}4oY-eH7+?Jq6L0_=PfApA7{bC#^{RyE@>5OvSQB(;<^Eumo$VdBm>(MGL?kk} zn?{t)1j9gMRteFVDNw$8nmsP%@(Xl*p4N8p3Tm)lrM%P{3$DV>&X5EtAPvOlc1l=n zEMstw=LxRD>o|GndS+;B2=->7`Ar?HI!AWNIsX&?kP(4#sXx)mVQ=f-tt{2T0%FrXVB z5rSAg!u!1eArl>bW4WenRrgX~m-)||e@D$%?lOqMSPYNjAi>x^&&i46%jFqsDT>Nq z#XMd<;GjoRZYBh=Sh;U(j#>PqsxO&t_U@mmU&pG^^p(g4W=IU$%=8JzW#w5#8-LF9SPGeVhRkfxd)9@HV#_hMjOydj- z!-sgVWhDZd6$-iupvdzdw>5fF_6!R^p=%|@@b3HTpfm!qF`cz3#F{VF1kWcm+;W@q zL;Lw$$6YCTe@}@D;*nN?#j>bK{OTULfXd33Z`jTm(cK1aTKM-6Wnzog@okLy%j3^Z zBsRuNR)wdd`=}df*HclDJ)(^`{j_mbB>l+Q6BRU)9^+ zABrG^NQ0PQn}9ZA!8z+}slGNq7T9GxWLK`m%7c2H=1Kd#vjn>KVy$&>+E8e#2E*aD zy~6%f+P#sPudqsCK|wZ4EnhmO4)Yp6k&Bt}13YJ`+eV6$OyG=oy?RdW!UCDIx0+zG z{0HeZQ<=1(^#&Ua*rw~~83YRMd8v2*JbkKVbr^=^wAZwXI;<|tv{&#jn$G}aXOV{I z`-dA6NC8PaM~3JD{8JztlEfjd7XH+5o0XAhKL4nU+h2hozVh=M->X(KfTT9<&|KN{ zF~=sj`7OCRf@LH1Bn*nJGYBbi393#0(P9;AJq){0DhY1cuDooJ9WYuPuq&`X zf%o#d{Y>AD@QLq^=@O_%)#KuxUZMn=f;+=V#7IyLVarbq_+L-EbNWe9QOScK5FPE= z+^vH-M8WXf+X*s>yYKTmjQ@Qb$yHrSm!I}kesy{1N0$0Kn#{>8XzIcX%@WgsB6hg$ zhqAPN+jm)8J`XN8_aBbcikLvQmp8dsLYVHxRPZ}(PD8Ljr- zf#6^SF%Oe*F%5cWrRv^QM{l6}pQ+S8G^^FR*x#D?q$l6v)^t!S@D9u#EBU0RCg8DY9vBZvsX4F9je5 z8A@^QODBWGtZv&Y6T?_|<-z=)1}y|jq%V!%qoiitcKI}qG>MKI1A()DjY5jX!PyC;N^SFKJYtK-;)HOkyo_>2H4Cs)jCqDBYl7YO!A;O zh<&t)#P=0+b>KU&w=;fDChy}9Y(|x@{f(=fC}$g=?9yl~+C&6V{r>d_X~UD2W~tlg zqmh?a@!sN@`x4a;e#-xeH!83- z>}rbqhh4BAF+Q}(JTQOheudwi?Z&y1TA&bYI{=ZBJ>`7R?)J5%tUqjq>F*8a)5Mks zfIT1?V0npeWa$4QJ}9FHDTe>28?gmyyMsv;Bes8QJMHg4&d5fD7Y_&X8H8Q} zx6h}*q)YHuJ?93;dsz7BcSI&3uE3&m{Bwaqz#b$elnH1q0rRmy0}iogbUD&v_>QNH z+y+*U?I-XWX9qz;G#Y9^SiHa50{T8jtR2>ba*~1?v}+>R@z}rh&O=3 zcE-kSD$jS|VraV(s1Y$SYG%ueGW%TvOCpMr6{~-q|F;6B7Q~nnIVKP*9*ch9L;Ia& z-S<{1EG&QkS;FKwGjVz{$c=YEA90fhFIxvPt1t2~dop4=kv(8?nyvu!@c=mu)DP)k zb_g!Uog=U{aaWkfvas?BUy%2MO8SmR&Jid{0nbC15Kfl%3XyF3C~fIVXrj__UFt0R z$pf~`m9~lsNF#Tq9BX7vD=M&Nfb7oVo}_HcidS0NhtTc+|HH081`m7oxXRxZJZy<* zL$H$#6S#+1Wjq5d)8*rqklnSb>11cG}r_m>%n}d5jKa7 z`9lCsJ~Q^bAd3TI!xImynup~`AZ&8XUG<(2QWMPo+j~JD5N%nylBLet+Q#KyhJEz> zYrv!Akr8~8C3D{Y07&D?)d%J=<~tgCR?`eR4d8~>P>e@7>5mmpP(RfddOiKJ%$JVp zXAA(Zn#SYTTY7qmU=(e(-^PH`H^T%?q2jsjMz)zQ;BA6ORQnwYu2ql7iKT(;)t)EC(qI97gudAaZX;34twJ3YV^gJ}CEZjvA%vVtG0xMp_Kco{+ zL=Z?gE3~CcV|`AW0fT>uePco3cY@>z8z;zY$kW%UU+O1DwZFim#kYg$RQSKQTqpz;nFP6V~FgdnIqvjYh z*Jh#IG_dS~o$~c10N6&y9BflQTx5oL&&{G~Eu|>KgB<}DiAD)OWZ!`KjfD#EY#7!ut0pwOlJTL}0t~?5!LEP@ja*p4tvA(4ceEU7Vw zHBkkk8j{ss8hK~Co&ysR;lLn?uAMqnll zgpAuBEDG@V+R*=iWQ)JOUB^3G#Kr&84ECbW7^+xnGsqtYq=HNX{P*LpF_+Y{XY)WK zc=YR*C85^p7w`M}nACWU^t>UjZ?f4cxHV0_iU)=sBhna;%Anz*`DYV|9?VzXUrXG3 zkwXR?QXmi^tgd1PCX_vxo(cO!Rk^75lsM}?bt1$$7F@?}zS$=I6V$k>8h5FJlj)B0 zug`?nKu?9{eNi0ZY00@UOsJSxG>8a{OdFni(>&M)XY6s30bd5o)|YhZUwS#6GP2sg3+$ zO}cEicv1OV1o`o9QF||ab}i(?>4>)tpgj^y3^XhVhg!sSoD|=CiU?$dJuEVM(cAq; zc!#ZXG2OFi;=t&>%=zs7cIjiTbp?vSlOZC|9Y!+%Ul%6e>w63#z4KtS0*M)HEU13l*f8AJqxK#-LxO?cJJ2Xg<$M4wkRJl;a9 zH@L2_8AS)Bc=3ncL9D=l{lri{#yNy30)Kohk@fgk;t-Aqj&vSZ1dwJDK(;v`6Q03% ziYA6ypfh(s@?r)s(aW0u*Lk)fZ~II7L?lrqgSOI_D3Lh?XcKU9!jCJAEs8Sa7ew|O z4Pa7S!Xv)1P|QA5zq7#Vfrqa=H*>5Z;e;<2#bR^? zcgA!F@|x#pNxXp@KA4u1)Ja|jxc+P>DZJg;zWX0@t5`zVwPRpYOJ4Mrn(c4;1n`{Z z32f&|;C$4f$K!y5nrC3nMFUPDZiJVWo?qOfVz zb^ z9l;$*qb?c#0hSEBzcC}X=oesufuFV!-KpXaY&b_k9ob_E=jx9m#pOq^Jq%RgCDwgJ zG(H}kyl~?&-||V56P)+rIUsW@t0$#k{x#_7xIf>Ro7(;lA`!&y;g5YX^915F5ML!u6h>v3-o(DU$y{M4q+eQxsU22Fcecwj2 ze0uW@GR5KCmQQ&OLP9{C@2GqNr2j-Htb+-LtwHl+`bi64cN3&FMx+h4^a44&@$G&h zSe+&008(%LQN3z@(LR?x@&Ce791c*y7aaBF1gy)(;rPx|8QMa)O4mC>;eU>wFvvtz zW`7KM!BO=1&k~CBvECJ}!|@3s`~8J<%S0~BiQ&R<0Anma>b~Lgc1d1gOMROUGD!#e zJyDFxn{ON}E8@H#i^HeDsDD;cXJA!5x^Y`s8NVE5u_kW7_Ra*v%=)CxP29Wr#2nr0 zV`RMq9(}0Efj-`LPho=DlSf zh7V)Fg--6F`K0ZmPK&gTUT#C{HxGtUqnzx~i-sPxU)^lAnz%5xAVIo=MAvJ7;4j;<|SaZAa9mU>U-)C^2RY+@l(@0Xug=QInnj>>n z)oaZHSZs1zqsoZ#krV)Q+-_98G3V)ELkC=3LO1q5zxoH-P#F@!coyu!t5qBrv+o1( z!ZyV8dK>58&tkcQXeBX1#s*1gzS#d4uB4@*{}m%b7OuzpoZCwd}*UzMyD$JxLrZAi!` zG|}Sm&Ku&FZB<)I1Z!q&lm~{eA{V`iU)K&FhVcvO$tJjMf@XzbYpt#WBl|1;^EQBw zz-1p?($|y$J6NXi7);$x0(T~SWLY=PBGPknTkR3Qc>u$CV`yZ8!rzI*K(68<%BWH{ zlaVxl77kziF7$804^CjhNn&KV-g9ReF3^gCH7Wr(6-?e8t^q>zu^LLg0ZoCsN<0Wh zc1oh2`xX8t7;?>LROCDOO7mD@zcev>m}#-q8!BV}a33L;4XW&q1WciH?Z9Zn#XHAHFtai&NmPFdMNQc|ZK#wE2bp?R-|pw^-jemL)u8 zMdtSGbM$=4hV!qT!Fg|kolnP%>P~50eWJ&Yx9FGK_f(y41A~Q;`Lmpkd)3JbXvPb8 zyQ?~voyb*tOAiNLHeUHU2-4kpJ?{7g_b!y2y>6y4I2UvnwcZife}8@+$s+Rc{Dlvy z-^Sx)aG)zeKA(&NlHwFu`NbQBOSZk0a=R23y@Y8mm}H;%+1Udj|6AcNbaK9MvVcg# zgW?XNErP>8j)bE zn~GxKZ1X+AI{~I2oi_F4CziIL(~Hs5V;?=ynHA|??EpAg@an#Bta4)d55kUb%IW62 zr6YaGk?d&yV5pdqLjG@GIGAv#ttGKgqKG$Re0J~>j@~uiJp{4yoe8Dz zK1Jeu_Qj+c*Jsjyk^+hNrCNVQ8Z>K#$Ak{x&F@(Q+A%;)R|cIZHtYd5N^#G9fMO0F z+e}Tq-To{&nO)R#J;80kMLo8fc`CD}I7&R?+w;z9^nRLg+M@yS zBiM|E&8r>oV-|4gR{@08`L{EDo?=+a1@pl9=lr*dpE7U)kJW1x^KJ+cFVRt>ppd`& z2Ej4HY=Q@bsRu)?&Aof^DhHw1|11m~FMOCU4}acI`nMPR8td<2m4;%)OAfMfa&W`f z2;n#HZhv+CAZ6&8eNkZ5Hfkxn@d`YBM$0BN9JG61kssitA+O$ojMgFudrN7(zro>i z+kXSjPCd@Dw15Zv)90a(uTr7543@af!ojJ1wu}tjK%QK+`yjGqpezkN@ZYO=fFHZQ zCp=4*3Jb~Z4nZ8RajoN`C8^Xf*^)+M@%Y!muD495;Z=ZQz?YBHC*#RDcPD}6y?&Z< zb&SvR-pho_7^{*y|9OyQFR!;WfGT0O?7E+}xkQ?umH1&lm-QHo45x5AL;!;ujN@w2 zA{xa)__*XNf>BZDmY8BqHlSbJ?Q$lzKdgY;C2%ty+Im;*B< zzW6N|5jfC(wNJ-NEBwv~XZjkC#ih!yjXW?nPu)AAJz2+`?mP1O#aGD|T9fb5B;Nv} zIXW2vX1w1|%GSo)7!Bph2%C8&q3$l3* zg4EELflsuwfvt_NCU5y(Ji4cGT2evVVlQ9u#_i9=XnfjobH--NJ4lpEn7OpOl=43l zdN8+u7xB(g<(`kGTfoLGDKx(wcHGdu{ZekOp{hefFBFrr^?7q-$}9g$q8m`LkXG~yhw<-Or?UcLSb+|uy4^UK1~hg%NP ztHCLpce3M)h69FwNUZS+epZt5_~gz6~!xsOl-{rFc>q{tEi&}4h+i`0zzE46NB-=I0wGIv` z+1|*_gE+MdSBpKoxWWeG&}w?G6}*t9Q6gVKl2OmPg-MC`*(;f zWQF|A89T@QE>kXT&)9O zPPdYMV7b}PLV!L7oKW$;PZSAzhb=Bao5_UuxFJcVA7~qbuFXOK4}0wD(E*`Q zd#u`Yu)#U!{=Ps@ym33y!f2P8&Nglqo#v)nQ ziAj^_|EC2=>JQcB*!x1B*ah~rS%ioFW>@+g#^O32ccfvmvC1`+p(Adn`gfzQ;qR$g zRX(3hLXy9YS6Gq3L|A1NOoh!%as6u|E_PT%O3FP9nEBY1yLk%th7_|>>maiZ@MQ1A zeQ6B6+lJ*~!RR(5LSm%iKoyU|gJ8ptM5H=Yy8FtA|5I5oJklqckPq2Zu_Y=9@(se+ z&GjrSFl%73(yR9AKj*ur0YNi>IuH#I^{j&_(4X`!lX^~Z=eCU7dw~1(RZVv0kr5{n z=NW$HQg-(jzPrk50)?#uaj&8WXi~4x!B;TgT((IqpAG!5o5DY|ZbZ;h*kMD~jssD$ zh*a07N>M-g?xusJcQ08QBc1e^+xAG7%*zz!n*cAy3O2phAZcE_8wB>XDuCnWj?6j) z$-TaDkO2A5F?F}_g)4nqtPCq4;576BMu+fMScpok9uw+!Uu5ttiBOUBvaQM>HQvK5 z_DtH$j|PJblvJH&GU4^2;rvMVH&)tuV*U8h($rcV@n%TeSKrQ2!QaPc>LxCjLVN@r z-FpUqz!nBmlhiG#7+NcwuU2Eo8g9 zdU-|B#~haYzlW$BiNqTo4(s=Cd$&zfiL@UK!nHr;)GtR1JUjnpFo7O9wrduz$;#ZJ zMXAnm^L#axUvXqS=;sfKW^T!6T6=o2C4sGyVsZh|6XW+KXLh%Pals72yj4h~)4aKJ zm(^JD9nd+Wv9U8pDG|;RI^S+xr=AsG8Z^AC3YSSGh!~J&33WpT9-3--?2;art2VO3 zb|a#1gZkVhS%9|J!&dGEKn|)rQHl76WLm}9H;H_MjrzI*Z>)Ba{rdcK6if?Hp+dys zkeuCqJlvY%FM4aZ$1kOSkzT1Sfn3n=jT{3w;+sQtvSJ5LbnXET-!)^EO4Ccu~cZ))MWD}7f|+1Whx}@J17#sjvT+j% z{Rv>EApr=83$E^3&fHrzaHxnu__RTgn%k!OyEdo8npEPQJD{fO(0UIlDf?DV&+B2e zSXO0#1`R;Tb3c$)_4G0YaQiNHQ~9^I$v*E6uG>=5_I@vaqii~o_Z2tX$8VGO1%ATP z-@K!s0CrE)e^Z`GJU|#@^xOSh;oNi_%dY@HYb=u8R1LS_&6KSwcCR2 zd1--cgDfwL=87Q+EX{8`jA^7lkddYwM&-vIKqSFV(o0}e7sXBQr7NQ!gMFRAh1*V81Wmjh@MsT=oPPw?l7(8K*}Dxko)789S;cxgM@1g!SF+;)=I7vogo+ zCU%Y!&%G)OVJIJE?$d7)O3t13bTjkX{6K8p4ao$q-!A*J$hDu|=d;hZ_*k??T@vJN zk_s~*o?!hFlv7YI>PW2#Z2gsbq&c}f8MtfQLi5a{YX+@`vTz!AzTRG%&;4BOXp5$l zPF(ln&Uf53D%X$VXbT7rJ^ge1`G1EUZ!9^05IL<$Bd{h_rN;U9pw-!*kt=NiziRwY z`ILy*T{_`NwznNab#93LAv)?x3m0$L%RTBDgcvP5f^1mcRC!GhAJ?9len{tUs-C?D zd1F4)7MxC(!&56ka2}43Sd(k4c*(Yp8c5#aBEvC4hxoyp8*URIo8xj+p4EW(>4M>b zQ(6J)550gKQ$k+BM{AyIHL%|R#*lm;n1NLi?rud*a}zAS_3c+ZC*(LQ;*g=jkyS+R zsFi7;<{oJht!V8vFyOdV*%ct1Z$bGB~d;&^qbr-4r^_r3Pgnu~wg^^?F*t&?5E;9Z0s?Aet4` zw~T;~!9HspbnqfEgiaUC#s+1$1*1i84+POiKK{&p0bY4cJK(Cv1 zk?jNkZHi5*x4OqOjyTB?b|l!Q1d&CT`iwm}ECpzRgTYww!3SSUOLTCc|8Sl<@JPi8 z_J`O__jh$mw*CrB#fo3YepR*+Q4reH=l%+AR!^AUptfq3DOyV{&)eXjI><3{p@ZKw z6%C$8mdpOZ8Z&xfm>W*+@>dc#1+Nqh+x}#!iDNm~V)6SGNBQQ#k=ZGd3%mTqQwtv_ z0*6}*ndoLOR09*mBZf5`krf&!JDo8UgBZ1Y9@TIWPqVP%k$mJ{QnTYRbiaM%0%C!| zdyTU9F33|p8fL{RI;Sjt+qG{7J*yauaXoKue`d}4)z$2u%_<~#2kx)+E7wzvxgjYt z-PZz%+MwzZ(MefB;Ws#|SIey?CY)BDU)bjQrGNOwAOq^Af9zaoe*IPpW7|q^D=BVO zP=^lDM_RGZsd;=@@(DgjLt>~@*aJxYGbz3c7{fZwK53w@CBrqHGZj&mqHF%;pQ5#G z06&BXQrbWmnfWSECmglyv5>guRnL%GF~Z4HX-wX6QcHjEKGR`>|Fd6z^~2A+=jA zH^sEqoZCToq$$z)GmM^%nxhOm_uz3O^kpMYPUjo$9^onUofn5kr<2o_MnfU;g>Mga zDBn1|hO2qqB81$Nj2}^ICoxTnR%Jh;m<7*vb>Hyv?nX)2#mY(*FLE0s0E-tZGh5$@ zf(_r9m7%$9yL1O1eA#u;3TXdsZ+b!kJ=~%%q0sSc*%^kcWl@54t0Qhmiy&{VVk$TO z4VjAr*$p|qe-lR76h7`;SsrqWr+z4ivL8{-oF-_^Vr<+vNL3^B^BFDL2KOcd%YNNu z@#n1Ma-TiYGhiBe-W%~QdROa}%st-UC8zfZoa2~$R(Jnwsii#F3HXfdDYhl1lctQ= zUqv(oSqupDdp|^*OFH%`*#-K+(HezUCdc1y_4PB=YKA+h(!Jj? zF<&INUd~yA-P=<#zrR?9=Jh37_mUH1jj>flKWfp6=xFYo{Wj;KfulFJJ+)c*TAo3m zQL#GxlXGXg&LG-mk|vwpatHu83zS}B{PN#LqhE*tvw*l@vqfw*GdcSnAYw|KpGfhT zMiu!#X~Z~7f1(hk&_NT;?UaKU-@TLy2Pgy9LywTp33UB*E}|vYw`sUES9E=>x7|8~ z0(IcCHmqQp#-Ule?L9ioiG1JL2jTCjYiU}XWY(<`H3yxP>{jgB{*A7>_8`IaqRPt4 z=_@9CSCtWBHto?BMfrLmq1AH1-#^!+h`LB`jr}3^7k63u)8C%aG`8;@%q2prbErF} zH!MLXwuuP`LTDrZ+zUx?FF2$^o1Y-@{eRb@N`@O;i*L_$5#y=hF4l6Yv@gD&WcA@b z#Q360|H9!#j(_cYTCyW+@g2@n+IMZ*EEl#qBQZqtuBjN>$I~EUsX1@DvGPwHHcbc> z4YUU(*#X|;iR5-4Qt}V-p{wiDmv~$JnRb@AAty<$Ec6e-m=1Ecxxd%Y-=*@amI%6$ z?9RQZEh27k;ma&rguXtiCO{N#7ssNY_}sgVmBT15sgC5}Aw^RV^iWr0__0NBFf7`_ z+MepMg#PYaO&Ii_C}_5gp2DT$}c`=XL%DJFC4J#A*v1HX>UEc_aZ6THht z(tD6s)(^mElVCBK{RrG6(mSgM#QRrFDaWXe>y*5UCfW>{3Ym|g zv3(tFv%)mVOZg{kEK6^^FlOHEU;4)}|LwDkNo)=Y{t^71+)i=d=Ck3+JN4+LfV2nQ zAaFs6Ko>!8mK@bFKt|iuxHhL%Y7c9PLyHF@~9nOx9DEZ=Q$M@0e%Tw z?4T0S+{5xOv$)G&w-{FMELG9Yp}(GIc%V4nrVvGmls|Ho$-c&vFgHhHR?vN;GQNvf zJc;9^=GY1HPxQOGS~S4;7R{#uUcmW8K^|2`mhp|oR7l7w!QG8BdG(!<-ut>t8i2EY zxNc?B3kg+=O}BKs{@Rhw(8Uyjfg<`gEtslu@kVl3^qU9k^mn`DVl}?O*6SMKZ7|Sg zv}G0rD$zzrC92;hpGg2N7Z~=AQYsUImeAGL6lS!#-Y)kG0r#u>8@4Run%VI1-Ou?l z&=VwBMo-;Ii*-U>c-E;5CCugX?a$0?3pLUQeORZ`mGC0P`O)z`8T(swnBA6XOd~rE ze$gYBf{d_(*jBY8zXYFW{2;X$HHV|XI0|yS)bf|x@_MWFqz_3hpqliQ0f4I6#JVdn ztkGd+%;tsObb$engNKX&=B!j#rGe@94x^KgZq^zFryG0dqLZXA!zPSsE+15CSDLL_ z$cAf-6=&%|)L6m-)I8~MVITx-4bm9a_*ZByEN$IcP6Z<=3hJdHnCflExIum`3I&}L zHW0O&H-_e9TNOdnHXTRv)}?8j*M9Et!aBFW#`!__0UJ7dTL4=FNlH;KSFMwgN%&8R z2cN@Ei?LSdZ~i(C_EjAhc^BK3PMzW1uf00&oIQMEd_wJfgMDNvV|*lgJ1E-?QZKq} zMT^@2OH0DV{kNNk%u%y3y>Spv03bbt*R0#f$hGp|(rXwOZ^Rvqfi^-tUGRpEQh%LP zYE$t(9E1hc~Xh>gsxp=oF&l3|>9V~W0f%Gr_@fZxtA312dbJRfb;4ZAh##fD7)O9rh$ z)h^RRNK(4(PJo?7z-gHU7M3dZd!MSH>-!AOxYn!_uG9oXUl4`P{2aTIp9KVt#IPt= zoeT(&g8YCJu`8)5#e*>W=D0tRh&+&xiD$sXi(;%((PATbBN+`3$O`q>2x=d=f|GxA!7bO60kH`Sh z_@He=Lw=oF@&5z(G5VBxZgnE)#h=D>FCi4Tunp^m52RG3gmo8#IRtGk=Qy%~CxZDB zi8bNf=W~Ne;(W1y=aNwVOtk41ciThc2yT;{v zDt6AnBKNrArNFeQsd^2~g6~((2Tcj_obB;{r-FKCBnD+90 ze~jHo!YK~3`kc6DQKvRtgtmusS2V=)g9)uL8=WO^*@+3=xaWq4uO%4|x`}6H6`h-o z@NKNSPq{-=GE7YA>SP?-s+c~Rx|e0hWdcr2yZbnCL&LOgvy!&m$!LXI`=PcRv_!=X zjgKJY@40+dp2(qvRc|dCnWtx=)?R77J>YP$AslYOrDb&lV3RH(-6fCBLe5&`H)yQ2 zYcfX%uUbdLZ2{v@EfYN3FO2*K2$yKSL*BcS*L&Cwv4cz}ig(~}bA z8)`Fi&s$>nHwn^ zn&L3}ph>xhUl<}?V{P6UiW&X0eB##ZG~y*K1>rYYDaq*cy{M1}KK_@bpB%6|Z7U$? z+GsgEFZdgJm+naPT1Cy-k>obAAHI!c_nodQiHnL7k|J8;z10gzyMe-Im*NOZso%nE zuwSdFW6Mk`EE2#(-PAlTtcMki*@_9L2|fxjv7zw~4Z7^C3<)0$NF)zz9<`^5PBf@i z880?A(Q=**qp9Q77>-GPfacMnII*&JHaza6vAXU^wzvP|3m1$vt97Jh(uMmW#M({+ zoKVk(e1sAiGIz6=HxwjmUx{PkL6&PGojDMK6%>Ws#dsydl|LUaDy+vT zkhN1VP;hh+W3*NrN%o^Z~4c-l>J73M-&6$sp z!oB~!<`>h%qtsGv7{^rNC@J|xOtOdTl!j-|gG1E<;JLOY38u+#&NJtTOoRWo9TdDtdn9kqh!P!8lReruR*1zB?u>LhRMvM@6 zoTKiy%G3ZyMTfT>Lge}KBlUW3F2vdJTIpQ8`S5%)=IkL9U;ExYYlVi};OOh7IRo3nLD_gY++yY^*k@QKhOox)As*%(hC7G_k3ElhoiYQ=VYM)9Pe5r8Gr!EC zZ0nL?xZx!{!yOBDy3v76pX>A*E{b#Dq$f2T{X_J=xeJO^0-ZS>UxctAwAs7Juv*Cx z(am+0TLY1jKu?8O{3@c5gVY2tB5v~`J&zIDWTn~}_c+O|>ii<O%LTzaftN8{xF6qp98di zT4DJQInZOtViO+qZMQ;Se$4yi!A+0O_dt?nG5mHEE3lQ7NS%*~5&7A#$`+oO#I86A ze=c9AM7Rq`esV!}MY_9CB2P`rd#GQvh@)TGr|vrh^fPVH4+15|2_YV5Km*n~sV7=E zk7Gfu!6)#G8Q6|zSp$58!;uCl*MZ?)6XuZq*zdbx$LY z=shCX*=>^`Z-W~B1L2cyV;V__s~Sp>kC&L;Y3P??aBpzr*%K)Xw0W9lsS>ZlI`BmYw^FxW^V=D}QkHGi0I;eUhnvC2%bK+Lx)h;6zi0x#ol7+n$tuOcp5}&Z`MM)W z{v4o*ZM<;iep|lP;m4ESw+kl2AwBl6I9T|<&xge=UZJKY>il9-2Wz|)neozd2q|Z> z2GkUg3OkPb$2A+T)rkQIvZd;g1>wtsz@(hIP|lx;{h&nC6{ z3u*Z%MPEF%j2ixrnr{+(efJ?{Pt7ONtf@^F{P=A|Rm+zNr?!84zO$7+2bJP&cPbkL zG>%xAlUZ3Aq{ixP7+}fnK0`R8A+oJUg=>3 z+g^C?&i{(qwn`Q*0gQ(e(4c6RW+Bf%Y7*e!FM$kmfM>GXtQ=iz_vW25DR5?3w6MMH zrmw6Lz``dD>73vIx+0WYGMw;rCzFWBkZlzUBUDL4tLb4=^_UtOAsV=`GU{Lj6bYLW z*)1>hYai(!NG@`UDAjx>pjj$KP4~h!wk9rExeIjf#_FpB*9=5?1?Cf5(y_-Ma^tZ& z=>yVlMIvYRTFuulI1Sz?6g0J44;+QR_A3VglJ^-3eS7IGCBA=iP}kMIy=k4AT4fP2 zuSQXBk(GqRJJO6baqKvvkgHCPUX!tt2vuN{$=rCZShqTI=vhcQ?htm)Ne4?On0UN5 zeLiy{1DijftD-UOwRR`XKFye5?JU?2ue+^ zw@j*fs>X9?-+v3S_f9%Jwsy_4j9a^#AMOE!PUG(+^B8cHzrhgsx6q@ui!m8&>s$GtKtDo+nGCEf34l>C>0dHS*AHFODbH5USLZ>7ed%i zK|-fx=h$>nyz9X0Nv*5(^S;nxwDv&_=hN|^CZs9Ye zj{F?@KZ?`VE?h8k(ZTCuG~Q_>6sSlpV0<7YC+2Qp6x<+04Td431L9>VreF9TN$IEZ zn@nk)X8@{;JGc|!{BBR7p`64odX0^Vy=ceVwucGjbB40Bm{??XN1-EODs5Wc2Fw0uv)&eaPEQBe zZB6Ozg${uz2I{_k9$uv0e^(GXb(nP%^f0nm-2P*hPTzjHzk$oXy#+_zT2#0QX~}ba zZopIDegakc!zmjb_a8SRIli3tzbgw%i5pOKlaq2yv&BI7m#?PkMe;$EQnHxRiO#Ra zYIXf_2X9B$=*a%^@u-#e(l&V7`e-zDJT?Obc&p^14;kZ1wvo@yw9ARPn*} zKP>>vAEcT$99}cgeOl`U-l%#{MIXTtzHPIvhQAhJZ2nyHMjM&a{D6m}x??8n38Bh$ zH%ce0G>o*Tm5mG4OM0GdjL^C{3nEOdube(q*vogMvSUA=gLmZFPv!sBh*~Wrh$a{S z(3yD6O`&W_#eGvyQsJcj-aN#0-Jh z2fgsqC@Bt=Un>I@4g9IChL2*O7MsA)E?%+|H09+fzHP4Bh)Zbdwq#jR zBVT=iU}!W8jO%XFDRG!*RB&kM@}NF5B`jqCSZJ2}&~NS|uq=DdrL4@>{UvR;Nei0I zBhVKKkL@ZqBL4uAIf4{e8dWdb7&=!r-_GV&Yq7I;fP&Wb*3I1p?uHyYQ^#~c%Xyg4 zdr;P1&Pd>HT|h%k)JH!wzx*Q3^h^~fm4;jB@oy<8{44kE%$qc65R=!(d%jTa9d|WM zYCk%YlOY6Fj62ed9`!C#+YQrqa$FlVzT*-Y%_5Ru@r*kD5 zHEPskiLti}AKPm?Sx0vczKvO4_xM^+L%X68<>XOFN%%7SbK^y=*+)kxgJ#`HDPPuS zcmig!DBoTPQpj1X3~QyYKg#_O;Nh)KuW!7s>W$lq{aLOqx|p8cio8X)3i9mtRMKy~ zy*^ehGu9R^Kg%oO(^}NRHA>V~$p(M7BEGtA4(eW>^WgSxRjUVh-!K{oF~WZsH)FsQ z6=5jWIwdiG$5tyZ1wvANXiX5+0iT}t@iws!NV_=BZLPGDnPh17 zQB6~FcD+GWKVDto#EY$ZNS5YDQcJqZq`K)PQfFr!VjuJI-&omH;^R#8B^(g%bQcT5 zA)!%-?tc{9-i|C%Q{coB-sw*;<*UJc85(Cu} z`mF1$V~JD=`?Z_JD-gpJnKpoUrIbTLCSJW@PGb~i)^d)!Pb5Avh;vYX$Ix_%s5|CStjp3oNnoNB}_km+DbS;m3f z(T|F@)NZkS((b3v_c|q4IVwYBf#vv@?)%G3(0f$mw9uqD9F+U!XF_)M2KR^{?^s%V|(SwHT!HND(@W+4a;-t!2SNmiUKAL+6AO6NO)Js zh(Zlx+;P<3$!XTrFyURs;w{XXH(I)!giSDrs|`0y@ne7A_9;12gXFx|Ij+T)SM>4s zUGqzjx063LyXq$pq~|e7oN9E*JbGEa#5gKp_bup=#bEWi)~`DCm<+c2Xy$PY!o@28ZlLTz2HfahhUedPay7_rJQu(m~gNRAk*_3e*`k&IANBKr!q0 z8qzg56oc8sCE|7Yp2R;qbQwqh5($(9?07z6;4JjM9603{VIDuL6CtO4aC3>|xU*9{ zI2T>*FIKP;QrDfUN5M;0!t0|(^U!G$9w$A7@$wjc*+tKKvLv7RcX%Ix!ot2s{5(z> zG_~yZW|NeTU581VzQ^Z#zcRXOEy`t7S-iqVgye|Fdgd-`=u%-)75zV-5oHcKi$9xA zUR(ojhd(P!0!R6HaqMZiyyE(raZ7YVO2v;{oHTH;sib}$slyV5Nr<(Q+A9y(^JNvk zyJ8!gXgE#1i%*?hUDY(+vY1BvNhdaNwXR6^0cPCG=$CHZ>Hi;XZy8n98g>l}f`BL? z($b|g0s_(v0wUd^5=wV>Dj-NVDBU5QdrLQhba!_*@4YzZJkRsv`}>Wte=rt0T<-f? zSIle9xw>G5`rDwkyF!%pOTT=irAea&ShU_Lj+V{7GP8jTgFCDiPsOlnwkR<9S>V#6 zQw*l-bJ2!Fk^F?57>4a|%dW^id9fVgRAmWfjH-$z=lIjIsyvSAClst2YW0Un7p=3Q z=nX~X@=Uvl^3n5$jzcUy#5LU0?*S;S;Y9?A zp`vf6bO@%w+i=cZziwUUWa?gu&$q>olb)ip?M;PzxVkZK$Scfcv6r-CY<(>2y?vi5 z$B{}a#`5ele5 zb?DxXWbX;Y1^9G@6B=mMb{=})vQu&%zA*5^=L9+P{a@$MGxH@FwKSh z(3b4Q*dxmi$1j8SnzJjIR2Kh~qswikGK%v%LijC?J5(C}gZ?!tX4DHM_ci zH_b5lTbJR=i{_zAe+6&u{B~av{hbh6Q@~{fzVN?Ppi%0sNp+}XbTy;AxoWLjDN4=^{mUZX1js}7#80+F^oxpC?*r@@v3xB>q{CO! z1jzn=9J7X7d`B1>E$6vy{1Jn(OBU!kn_$uM^biRZp~&+-HI|((w3pf6e87PR;ZPvS z0I(-ejr0YlxReI^Rwq6!=&>TFJftFo(HTJ+yU##+6o8}+Vcrj!R%j5O>^<<#JanAT zuIM_&1^vg|$T<%xI=dZib+D^Vkp%=RTXc_?eeGX~x4DHAYk&GX0TuN2QBcqert`;N zgV3_X`40)4JpLnqHueqRd|P9;BtL)wCXe!h_lmbLZ*rh zu;;EWZ~El0f)0GJ)Q*M4GA`)eXyxC>oYwUc^nB+jJ`pQNC_sVJjw$u7@L*Df)5+vb zxFqvqfFdigNGn#9+E^3LXekz*9Rj_^0{7!vKAT5EA4Q3mBHoHitFf`_ffb&5YXgg2 z;Fm0C27XsPw#Ezi88RV2UZHMVd^FpI5piT-WZRQ#etlg$?kEIRh~T1y%Wr+ua$~P! z3{liM{slK`haqE4R4W(`^qHW!N0rZgH~|pygnq}+4sS#ZHd!?vnPn_H?Ot|;R904U z?{$IRLG+!`5Szb0lr_|=6RoxuFenUhaRnCN6cXt z1v(o3jwxz0x3)B|+EWv~(2Hg4@y<^ciRw>2<(ljVTS~Q-uIB8z66K!WA$s*Xc^bv> zNnhPD|K42sguBGGJAyd42<0@TL@0x(c>iEnTT()#@2-wFU%TzU<*dA#AOHBn^?>*6 zOg)L6gJ$mZ<2He#{6x?BD2@xG4B`z9h(f)af@CDAduIm?CLIk}6?Q8>43hRONBg~Q zZ_N2q5)}$ePBYM-SkDZ66B0oe(5xS`q{ZWNZ6dMLp%JX*Dk zd^%ukCSt2J3VVOV`|`oZl~tl5E#~b&Ke!=9F2o>BN_4c#ZC4Y~pU0+%JJ*yC(|bO8 zpQeC}s0_!G;OWo5z*;e%;kyTOX*2;lvY_{$cXJo(DZze7f@qasz=W3mBf+^Wnnxq- z%V%3m=4|xN+m>g3kB-(hCVz{9mVd7$DCLfn^S`^4 ziWR4o|B0;;&0WG`9l=$=^avkd65;&Fitb%gm$Lha3d;|^kvGYD+~qb*aLmI>1aZ4D zD=OKTTtxOJdUxJKvQ>ZAH+^8$>r=6SQ>WK?7=Y++OO1P}!Hf{9Cy(}v4^;7NB$Iqi zHuEzFId+H$UKU7AT+1~uwFU=M!t2|CH&ucW!38@To|C8LI)DbP3FWQ7r2st+eRwz4 z#KL`eWG(~!0ty_e_@FiOCmbs{oBh$)Z>5f}0Fk?e_7=AUf9{jvfEEI}Z3uch^gwYo zd4qj(5s&z4hR$5~FXapWB}R7$U<{0!@H8q&Ub{C1}^%BEYz8~sp_e( z`N(*=YF70CN7{&KH+SQt^6|IoTg~OisVK8s{(evGVSw@7H#$4(QS{7zGJzb?Gy*UU z{@B8vuL`1&;G|YMaJ54H zy7uBh)R&iAo^}N(!B`5FO-yoQ)s4Sj;3=rg1OcdftEAU%B&BzEdf86Jb{{r%lEy$U-AC-*zhEN&AME0pHr0=RRn zQZ4G|tKhYkkB<1YdOR`@9(lWCd~N&kB1LBoEw1ekHmFC_KRZOl zrKE7<_EH_I0FRZ0Nf+0`CCf&zNhi%n%B2KFl{~eLi-Zuy_^5JuT0u4PW@ACKys4=@ zTZWPUVhoBc7EbZ4LKY2Dmev3%;cGwmlB>nwoOxcWc)9sPne*HCdX5op!QH|yD`e2= z^y0pF>SSIYq=Pue_!v`43MJ9t7g|sj|6h?UpR51H>`3ACqHn&vcB+e|J3asW>F&n< z)OBlZa++4E6a?l7tkR$y=(uJzGCmBs(j z<j0LpCjvAc$&q}174wpY!be9_sL!lTwDHwkPlF+C>Fw!l?47VR%DSPFXv@{>J$5cAL;0CX1)>W*h&ev*j*m?&Q+P{I3J}CH{jip0v%+if^niW z`5x-0Ym%C>Dr4;wza97Ve<(?;tIpg!da61DL4!?3R|n3?N^n&c9XogWP~z`DV!sK} zAru3MZZdQPLaaxAeu@Ln#{pQr=)9&uqBzxT{AosxcJ>t%_$#E8;RvwT6;*34aCsNU z-*m@C{14Z>?kLdE{dyX+ruXQyk*?tPa|CQ&%`KFa3VI1s2q| z*D+G#bCiTC>p_93FmTa?liV%srsrC&tRf|M(OD5$#^Jvu_Glrd?A2yvEFoel-0OYk zn&7+ZQ|Y-XFH(?ibFiUtD1aAfiFp0D0&l5lb|d_=@ujn?B+#Cgj$Quvl>I69OUDIO zXVs#QHFAPVH$pa05pF)592u?Tf#Dxx2m&{qCw;Xd*LARFLPtNin0htXxh)-8;4?tn zIDm`;gwH>&`ovP`yy)-2epdYWTQ)t%K|nAN9lqgFPW4VX_(b8X29h`PTVNbkr6dDqWF#-N6Jb(x~jZnC+i zV+Z?ZTx$?`tLexg39B|PqLRCh1FTjd*@YEk$gMW!~F42^N(MBnivH@RTW7X;F?i&b|9skSvKd>N% z6%hZ6avg)9<+f@Pl6Qk<@y3ka+9NaKh}DQp16;1Y2A3S@P-JMLwsT9!d7pqQIli)@%CE~rE2nF{0k&J z68s=%%Tp2c>I*t^fY+`}*Wyfay&|;8`yze>Q`cgY7V8(gl4T&oMU1@JU(-Q81FSeX z*MkrJL-=*PdfzxAz)lVUsNB7@pAEjDWMo_I)lHxz{imdG66MA?BSv{?uhd$Y;MMLn zqrXBRqO281Bn1IlEqP|9<1`r{(Ltjvub6s2y>wJ~V6DdT>A^{mUE`20x!%OkeP{jv@-5t{xVhb@fJb4b=M3_}VW#2Oam;&BXF-`yun)v^; zC_DPg7j~y(2^9i5r8$odP`_$Mpy(GR#$?h@Wh(FdORdW5Wk;b~4C#(ORWG1LGP2{J zMPPX62Tw?R76&+N!`HUwy#0W7GIilkh4}FoSANu>EfwpI!m(t?RNi-gHxbaX$g`F` zd9nx5bBpye@77-+4*!6_iY4(w@`(j2slB$)lt`~()D9A_?5vzrZ1(hq1FwtTvS0T7 zzvC6~&A)p=Pu8~GmP3kn`rX#-ziIm!8UZzy4`;dsnO)xRsU8V1yoy6@2BmfahAj92 zy{CF?m;sRdXb&_|Lfsb;OsxaG>IoWW=O>E8>OQD3XX7t(Ef%M4?l&iBnw{n9s+D)) zUMlHsg(jtJAo5E1rJoeY`=uJOfTp7jEF|aWOOb;FN1tG6)%|+N(yQXRu2tCNx5V1x zoQ^M|TuuV!-Oxf$lVEWWbgvA|9=vUQt`IG6_?cmcs2bUP;aH3?fVkaONpQD0t!;S z7+lxGa5BNd)?a}`$aMxY#4g4GTE`v-nlu7V(#evy-d_n=Wwp$@bFkt{h-@Su{BjW^ zXkwYIC@Y%9IPX(=BmMb(^<^ht?Bq0P5?h2PmEEh?E|i~fkqaNMI(!TK`GYMo6M&f& zc248m;C9gOz|4o<6^;wz3`4h#7QZb>kK`6W#9_JA3Pel3&%)>)-NFZ5KY4bnX_#b( z$K(|o@>oTg#z3VuX+)r5RD_BjTwAB#u>|!g1?#?~JhjE3tuxk7ZZ$=)blxFJn^^^w zEkucBz~f7M^hMmLBhbnJvxYLl0aD<^=i3lR07_cW2zW=$M2rT}_Cq4TBixH0&FnfI z8!Tv5-T(Z?p$|L_^G!mDl+22kg3m&|t|S~3>#ONqb-?x#+Ji71C`wT?BWDisD z29%zlzC{dpkOtVKD8?OY71>bB`$9N|D-x9Qo{U_J&F)jcPO^@-r2oj2^@QM92m|9a z^N4aHN!v4wALTy?1>H1*<#h|ioTY;$k2`)J3x6C`F?ZXy;7m!?*is~kos9q(hms(c zpySco>>u%pE=%b%UxHL;lCTH-hKuuIBSp(g+nB2#^l-f^M@gAlCA-VTse7Iv;;{Wf zCcDD}RtvD-zpSVX@DH5(UFAaYN;m#z`eOp;E{R?zAmEfHtKZ#lGn*YVsMZr}_g|Pl zbv0eVS18r$p9vYk`?&Cdqz%u#Ha4$gvb|VYh&hK9nFWC#A#Bc^kRNa-u)s8LEVvg1 z2Lh+Pox|mn1O-MGlmM|f88OvU9%`b2(i9T%2+N#6OBSKuc*mAGX!6U#Vx?2kl$FOz z4dP?vjl!kX+CI_UC7PXpovuwp3ThX&Lck5*C2T|BMm}?et7@!gaduz|7;%Fn$=jYcHnYnmN(((NC3&gm*r1Gt3T;FeLq+d{=CqQg#A@f|D6`B& z%v0jGh&#~Obh)J-fz(5-zm^pbf-Dg&qS6P#fqdvx9rmI?h5h=gUg~;i=tC5~EA7z| zv86_L3KH|P@E`=WEb^8=YQdLRCiGhS-K+Lz{Zw^--c7FjqQDMyu~Q*ap~#%*Ql0Xc z!HeDM(;dL+T<=0zSXME|c2$(oOnWPMU4<7W|J<%KHnhk1@!K{UuFMxP*9#3Me1f7{ zTRp($8p7U|(}(>>A$uB-wDm;T2G48*vxP2FHC+tM5InB4-X5<4${w^7Eg*Ivur{m$ zJQZ3WeG}F~Pq9Gt^-%F6 zyVXUbQ&W&1g&`n-C)#G1Gg0Qsr;XU#69ZTjz?R?87mVDDZ~tePqr=e)UYd>vF~|`*))}`lk8+aRE4s zasA*^I{oO`Lg2~$S#w!DjxkQA@&=+1Rz$LYv-7`QcHZ}XQgEs0JX-+#KB}#aDrHXM zc&tEOf1ITL2j__uNNdIUEpe$39soXkbl_fX1ImREZzuss#Bxvo+#`g-yrziH_y20H zitd?so{s*a2y-NLv3YhP_*(V2$SVc&iU-Z<4*32BAw-2YVs#K8OIxDfH+VzwlOn%x z`b}jh(iOyWzX?O&Cr6;rU#m<8aao2w24%c0!c!r0PJg%?e*8Z)uHmyHkr4xW?~HO* zZB7cD>(CGt+=-X@O_i#Fhr>~T=8#s=${D`LOSYNiRQj{IO4_&Tr&HZQ<`@2J`99S4 ztz~|d#N*?@;e-XGu;O*!Kdj604J))Lv=|csK~F|o_m^xsW*)|JwG1?w%ROfrs{9;- zHC7($LY^P^>r6z+_x{HRW)3_au1$FFgZ#iziCky!hJ%SUqvf1SdBGq}Zxr4wacH4}pJY{o%{ZroD49xFOh31(B&kja zYRV|&LuLBO+*n-<-sn_C1cb@kBd2~0V62w#Q^ORX!1%dAl&vFcQn+0UAo3g@9_DeS zgPKBIfLk1Qm)w`kT8JwfZf!gAgJawo599}%u3Hb)ax-b~dc5o}`TncL?Ev>YPeqsg z1rFs*Rty1V!>9dKRa$VgT?2-b;Ft@f{x=MR(v@oDz<%7;+R;6aj?(>ZpZEGW@LkAJ zxuYH=Ld|{(Aioi1OGk5L=aSnyaGpkuaTaahXQ9Y;`+ANOdn*V$hiR%krCRT^OFNK9CNNT zXC2gDqt}WmzK~8c*!GQ^8inb>L*R6VmEu}Irq6)Pc^e)yCEx+*O7+YMTWAmfU zNNqkmvlw*hy(p{7FEOYr^>AA6{mc!##_~2Ji^l@e-0T%f|6R^BpMQI79{0+vZo_nY zhm~Ei4J5&K)l*^h>Vxbp$WG$tWG{B%;1kD5l|Lb_%(Gb&W znY3f0h|!1Ex?#De*J8Y3^Q*;LgJ=1N@hcdS^(^P)^sjD_8#-37m&AB2F!Enl2h9+p zeZ+GB2gAI9?9} zPHE$!U8el&7%pl3616>T_K(&1G|o$-Yy)T)hh%Dt`h9g!d;T7~{kUWN2k>d8$1oEo z2T;kg)6N`sH|UkQgFiY0NyB!nGF6`3C8{wxDRNeb z-wxGrH;5i8;MbdH2VzPVKm0S{(!#~xzd@zPVG@7M2ETiviAe;`RogzX8hf!12Dhkr z{9K*=iTQge@w!MgpDa0;w1-hB)w7}itfxNw`G}$fS^%%t?Bo^I?<*6|xHnEIsU^4$G-zs^g>eWmUnC?Oq||~zM zU(JOKBW;77Pm{niPFdV-S!-)$d_0e!+z*~n_*Yl;HiomQvMB4ZQedvGs+k_Y`L}3aSu3@1 z-+&M#PtA(^Q&j~hlxdGh@CUcVeuZU4i73mWfXxfx=D83KV&oXVofg8wN{$z8*8hTr zqA)3-GHQWG4cj^a4A^2-(g(r9#kwd`ECoje<0e&9T;RVIv4;kvP3@F&3B*Q_ zyf$Sf3WERr%>)!JtNMUyuyqRs)*J?4o7ISZGn9hcg8|YunNS82JP^DdHwL7dnR{;% zy`c)|O-9A*EJeXOD{;A~M!!EW_;6OWYr;)}oR<0N!NIw3d;3pE*mLSkf2tPhX=3Mr ztIOfG7Pv)H_%~7cASLrt{#eUqKpK!^24j^IKsJW?$e0V^Kviur!M%PZ_Nd|S+0P3g zpDVchg`wyEZu_azp6W|c)U5^LLGt3xd>ZV)j@#~M1F-v{Ut5_lSDvfV;A=~y)GG{Q zf~@ntVXqIdigmVu8?)i!1-kcF*7o~c+g9Do{_v?Lygh$0B(WBuIH-ciK}(WQ%O4d* zK++F{u_flBIF&auUUINkX>HUB<7|hv9Ia**Ej50Ts9CgG0r5Ts29oTg&nlD#VrG{0 zz$Wk?%vyu=@@&wT=4{z^8ND)BW1aw(lW0M5%xNB%M)BO?5};Ze*gs7I_y36ZJi>#z zlLZ8$LvRC(V9ff@vcg96Z~6mk_lK+ZvEFX~)aD`p z6bu5c`427m({HLn`S_mV6gSM%W3I|Jis+QMtpN>~om;{9^w$&cTptz#i8uWd)_Bkz zbqakB{rAKl0Zy&yy(eYh#nnJ0_xKO|57R#_ybQ2joFvtSOqJ}ijTXV})k}b*zLVaU z5QDHN75y%xj|E0S{T6TCv+qJ(wJueruKDs$--fVDtF)Q3sQ-Bb&481if>{5s{|!=5 z`@1q3q>(s_y5(-g0rt;f?wDc17R9K30fZMv>kF2kNvXOuWlu;{PI3YhIUPwJThTJTn2qr|1J0}rF0S(hWw@Fwn$_CG#bX*Rjq z_r0`TO*!esLWC?=P)PGV-V3$#^t{0ir{G=~a#FF?EdBEY@p5aMo-w{~8gqz#7*mNSxlz@5x+z8bzCl>#!p(;E;VDNhWX<?XO;SGk}U6 zn8#>t-)#U?anMXFqEcQjprhdLsP_(*L_a%VlsSTjqRPyy#OXNui}cGEMP0p5Xx_I7T&G1Q*0Vw%TiIyPHTSM-{TJ9z*>UZ4d;97 z0-)F0{?8z46IR9k4{2Nwj#-8KXM5>#Pkt&Etce@Mc=69s^- zc=Pvsf1xxShoYqJ7bU9z`&5Gd7(EO`Puy-Pi|Z$RkE`;LQ{1vPFY=Pxfl}`MdZcVt zb+?G1TCbq&f9Efbp-|`DBMI%aUseWy8`P##E&jK!VAPdT+_3RQmu1@$LnYw>m1VJ% ztXmeZ2;WeNnW_B`14(obZ7qN+RAhFqip| zQBQdzh7Ob#$a61JDQN1K3e1NnsUE!7*1X6%DD)jXfy7G)8JFM-ucZ1P_NQsx&rNIJ z?P>vYpq**T+_;pYOmjbqpV;IN`<+jKY6Ps1M-IK8BhmhJ0St#jYx2xH`#4Str81fN zBYiZF^ZK`J{R+k{i-U>1I2Na>vl%+(5Gzge|FY5`s0biE;123b(^o;6=oYv;_J3od zD!B%<6laaur4k@rFhB>1o7V9P={}^?5{+6*CxO(XkTb0#mDNp_#Fw)OUf@v&Ap}ei zBZeG2vYxz?$rhL|(ve|Gp=;>>sdc-mKL&cdyyXEnWXX&$E zISk*-iL!VKq*r$xC+WOm!%P?7V(s?Wg=Bh~^S|VcK$&mtrMAf6zEn91jUD%Z3-Hkr z_aGlWqjD8EOwMl`cPGy-zj?vWg}6xCt7534G#<3BX0CR9{*OIm;qx9RBr&xN z91j2jkB04Oa6*k+wJ=l)ULcLkNE;QetxH(G$IgFJ(tS}5d;$LktmX$;kDWbw=44i& z*YvDMMBk`j^*-1okq$((mk$j_;nz{ozCE`@l6#CH3-TqO|I1Ah2d0m7Pr`X00d-p>dwR`{V4Ce_k(NcN(;Rxn`@eBO5a##}cI7|cMaj(+N+ zEnlTsqxK9LKvpq$6!aKZ{l{s}uFRK%Pm<>|4g5Zi*c_uv05ck8{&#{_21J0sS^(ao zN=0lBWI!Bsw2d?iAGrFvgo`~Cvf9+I&Udv`)L$33d>2Ykwg7fGV1~^NVvd^-y5F`E zI`b8n7%;4WryNJP2~gu65B=dphf2Ruoe2MFaMLgjy9&$d7zQe_EFvhz->iaB#wdGn zuuFhplXZ~Vdgedkv!dA|8KYQzU@hs=>V9y@OST&Tc=4^ZVo5TE$wu1Gc5>|g^@ylw z0BnJL`X3CXSk{`E)FNq=&+}plF!@EUYM^Gk!o_b~06a7K*#FCKo#;4{cP(fXU;-<1 zAX$9p&wJ3wcq9N9Y?1{c-$bCJdAiKSQ0YEc=KMuo74K;0`P?>`8y zN8)E`fZoMCVj%u!oWPocFkh4oh-h7}HOLQk@Am+qujJn2N7KKafiu@&&M#EXXY zYDe~&r-e_JC)9p#g>S^ty~a=3H<4F)?*&wbQ_cf;t+hstBRIJlT|S6f9+oXVn^kqa ztl4VR0ioRxJ&y{&c|S_?AP>pwgl(X_8fMZ5=MFfnRIh~3m#uYBWcy0y`Vb3l6*WS9 zMD%H!vv^`rlh~;Vvvm`e6bX%J5uTvx0>l<`W^8=m&{A!9uEM_yQJI7fI6O3Yz1L~A z2K??OFtH(cn{WAO8?1;wzgXA~Zcb(xu3ch8Y|hSg!{lSjMNJ%GD62o2kv-y9)^keQ zNBvSHMRx`DT4eKOCQu(`<@;Z+AK3$jMEyYG=`Z4p67alDCH{f6e|(^qj|-|qx6CO@ zKw6Oe)}@Q<4=+z=z#Id9lB#Tfz1!P9fM>lmwSmtO-{VHMX6gk#-NF=uQvGz{r&$yT z=0`A46^6{u_BUxtIAs2<&qUx1f4Sb}@UzD=V*|E#Z5{M<1A`I=0BT{?^T(tB8$STh zf?d0Gs{JIibl-YvUdj0#jUd7ccx28CVLWm_Bt?+-gSX@#_#Ux{xb(YfRuXwf*&kbQ zeQmO{NEZdfH9kjAG-kUTa&Oid4C(Hlmd2%^@lJ3MDYzA3f-JhY0 zsF1JKQQ(E4nSgdNWwT-=>LJ$Zw=j?CLM66rx(S9tAc7d2Hv5l(@d*YdtVH=qgB%Mr z_HA1!j!+&31W0QXGKK25M&OsNS*jSDNkR5S+U@Q+Xlu4B4$Ag{E z(~MzmMOR%lPlpebbXE1r>Ia$Bc65^hb+4lU-3Nlv?LYibUDuJf6WzT|$MsACepx$p z5*mz6g%Ty-)zF?fzC~oN71sIkCqMcxH|VVOAQY2j%(rq7$OiP=X$`}t4~yRZ1`89H z26GpD@xznQmNgz7;29jCvB{OaZmxn6m@~*;pO$_&FE0vNpuz$=t z*U*>NV@ z^M8Uz6a-KIVs1HD5q>h#g^3QIso=aE*nNJ>=dmJ3!8$Hkw`yarK>yJD^C{Q3UZTsg z1IGvh?2O$2z-9sh4qQ~5u)Jm<@(T+13vHqYwEKB^n2?Y_+DE{C@LCwr0*KY@(TUOj z11}{(kh%DU`Afr#0eE>Glo}2Bd;+X13XmmF;FI7@2Xb}1iE;oLpa6Bi8TEUsGga-^W*3i`mo^Ef@~`#5$B- z5fxbsmQ7PoK6oR|{2_#_+P;dc*QtUIs25skJ%O(=kPO`T)V^_F;V^e{efxyqwEqg z0H6VOKZpo{(pTx3U^m(pKo&ik4uJ14;4jLaPNYLzCb=V|5&nzY!A+5XmOpm1wQaIL zhF82YDngS`N3#C=?^qH2g&X$2!4#(2nRdXHfO~mix^=poS(gDVFqh&3U;Q8FPcL(z z)kU7wfCiMIOQwHoKzrhgaR!%PrzorlMe+?eNddL5fET3R@L4NY#=@9w4^EClChp8r z#QfY(tw;I8{=Z%zWs&7_rP4RA?midHpn>QxBRrkyT!Muv9<0XjlBY*xYwo4a*Q#uR z!0Ppe)0YzP2t0vy-~t%_0O~gMFLQygI0+ThBAWtd@5}3PlyZj=0DKvO5Q)L2t?YIX zlIF~U${%OxT=wb``oaBUe+&v9hyi3(zO`>*s7~~7J2h3LHe(`uiG77KbvZ2TIGv#o zjn*#wly9#9%Uwb`cQq0}XgTvk7M$Gb*3(5uH&FG>!Nn1ivH8i@bauVXuS1N>v-^~G zoCgMrBKi=`M{OoLcjL4gy$X1751$|2e%uxKk&$!2A9_o-%Gcb(O3h}>M!xceXSF4* z2mvPu&H8a1iEWdY##0@8WbxL5>VjWJ_+<=~JhFYcb+a|oVbSk~b%u3xrd5s$ZMk<` zmF$~WXBOTnRe5ImpzpZ3f7z+2O0HA)NSrhb{=E@xu$&RJ(XK0rFAYPOSS-6Z_k>lw z6>zH2s7h8v^476)^c=Tyz5bpqgAvbS-b*nmMvCN3qc~eml#WsGlDF zZkIK*)4wd;-hVeRAiP-Z`?4Lpj8x|fk4irndTkP5)HTMNe|t)W+n6OXRvt=`Xwb=1 zML_1+MirycRAGUoe{J9Vd=Lc*YcIlU^i|&zB)o)aaC4_ReXD=ZLc&~P>{~Ti(li=q zkLy>xl!6wOoc$CR36U!IMlGD@4h(CV$Wa*&zO$TVY7G&rlWf$e89A)Y>bTV1w;4ve zV6m=U2q${+US7_?E->l$s$Srur@dlAqF$G=pS|xPqLO=gT_YC2P7;-<5LMBvZZ&D7 zdB8>R8v=a&>&F_-=7PTagiZ0_8ax#d$(s!@awNUTSzVKIk-eo50~!feN4_`uq#j1O&yHfB^rrDn zT)o^8a`pMsbZkBspz-o%o~W~9=oa@Nu>bYaj7-c1-bZn)vCdfKjvdK0nE2Iiv~D|5 znvl?B+*NEOBY#T6I9zTEvv{*AwZ`#oZZZUjy}h1?@e=Wzh2mAJxFLxN zc()SZb+PF^2}RQwxL9uE88@383!56-2TlAF-fA05)~6@2dBWk%ri;_O;H+J05p9mY zUg$Ndz?zF6^4^>c<2f(pO33+q>}QGGK4rUcMOwt(jTbxbWQJcPZc&L{VhP>z=0vWq zv>qw!Kh^M@wl_XJ=kQo`zI2w!u#he`LY~}8p`#0B2&*}mh3!VrS!(8L^xe?mqv*XX zJHdX1y4ChZ!}4$|XEO8VoA9-k?~E{(x`8GxrQ;+|u(?8+QZz3q{zJ>#GLbLL|#@C#EI4=1I5^u5z!m53VPy7u^ympYK`KSkS8(m>g%B1&83KYU5-MU@d%Pyr7iu9ab!rNaoj2YSxb8Na zHrwBdjb6(V#1S&}sUWKQdu=Dg(z6F_pwRv_m;F&T&C);hOL4`0)^H24FDM^A&ZXK} z>AJK&vVUSLchJ?mk7=Rw8zsMy8s_kELhH(A|Mv=FjWWS++DQ|X)7)=IIHBiM>b<=z zk7Iu2+4bJsZhljBUKzm+xW?qE5G%uEz&q{I>VHMZEVpHp9FHNet2V*$r+ZgE;dOc(X;7&%B{;Qda3(a5@%2t#jp-p@{#| zQl^A8XDoPFB9Wc2c9sUpVA~sx-J_(Ye+r$3&K{0`5L=T;-sj7j(a0vAshuAgw`ps! zhp}qH%H=J19ZQ+a)nJ#mXX1fII-H{HnJ!XU7Q9;+h)RzY5SmjPCbPz~MBg%mPh+4X zug|bs(q4o~vXbuCi$0%31JCJO0-A|0ci;b9#kVpfZ~wMNhY5WP zUuwL$!`#x}Usn#-%O!~n`m_oYa6wA!8kT>IdO3(s#pHTC@Zfw&Zu@m8krF-cjwLhd z))2#GXBMy6EoDJFEpx0MY}j)}1}iRH0oVDq)kuNm<>2ee8BY1PwbV~3vwbFxQ^MmP z6LF2aq*TWk`i~3H_a@_BswYma{4{C{E&Q4|kxY#W${plb-|lT%a+qlQ3fZ7q-O{#m z|9OZ60v^Eh-4ZPN6Tu%5Gfoe2?Dokj>N4hl3OCj=jO90e+M;5}jePBx74CL@G= zAGmUv3c(n&b8ebXJU139oxTccT%M@E7u#wG5s-8=a(yO z^wUapyw@)s1Z^p_B{p;}lcdQW4L`2YEX`3X60r8p{lG<>!hk=cQRv!B6W9~$^=0b# z0&ChgfsfO`E3Vo|q=P-Ix#Gx-Onh2oV6p9*w|SeEf|g&0mnBxb>99-cFMS|0kXsyF;^@s6=Hj-X4XhSA%Bn}vK$%i-F5M`}vcty8kv<#`wr zSOj`Ke!1*3nQyqfpj)$eMU$`!rMzcc4myWcaUp>;O5a4DF~To4=YFTJqms`_BNUq_ z(V#MN^r9ik>`W&2XScP{CG=={{NGUG`%BgCWvLzw@V%x66wWbZ!c@FDtdcXoEtdQ z37)lg`I574auBN>b+T6#MbW@c)zzNUh|^%bn3BeQecTuQ($qypd6~Fo4X!|A)1r}C zn|*Vol09Yr^8|mjIofl!Zc|#d(!pf7=f$@td%@2*G3ueq*J5Uj&!bXj{%(o-|vMVm# zIF3dRahP|X>Y7Ew?i7y}`jUfkS~Hd*bbI`AnMF-mN?P#xvdJJkDfAv9#*;bWYTpM8 zXbD6w>ZLjNlM?d{IA2p5Y58lH1Iw&OwJtw|zHkf7h3q%68hAVI#f^pX`%h-S}l3<@oK=LdSC= zW4G63Dp~RtsIE*Pc0TXI%yJnoiciXHkDpP}(1@orieJv!SB~?`zkQ}=QU9{f&JQFa z5;j?mCkS!~J9@Mapw%V0 zA2?sXuw5?HIUnaz?y7V(IW?Yf)KPQ|y@{16c!S_A6}c}NkN!@pE_HQA zkw$AbA=|Wg#sOy6=<$VISU)R^iLU)Q>w({g@l&U5coaeKiVYH$mDfGYCK6UD=@GHx zW%XkkjfV6bM!7y%q2@!Gzl@eO7f%k|W0@acx(b?mgH!oJcjtH?_(9@h`gmrbu@ z)5VE1whxgF2A8`H_W8C~sfaC-nKo+TMteFPL zPM+86!Cfz_&*Pp+U2R7GnQSNRJZ7wzuiuz53^JNh_Ii2uZ{#$A+jf^8=X{kc{xp(; zS7u>+($d)H8&uohPe6{PBeqP$F~zAC=tMfZN;J4HVvEH}0m29|SP2`{G9;`LDX-&E zN~s`Was{4}vZr%L}wiP96*QL2xNRv4l&EPob{~TIat8+FnB1pm7RD zXYhY546e|HJTV`7Ql0ivwC(gS#+fkVYi~o(qpqk4T*az#mRiK>u9pb7wHZyZO(gCO z2sI~B{t0^eVU-lft)Fdr|K4wYKyr40XtSexn3k6YdJEa4mw%2byuCV*FZ&{AQoM3a z+ozOinjJEv~q-s)`n+ zmffARf1P1c;_%~#%JDl4L{#cx5Mq&zW)T&J-FQb`)A-D2ll5KRgfCZC=sSDEC`sOA zFQpWD$u^i~UY*t4;D=MW@2eqyo%Wdd@L9d+_S}4m|2kb4U**px|6#8!!A<1<@b z4fQ%FPiysJo8$PC6We1^=i?$`=MSY@uG)6qX(5uoW|qslF%U-dc%yRfL&x;?-?Y?A z;sYC1-BgT34q}xkd0mdaHQx|{;zx*_8h+6&D+I3r;nPRL zs|gZ1D8|~L+x{~KOMM4i4#b^%K{!~_@NA(Qf zE_|M1$VNm;d-`cAf@@7e8vo>1yi&qax>~}b0*7J3)9RgZVQg4=aT8qEy_{kT|8aaT|>-ut$d7hPWmGS?iN9qKL3x;Yi)aMf&* zkijM>`=?6>pAQhNl6XkuKI5nrJDuR|(_@5rOlDplF0wGjHiQje5U%YUbdQC%iFOTX zwK`4}3so`W&ScFX!obL?IJSaB~L-i8Y6_ooLf z!4+EBqTrd}tFS{L_2YF%!uflnMjCV_K7MdR2vy==pu=Y4Qbf*ebka*^ys(rX`xWA+ zn9FjOcd|)BFS`Y*pzQ5Up-388gF{U@=cQdYsiUQ5F40o~H+BVK{k#E8Id$4Y&zGl{ zyUUovQW`2p-islUJyj^k+{)mQ{&`=r3|k0ZhNwHqErX^0DGvu}B}6NwKYKGY5;s-; z+5;^>JP>_wW^;{_XYT3ZZROP^=JdhdY>a=h`o_4FQRRs$^>M-WSK_1Q&LNnnww+pq zfr0o;SB6h+wtVQ7C2>B{W(+y&v6;z6vVFowR()UDnmLE-RbQhU38#$}-1ojy6xvr zCi}C?b*;DV9i6EcMdJU<(`Tx^R8 zHu?A_ZZ-nHe=~ejk|ji)R9GMTEB9|i?}Z>cLVIWb9F{XHFw{9hL)~;~Smr9zV}Y9W z;^0TPrLAAI$5+QFb9GtRw|1pX@$pc)48|5KdkybT-sxop*o=o7Y1(ynxwsT zdM8M2zTJj7O{vw_`19q5)TU&(Q%g&GD+V5bg!bkJ>;NQ`0YO5w$L9i@#k`h!0;xAV zMXH_x*UO1-ov&VB&oQYSI=C)(zc-GOawxhnwm$Yr!PK>gIn{e~t4MQ98Fwu|;u)IJ zRpW7#R+8E<46{#l`|O|7f9w+Ig3wdP!V&xskKLsjH2#VNlb_X&BjqZCuUkLdo@a=r z)J;#x__s~}6@5b3dLqfM z?}}qRz&VH$5OgQ|=Z>A_Z?T2QUxU^v&32IY>@Q&;DEF;1l~K^5dN><- zhJ>fna+z`8QRve@3ZW7}q<52Yf1gOT52(yqw3o@B_&8+zH44>-7;IO|yCY^@Gp)r_ zhgi0wM`%-@MrX==h8@k}KX^4otMzJ(p6(3RjLcuiw0AXae=xu>51Yc0F8skQw-d)k zJ^1%CaZPt`<7+cdL+L`f2uNF!{zL9yS{* z;p<-l=S#hK=WEgSm#>``8OIkpD97KYx=mLN73XR7R-m?_gR(MdGukyH6KV-)UNH)Jofa@^4n%lIwl zHRyH5K_b@h3^wcR&^$~P8Qx8XdHj8mT0c%tzr{KA^TK1?_qy4G&1Lxb>mx*^kF3_p zOMfO*%=vGcY{nh>>%WACzt!iXMBBIJdI%-}YvpwuMAT}H|4Qx3#An}WzCxX0E`ijx z)x+Eb>c6BGSjRSTQmM{Wvvl&6Q!nJZ@&;*mSvb$8K7lD!qqKzUtj77gX^%x+X?`YF z;2q9BPxn#h0eM4)P=1EshG~1AC^~`OrhgI| zHB0y4MGi0yt}~zc#~aU|OGnl>DR*{Bb3RQNnOTSp#=PNAi=^LebQ}qGn%SVsc^9xL zxfw{9QUlRaDm7@>SaGx{EMJh2DW8oUL z16X(l4@{L+?SdmS`7E<}Ec3J%?}Xu(&(sX^2>(f4B{O@R8#0|6r`md{Ql{zhT#wZ9 zh1e+!p-3_J+zE|7NcFTQuu*`O<&kqSV6-(q6z{T%0HrEYBDfN&Tr>Yv))7!y{~u-F z0gmPW_8lowq=7=VWD8jdWhE=`mc_RQYi^SW>S{{QEB z-uHc;=Qw^x$KmF8-}iN$-*bIFpYyyj%i|EZp}A#RQTef|kIqu%i?mNC(q53yskdGq zoD|J`{Dp0p!)QOxcUsKaGyN!)txyMR8uBL~G}!{ZFNDLahIT$;%Cix0I92QmS2`cM zM#VSxNX2>wO7B~1ivc0>7fOQ!x54sF1REsL&mr|?iVT?vA3E=#Ez+`b3y7y=6A9?zlRRZIyxu34H&aY5@=Z&~ zHb@D-h218bpFx2joPRn`@>bp#m8p?u<|P6Cgpuf6trNHhIhoCPh8G$FU+z3N|KS2G2bC{phzSn!hpGL<3WxvD~ZgHh_zMsm&< zQUeSGi(e7LpK_U^#lT)=d{8#w_VDaNVHD_=uYuV{2Q3zbCQ%v5QEun3?F6 zWlJlxxCiRBcrC$>&QNXrSo1)z{6bIqur+dc>hSHpjL3ls%5AC(W|E= zozdY+;HEO^V;^tggoAZ&ef!pkG9!)}HP8}gXuK$c2r!mLU*#$?Aog`{K+Joo1|qV6 z;Nq+xCXOhu5^C?CYk9j%Laia~X~~aiiG*a?+{^O<7+-6md7eEo`jd^I$u+zSmtFut zv$L&iGJ4NUXMR{+aU)2&bSB%FA^U!y3HCvidy7N4%%hT2*72~ZM6>U&8czbUHnu#Q zW}p3Dy*n%FWjUD^Wg_b`@lE#@)3`GJeXA`osi%j5Q`Mg=8(j|c6ZPsb3H?udq-`!c zX?-TMm7U32Rv}w#6)b(Sa8aEjr@_V&%Oe61v`d)f6pwCT$7wts$CZVmis$SKfF!jwlQn*Ef1g>S+Ee(Kp}hR{vGXaEmj!ISvYIU+B6rGfAAaSKKMI(7*dG4KE$?PZ*y?ZM zKKs#?V-P;8D*KaB8w7 zZ|%%n&sUvteQ3HuT|5Nt4nNl~j9Lz7LaNJKB8htn9^`Luopx6fH+7#2+ouX;+YK&< zuo=i^_GBgI@K8=K-MeG-TuNmp@6JW)^!6#}*BIsw$; zlftVFzIPV7<9vdU1OglyU^u%^di*AU0K!-Ap+ft*X2GtSjK6*VSs$&DVC(bv8vl6p zJd;P;c#W(Jb_zCMMkdb=j?=-izL)_0CY~ z%!O?<5>pg3lFHqB!%;B)y;14|UQttMe3U`6J6?WL615C4{#`%E!lwA+_JL_^IY<)W zA8bvvB>a%vDA+*M41J=cx~+JBRr;^OSo7+Zy(+L$`d!z9qUJYC@~1H^FZ2VRA%EAA z3}R~yBb+Nv;&Hl;&Z)4t>V@}6Ds&jNjW|@u-mP@`5bc=gfP<0h|amP91tILmN zYa!=ehSAnp98%m+o%h!npIUccv+}%~H|J)p##Hk{ZC=u-kp{SLfhTvR5TnriMORdM zWJyh*IzE4U5^LL;B<`+4dz0&ag^25Zg5q50rld)tMNE6goOK@VkwUvA$OhF%6diqg8=`J&{Hv@C)*@R^kFr7H@r`(B(ru0pbq2B90$QD%(TdvD}?p&%M} z_dTq0$&NRX{FMs%OYu0<^CBx#Jcq zjA4pR8hv@5;W^IL$Rr&iES!}1gY82w{f zcGk(C6>AkLe;cp)6uY`WUM=|g&bPE+)u8K);~AAd>9b@6jm%aW-KOmt--u0()S0X9 z1@wl5#!?gBn(eX>PFc@r#Hre-)N{yT-qAjoJwuAGSAgFpQiG4N;gx!cjWuvEENfxr zq%CCL4WKZKN8Vp7JjFk_|Aj5gu3#rAgNAbMXi32%i-GzlA470V7^6C0+LzIWJ-qKh z{>&mr>sM6Gt96p{Wn9Qtu!XSKZLmE(p3ZIQY$WS#I8pn!fY8pRx974Oc;q&z;z_uB zy2<|nKR(!d%&`Gz zZvw)+wlQiLVJp$*?KHJbzM}8iF$p|?&gBD4 z{^WYn3G_!w1A!0;g#r9T8IQOL>}%VDxKD~P4!Nm`34FN1` zAKz@1wd~GU-b`&+y724Jwq33366(FCadHp&4KfWGFip-rKjNTAUsA3P!hbCR|Fzl9 zWsLN)$Cp~84!ta&Nrhon0Ol)?pT086CO8C`p#ql@fY=mpvyWlkPlktRib;{N1O+p$ zo(RsM{Hq11aT1}sBeJKOYhbQTb>x`%qthkn4_um%hX?T6uP2(4GvDNPY%?fwV76U` z_L8$9Km{ch;MD}k_2-1dJV35ae}lr?K3UR*%0}5h1WfY7!o+w7Ff;X>n7BrRL!mN< zVIs4iaboyW@K6hmKzuV1%8CGukEh}*>%pf#hSvACSV@A<_!(uRA;84Om{P1NJF8ZWVGWVtUh zBHqP;MQ}eH4)G;%xo@brM-Cw7#>%g5Ti_W{ASR+~OM%0+YM0yzg$pgFqOod|y){3V zru9(2)lc)B3R)wER^MXaaVJ=$0iKp~-{WyDdhd@4r0%gN=Gm-IVobyJ^4l*M@}W8a zYor5sG7aarE#`9pe6QnUeBvKrk`^U<`7m2yvy<3C*h!2GESwYh4>+nOo$q95Bc*-S zhlgeJr?`jsHCbIgis#1xX-4PM7Pk2;ZvNT~C3F<@&%cUIa+sd4Qo0mFu1fXG74l-a zoBu2o^7+E6zvG#(^0lvl7ZJ8_;qOZ_h6 zM#1crY!n&hcBJkzWZ&3j_-2X(+5mTV+!Km-b&<>uH~Re72vT(J`bQ52hxs$k3$uw# z&A8?K!+I-Xg881C2m{yv3Vpg}D=99A;iAUeu z82*gOxG?V?BK13!?Y3BJn6kt_Ohe^vVWp8V{&0@yWO%;Y`L7tqjzwd)D0Rt^@^^T)Pv0ARN@0GoNyE zbgJfpT~Bf*WzMx5gaeN3U~Bbqe>wzTyW+Lt=?AicP7)Pd<=gx7$(<=V=9j>)2YtIJ zP)C;@iPn1W4QVh35J2)A`aC0mBwhqkq#kevko=qFpNB%+LIIeFj|2&O@Wh(G4@@nl z%{`?Q(}Ic6_*0D;T(dc;{4T%`=ETR>%o$0^UOf79{X7O%0->SW2z}v` zd+qf3Rtm`#{Mx&YC-a>3wuy-s9hBn9c;6Thb(Y=U;1@jNxBYF%gGmh+hGaIlqyJ;1 z_1LXzq98jtSP#wKLXM5_Wz6QonGeLv86n@+91}_+rG{8@9SOoatI}(7UndgzMrxu; z*#S(5r;{b0Clzk-o+N`$rp!c+IOYH2h%?{SjsJO%K#kcRuMYtDs8cHEF*yh12(NG- zjvWT8hCf@s*k=72qLemAkWFm}*eRCGjz0ip0bM8{u+E?OK|}BodfIa@wB8^uy9>XE zdq~9#Y@DxE+4HODGmrZCSOkdT6p@iYSv8X&{J=4zkI z85a8MB1#(Xmdc{IFNYE00qA>&a#3C>a8ZMRutbePK%tAS#{u7(RM<$L6%a3EG|SL6 zcqwQ2Sgc0dGP` zQPd^XA+ffcijFeq26T&}jf!l@C%A_p*(PxrvdyE|we@TNmThP-z3mJEdC0v$*>;mY z*I6&enI~1GYWI`&TPmvv}#&!Re7EQ{Gt^4q3S1(AJ#uDj=hs|%M@vQ-l^`;cUtqt4Rn%z5XSJG47#v}C z5Q`c3{B~7TX7yW&d;Guj;Dnq%FQ_en#78Iq<}JR?q+Rg{KUL!PAIn+q?-1R;tc#8v zyFSXJ1+MEFh9Q~D$ux7KcQ~c2N_VA?hoaaI7c+nL6A(3;OVLa;_%{d$eQP{~D^4lh zXb(tb!PN}F?I@d?#jrfnuA%%nBA{3${Jly_vv{r5Q+S|4-t1;+sOh-&`Y3tnQC@Oc z>+Rhkj;n$kqi?3@ll=SQOy9dz^#%u(rE&3{0-g}X;uTq5%W~ZTKs@4)sEC!FrwWz3 zumaA4omxDZm4>83ftNU#pA(_t{4Encpbp8>ML^N|UUZQ{z^wjPpR%{C><9wgO`Iz~ z19J~Ue43&Y(}58k{y0K891&x>1lT&3cs3 zhJlULaNI6K!mnWgL!kc_Ii6zxQ9SV$Wg)=vb>5T(_~!Y3t+dig*E@r-ChqcS$v5%p zq_)K+9TS*Pg)2XDVqT3VzY~9tn>3b`hlPgJVnVsJY}8Ju;-MWsyUr?ZcS3gk;$7Wl z;`Jt}^F7S~kR@`D-`hI#eycr558h6)dR^CDzlI`c$}x_sccZcR$n^Z71wIl-qibsL z@_+ZQH78j;JpB-H5j`l6NK?i|(ea)65-@50!Jde*HUIi#L3#{#f9Q@F9rE{=PVo=y z=RJKCSWvv3lzN+B$S))+?s}g~Wl4&JO>-p2nN{!%&%gzq-f=t*k7a0eUteHMX^?`Mg3s5$?udBqAP)aGGU> zHC50&@9U?7^kq?pZ&7HS9qp_xR=1XLhYCphjDbw<&Da-~4m}pzwoU}$R*`FV8PfSw z=WY%-)Y+o!({_p1N;=IS=r#wuRH%c49wPAE`?x05w-#W8Z{6vUItaoRwSPQKr(wjC z3st(-d_l?!a)HPt2XL!)IgAsiE4v7ERMZKZbkQ1Wc-fDV0YV@0i%UpSVTPo_ep8H> z@ZX}59PsN?je3Du-EnQEA7(>HA2ZR`XKV?Ts%;9U+^AP5A%npKBG5$av8o$~PYy7g zq~j41wD=<9O_{4q;6$c=1N$xGnJSF_mN73%_Bb|5Hlc@XIxaot-rm;e>Z9Xwzg@ck z-_$;bq!efA%s7k$#1cbKH=TOo1nNedfvFam6a2~u)prvq9FeTrsBqit`MG>=DfF8N z3xlR5%)#B=8lpwaZ98=R4qB+pV=dGcn>DKJg5Zrr-YJC0Ig(BkM;|WKy@{sNogtkv zAHK1W8UNsIuj{_CAFL&MqQK?No||;#wCb(#4SLc^=v}TXb$3pOHmKHxsqg)HdQ`zmnOi38aC8nt%?j!k`KG$a zhjs(_!Gn;A=v)CRYEn+BQ^*fRxc`*M1CE0aj}!e}$fwsaG20-;*e>;Vg76aFWEwbg zbRPrd(6R0QyE-rDRng|)&qa=nHvVq2D|wQkro7BZGNG-$A+w6BNcW4_$l{Nblb>89 zsq^YuSWMopF!OGG3M-A*NF5A%g0tIS^R~`_AV@BMn6dQ5o=eu_i?>qrLN^eB_q2_L))YCwk?Mm*n(_ZzIzbN5^ z-!{xOWJIM%6Np*bobPR*5f`979#Ob%w^;CnJYvk|66!iVwh<{4(%3;nFG2Tus5_Yn zPTidO--+S=Ip@bxT{~x%qXW4x0mntF+Jh?v@}UdP&pn`kFZxZGa&>^D& z;|_Pcv*qcpS*oNh*ywtUt?^yJVDSJ1k*a;Dtc$A+tpqEZou}3&0KzIG##+Bw+uz43 zD?O*Y7O*!ESFF8GpP0@mJLeOp55pC&8gB)M#F3=!e2H^nz{$*SWjlKD>Cu#Hm)>{p z5Y+J`P}A0Jj40Yq$zB- zrDRI>A3B6jKYgtsQC+{fI!23j;rGHwa>42M9$YDB=EQ_%0)ohkbvrF�bjf0tf}2 zO_tZ-hoCEe%h`4uOsSRw@hsHkEkP5VQ(hl3@*CC&VK2}A{@6(u z9II!jA;z2oa1WbYdYFYlv4lWz0f#ngX?3-}twd(fB`vy+u3sThhh;a?1=C9HcSLT< zV~@@%8>F57|6KpLOo>m3cYhD)kp^f)QY z5L)@RNKomr9<=76(5qD58d)bo4n8Fx_*cjiGQ(5wx4KFQOFO*l9JkRo<3BBczNeW; z&TR`0CdfrVYjevv5mXEnezg&%{(lR#@t@ZK5SwmOLyJ$*-vT5p??SXh>#|6_7OCv) zSdQ}uwcWi_?u(Y9dUb0pvA?$bD)>w9PE`z({OLN7WejzBOD9T2eVIO!h8-oDO^{bi zfn$bLyn=4kGO9}z1B_R}L6h@d<6tUY+a7<(?J#?|o9n_izxzPlt$D%sVB;}?8t{&f z97+&3y3px!3GGJxR?}L1#?leLiIO}K*QtXNb|rkf<^!sz`QURv(; z3H28>wP1E~a_6$87mz_4&Qo232n==GN01Gi#16PlvvLF-kn}0^9sKXYFq@_(bUGme zH>HxwyD5rBF4e#5SD4$z(mQDsrwjRW%Sc z2DRo*etz9-+iAyFB8-1Ku}7gt6cUoGfYacEh`lt|pdTX*mm6W$Phug5_+`!ICby$* z!gD7xbOwk!ebKk1g6W}34EZ^XLEVh+W051u3Dd}daK|1KPv(WL9Jy`ta96VOlMr76 z4F7n(C&M@uujq-RJT`LJPGDvu6i0?nSX-$UoR-Ox(p#t-9;^WV!{Fm3PNjPvUMILj zj{?pqb<-fm_#zYsbByTaf2TMQ-pqRJqsEV9s5cNQSkG?|C16#0tqfBD6I*`LRgMw+ zha&d>jl>r@iK+-c%V(whTCIKp||UUcv_G@oQXzW#)30&w>tg;8`d6_?1w6-(;-Z0 z2cfs#{QemnS`dQq$glSJA^+nqeaPo*fr2jfWe}3lGYs%LuRPo`E@K3rt1EpFbzI^g z$1GQ|=Am%_bUA}(77NPwH4dzXb%?yp>{>gd`L=o)CEMA#0v=yC)as-!j;-W1k)z1%74w?Y5msLoe|&MQjY)NNog3Y4Oc|V3>#Y|(?Xlx>k$XF{!p&QY zJI$@G%8?Hz6GB=yeP1&ucqMGcu~3I+`3%g9#gbX7L_B>)|A)x940w2<^ zn_FGjyHa8@-dWdmoI9?w4eL-8wJEY@1hLq+{kTJaMfe9f?njNi?`={)&b4c-NEJKp z+%0F`OO!xpMa_JR0I4;{Wx_r^v z+?7`fy-r6sn+ILsmp>Wg!B@9Re*hQ)EFjI^*g(1Cuuf+G(({(aZq{l;N5BM248n{*7)@R zgD}OZ?q@Q>i>Ph}%0m147`oNiEB3|!eSmq2Akq~##EsCnyRZFAs1;+s-1!(~?rA`G z_}$LUde}orR(X4K9o3LfT7pGh=chiydJM&DfN~H}G|1br!y0|IBey~de8ilA9%w!! zT0s2V_!~bZX^t!6lt)kzOLAfx;h>|iENEeJ6eZr;(NKOpXl6!-pBh()GkdLR7l5@W zamxx$LZC~y`~C`jiW)9> z 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

mz#Obn(MZizuar|BMTYZDZ8`Y! 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

10.0.0.1
+ bPrQTAAtop4p3v53vC0UT9MSDic= + id3 + id2 + + + id6 + testcomss01 +
10.0.0.2
+ Yt2qndJDtkwcJ4bdbRUg7tf6/eA= + id2 + id9 + id12 +
+ + id10 + testagess01 +
10.0.0.3
+ G757IcygjoRPUVFWcApfEJcqygg= + bawfz0rKtKmOySMmrr9B19gX5pM= + id6 +
+ + id0 + niisss02 +
10.0.0.4
+ qbwLX4Ak+L9QgR4Q/rP49NZga1k= +
+ + security-server-owners + Security server owners + + PLAYGROUND + ORG + 2908758-4 + + + PLAYGROUND + COM + 1234567-8 + + + PLAYGROUND + GOV + 8765432-1 + + + + Test + Test + + + + COM + Commercial + + + GOV + Governmental + + + ORG + Non-profit organizations, associations, institutes + + 3600 + + \ No newline at end of file diff --git a/xroad-catalog-persistence/LICENSE.txt b/xroad-catalog-persistence/LICENSE.txt index 662ff71c..13901a52 100644 --- a/xroad-catalog-persistence/LICENSE.txt +++ b/xroad-catalog-persistence/LICENSE.txt @@ -1,9 +1,22 @@ The MIT License -Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency +Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) +Copyright (c) 2016-2023 Finnish Digital Agency -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/xroad-catalog-persistence/README.md b/xroad-catalog-persistence/README.md index b7592d15..7675e634 100644 --- a/xroad-catalog-persistence/README.md +++ b/xroad-catalog-persistence/README.md @@ -1,55 +1,56 @@ # Introduction to X-Road Catalog Persistence -The purpose of this piece of software is to persist and read persisted data. Used by the Collector and Lister. +The purpose of this module is to persist and read persisted data. The module is used by the Collector and Lister modules. -1. A diagram of persistence classes for ```default``` and ```FI``` +A class diagram illustrating X-Road Catalog Persistence with the `default` and `FI` profiles: -![Class diagram](class_diagram.png) +![Class diagram](img/class_diagram.png) -See also the [User Guide](../xroad_catalog_user_guide.md#license) - -## Profiles - -There are four spring boot profiles. - -* default (a profile used for default operation of X-Road Catalog, without any country-specific features) -* FI (an extra profile used in addition to the default profile, which has country specific features) -* production (a profile used in the production) -* sshtest (a profile used to test SSH tunneling with X-Road Catalog) +See also the [Installation Guide](../doc/xroad_catalog_installation_guide.md) and +[User Guide](../doc/xroad_catalog_user_guide.md). ## Create database The database required for X-Road Catalog can be created with the following: -```sh -$ sudo -u postgres psql --file=src/main/sql/init_database.sql +```bash +sudo -u postgres psql --file=src/main/sql/init_database.sql ``` -and the tables for the database either with -```sh -$ sudo -u postgres psql --file=src/main/sql/create_tables.sql -``` -or -```sh -$ sudo -u postgres psql --file=src/main/sql/create_tables_fi.sql -``` -whether the chosen profile is ```default``` or ```FI```. +The command for creating the database tables depends on the profile (`default` or `FI`) that is used. More information +about profiles is available in the [build instructions](../BUILD.md#profiles). + +- When the `default` profile is used: + ```bash + sudo -u postgres psql --file=src/main/sql/create_tables.sql + ``` +- When the `FI` profile is used: + ```bash + sudo -u postgres psql --file=src/main/sql/create_tables_fi.sql + ``` Also note that these scripts will be run automatically ([X-Road Catalog Collector spec](../xroad-catalog-collector/packages/xroad-catalog-collector/redhat/SPECS/xroad-catalog-collector.spec)) -when xroad-catalog-collector service ([X-Road Catalog Collector service](../xroad-catalog-collector/packages/xroad-catalog-collector/redhat/SOURCES/xroad-catalog-collector.service)) is installed to the target server +when the `xroad-catalog-collector` service ([X-Road Catalog Collector service](../xroad-catalog-collector/packages/xroad-catalog-collector/redhat/SOURCES/xroad-catalog-collector.service)) +is installed to the target server. ## Build X-Road persistence can be built with: -```../gradlew clean build ``` +```bash +../gradlew clean build +``` ## Run X-Road persistence can be run with Gradle: -``` ../gradlew bootRun ``` +```bash +../gradlew bootRun +``` or run from a JAR file: -``` ../gradlew bootRun -Dspring.profiles.active=default ``` +```bash +../gradlew bootRun -Dspring.profiles.active=default +``` diff --git a/xroad-catalog-persistence/build.gradle b/xroad-catalog-persistence/build.gradle index 2aa4da03..949d73b1 100644 --- a/xroad-catalog-persistence/build.gradle +++ b/xroad-catalog-persistence/build.gradle @@ -28,6 +28,7 @@ dependencies { test { + systemProperty 'user.timezone', 'Europe/Helsinki' useJUnitPlatform { includeEngines 'junit-jupiter' } diff --git a/xroad-catalog-persistence/class_diagram.png b/xroad-catalog-persistence/img/class_diagram.png similarity index 100% rename from xroad-catalog-persistence/class_diagram.png rename to xroad-catalog-persistence/img/class_diagram.png diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/Application.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/Application.java index f0d679e5..69fe109b 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/Application.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/Application.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/CatalogService.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/CatalogService.java index 93561235..29b08188 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/CatalogService.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/CatalogService.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/CatalogServiceImpl.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/CatalogServiceImpl.java index 50f766ab..0f965f21 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/CatalogServiceImpl.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/CatalogServiceImpl.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/CompanyService.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/CompanyService.java index 1dc1b21c..004b306e 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/CompanyService.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/CompanyService.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/CompanyServiceImpl.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/CompanyServiceImpl.java index caed8f0a..925c3f03 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/CompanyServiceImpl.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/CompanyServiceImpl.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/OrganizationService.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/OrganizationService.java index 52039f17..70cf6b0f 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/OrganizationService.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/OrganizationService.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/OrganizationServiceImpl.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/OrganizationServiceImpl.java index a10a5fad..3a83d19c 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/OrganizationServiceImpl.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/OrganizationServiceImpl.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/AddressData.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/AddressData.java index f5deca2b..c7eabbef 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/AddressData.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/AddressData.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/BusinessAddressData.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/BusinessAddressData.java index 15f76d33..b577cfa9 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/BusinessAddressData.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/BusinessAddressData.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/BusinessAuxiliaryNameData.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/BusinessAuxiliaryNameData.java index 9b5b8da3..59784a6f 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/BusinessAuxiliaryNameData.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/BusinessAuxiliaryNameData.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/BusinessIdChangeData.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/BusinessIdChangeData.java index 60b026d8..5030ff70 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/BusinessIdChangeData.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/BusinessIdChangeData.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/BusinessLineData.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/BusinessLineData.java index 6b68b97c..10beb74f 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/BusinessLineData.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/BusinessLineData.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/BusinessNameData.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/BusinessNameData.java index 3ea7c73b..dd4137ad 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/BusinessNameData.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/BusinessNameData.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/ChangedValue.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/ChangedValue.java index 3ef5e4a3..63e09c16 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/ChangedValue.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/ChangedValue.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/CompanyData.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/CompanyData.java index 53ad840c..b484ba8a 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/CompanyData.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/CompanyData.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/CompanyFormData.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/CompanyFormData.java index 5c982c89..a18dbf30 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/CompanyFormData.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/CompanyFormData.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/ContactDetailData.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/ContactDetailData.java index b230df0a..a1994203 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/ContactDetailData.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/ContactDetailData.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/DescriptorInfo.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/DescriptorInfo.java index 6f97020c..29b9477c 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/DescriptorInfo.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/DescriptorInfo.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/DescriptorInfoList.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/DescriptorInfoList.java index 3c2d666a..e54cc194 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/DescriptorInfoList.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/DescriptorInfoList.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/DistinctServiceStatistics.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/DistinctServiceStatistics.java index 862f7d4e..a18a3f59 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/DistinctServiceStatistics.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/DistinctServiceStatistics.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/DistinctServiceStatisticsResponse.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/DistinctServiceStatisticsResponse.java index c1f3d43c..602392f7 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/DistinctServiceStatisticsResponse.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/DistinctServiceStatisticsResponse.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/Email.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/Email.java index 935991f9..8d36ea4f 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/Email.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/Email.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/EmailData.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/EmailData.java index fffd1493..17da757c 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/EmailData.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/EmailData.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/EndpointData.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/EndpointData.java index c4c857f4..b4ec28cd 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/EndpointData.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/EndpointData.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/ErrorLogResponse.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/ErrorLogResponse.java index 2b0c8002..d6c9f18f 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/ErrorLogResponse.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/ErrorLogResponse.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/HeartbeatResponse.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/HeartbeatResponse.java index a52e3961..7019daa9 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/HeartbeatResponse.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/HeartbeatResponse.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/LanguageData.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/LanguageData.java index d4bd1d9d..7404743e 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/LanguageData.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/LanguageData.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/LastCollectionData.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/LastCollectionData.java index 7c1d1ef9..40b681f6 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/LastCollectionData.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/LastCollectionData.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/LastOrganizationCollectionData.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/LastOrganizationCollectionData.java index d5152a26..e4c1c1ac 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/LastOrganizationCollectionData.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/LastOrganizationCollectionData.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/LiquidationData.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/LiquidationData.java index f7db4408..262b7b5a 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/LiquidationData.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/LiquidationData.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/ListOfServicesResponse.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/ListOfServicesResponse.java index f81fb0d6..a37aec3b 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/ListOfServicesResponse.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/ListOfServicesResponse.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/MemberData.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/MemberData.java index dcfe6864..e150be1e 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/MemberData.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/MemberData.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/MemberDataList.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/MemberDataList.java index 5e8e5a23..dde87877 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/MemberDataList.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/MemberDataList.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/MemberInfo.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/MemberInfo.java index f932e480..4a332295 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/MemberInfo.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/MemberInfo.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/OrganizationChanged.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/OrganizationChanged.java index 068a29b1..c8aa4934 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/OrganizationChanged.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/OrganizationChanged.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/OrganizationDTO.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/OrganizationDTO.java index 1a6cf794..c9144999 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/OrganizationDTO.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/OrganizationDTO.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/OrganizationData.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/OrganizationData.java index b0af3d32..3d92e7a3 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/OrganizationData.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/OrganizationData.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/OrganizationDescriptionData.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/OrganizationDescriptionData.java index ee98bffe..fb66c0de 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/OrganizationDescriptionData.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/OrganizationDescriptionData.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/OrganizationHeartbeatResponse.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/OrganizationHeartbeatResponse.java index e1cad56f..7597db2b 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/OrganizationHeartbeatResponse.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/OrganizationHeartbeatResponse.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/OrganizationNameData.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/OrganizationNameData.java index 621f18b3..9f2d1be2 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/OrganizationNameData.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/OrganizationNameData.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/PhoneNumberData.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/PhoneNumberData.java index fc018e78..22a0ce7b 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/PhoneNumberData.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/PhoneNumberData.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/PostOfficeBoxAddressAdditionalInformationData.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/PostOfficeBoxAddressAdditionalInformationData.java index 78f395b8..eb1e48c7 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/PostOfficeBoxAddressAdditionalInformationData.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/PostOfficeBoxAddressAdditionalInformationData.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/PostOfficeBoxAddressData.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/PostOfficeBoxAddressData.java index 7a036501..2c72fae2 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/PostOfficeBoxAddressData.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/PostOfficeBoxAddressData.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/PostOfficeBoxAddressMunicipalityData.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/PostOfficeBoxAddressMunicipalityData.java index f82acb2f..8e836678 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/PostOfficeBoxAddressMunicipalityData.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/PostOfficeBoxAddressMunicipalityData.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/PostOfficeBoxAddressMunicipalityNameData.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/PostOfficeBoxAddressMunicipalityNameData.java index d76fd1dd..f6610160 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/PostOfficeBoxAddressMunicipalityNameData.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/PostOfficeBoxAddressMunicipalityNameData.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/PostOfficeBoxData.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/PostOfficeBoxData.java index cc6df94c..4faaf733 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/PostOfficeBoxData.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/PostOfficeBoxData.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/PostOfficeData.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/PostOfficeData.java index eae42c8c..be976297 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/PostOfficeData.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/PostOfficeData.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/RegisteredEntryData.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/RegisteredEntryData.java index 5aa533e1..58b44536 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/RegisteredEntryData.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/RegisteredEntryData.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/RegisteredOfficeData.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/RegisteredOfficeData.java index 1fde8d5a..cb1ea65b 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/RegisteredOfficeData.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/RegisteredOfficeData.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/SecurityServerData.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/SecurityServerData.java index 383c2d79..e1b09451 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/SecurityServerData.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/SecurityServerData.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/SecurityServerDataList.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/SecurityServerDataList.java index 3545158e..346d920d 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/SecurityServerDataList.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/SecurityServerDataList.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/SecurityServerInfo.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/SecurityServerInfo.java index 6046d3c2..0889b251 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/SecurityServerInfo.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/SecurityServerInfo.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/ServiceData.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/ServiceData.java index 9136484d..443abb58 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/ServiceData.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/ServiceData.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/ServiceEndpointsResponse.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/ServiceEndpointsResponse.java index e20bef9e..1c187de7 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/ServiceEndpointsResponse.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/ServiceEndpointsResponse.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/ServiceResponse.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/ServiceResponse.java index d26da90f..0963e14a 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/ServiceResponse.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/ServiceResponse.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/ServiceStatistics.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/ServiceStatistics.java index 11c66bc7..5aad68d8 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/ServiceStatistics.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/ServiceStatistics.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/ServiceStatisticsResponse.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/ServiceStatisticsResponse.java index 0c152da7..dc80385b 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/ServiceStatisticsResponse.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/ServiceStatisticsResponse.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/StreetAddressAdditionalInformationData.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/StreetAddressAdditionalInformationData.java index 27ad0dfe..54be888a 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/StreetAddressAdditionalInformationData.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/StreetAddressAdditionalInformationData.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/StreetAddressData.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/StreetAddressData.java index d631a98e..b08d6100 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/StreetAddressData.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/StreetAddressData.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/StreetAddressMunicipalityData.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/StreetAddressMunicipalityData.java index 5f5b455d..56c6b878 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/StreetAddressMunicipalityData.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/StreetAddressMunicipalityData.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/StreetAddressMunicipalityNameData.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/StreetAddressMunicipalityNameData.java index 80d45c94..15a44f16 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/StreetAddressMunicipalityNameData.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/StreetAddressMunicipalityNameData.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/StreetAddressPostOfficeData.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/StreetAddressPostOfficeData.java index 1d152760..9bd77b37 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/StreetAddressPostOfficeData.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/StreetAddressPostOfficeData.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/StreetData.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/StreetData.java index 081e1fe6..97ecec49 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/StreetData.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/StreetData.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/SubsystemData.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/SubsystemData.java index 018110e6..e929a3a2 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/SubsystemData.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/SubsystemData.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/SubsystemName.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/SubsystemName.java index cded220b..cad0611c 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/SubsystemName.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/SubsystemName.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/WebpageData.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/WebpageData.java index f655e0f3..809a4ca0 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/WebpageData.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/WebpageData.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/XRoadData.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/XRoadData.java index 48f45f48..df95de03 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/XRoadData.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/dto/XRoadData.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/Address.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/Address.java index f36e7a5f..ffaedac8 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/Address.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/Address.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/BusinessAddress.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/BusinessAddress.java index 06b2fef0..68d04e09 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/BusinessAddress.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/BusinessAddress.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/BusinessAuxiliaryName.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/BusinessAuxiliaryName.java index dd7a80dc..936b41b2 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/BusinessAuxiliaryName.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/BusinessAuxiliaryName.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/BusinessIdChange.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/BusinessIdChange.java index 556295aa..90b0cbaa 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/BusinessIdChange.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/BusinessIdChange.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/BusinessLine.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/BusinessLine.java index 4c2629b7..7aad9843 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/BusinessLine.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/BusinessLine.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/BusinessName.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/BusinessName.java index 41478ed5..9485d85a 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/BusinessName.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/BusinessName.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/Company.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/Company.java index 39b8cb4d..25842733 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/Company.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/Company.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/CompanyForm.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/CompanyForm.java index 7b489a32..40119153 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/CompanyForm.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/CompanyForm.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/ContactDetail.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/ContactDetail.java index bae22713..26dc1b89 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/ContactDetail.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/ContactDetail.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/Email.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/Email.java index 86cc84f9..bbaf649d 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/Email.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/Email.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/Endpoint.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/Endpoint.java index cf2ace77..486b98d7 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/Endpoint.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/Endpoint.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/ErrorLog.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/ErrorLog.java index 09443361..a88077dc 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/ErrorLog.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/ErrorLog.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/Language.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/Language.java index fa83ab14..d787ed9e 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/Language.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/Language.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/Liquidation.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/Liquidation.java index 0bed0571..c180aaf0 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/Liquidation.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/Liquidation.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/Member.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/Member.java index a2b1754b..2e4a83f9 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/Member.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/Member.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/MemberId.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/MemberId.java index a9ecf2ba..75735258 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/MemberId.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/MemberId.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/OpenApi.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/OpenApi.java index 74072d87..bdc6d06b 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/OpenApi.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/OpenApi.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/Organization.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/Organization.java index 2ceccfee..1827bc8d 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/Organization.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/Organization.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/OrganizationDescription.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/OrganizationDescription.java index bcced897..8c08f7eb 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/OrganizationDescription.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/OrganizationDescription.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/OrganizationName.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/OrganizationName.java index a92007ce..ad81f4f1 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/OrganizationName.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/OrganizationName.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/PhoneNumber.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/PhoneNumber.java index 12c3811c..66a5172a 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/PhoneNumber.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/PhoneNumber.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/PostOffice.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/PostOffice.java index ef7f178c..27f7f758 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/PostOffice.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/PostOffice.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/PostOfficeBox.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/PostOfficeBox.java index 2c8b50cd..05ed136c 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/PostOfficeBox.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/PostOfficeBox.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/PostOfficeBoxAddress.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/PostOfficeBoxAddress.java index 03f858b7..22181103 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/PostOfficeBoxAddress.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/PostOfficeBoxAddress.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/PostOfficeBoxAddressAdditionalInformation.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/PostOfficeBoxAddressAdditionalInformation.java index e9b7af4c..072fd3d8 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/PostOfficeBoxAddressAdditionalInformation.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/PostOfficeBoxAddressAdditionalInformation.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/PostOfficeBoxAddressMunicipality.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/PostOfficeBoxAddressMunicipality.java index d40440b4..41e3f8a2 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/PostOfficeBoxAddressMunicipality.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/PostOfficeBoxAddressMunicipality.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/PostOfficeBoxAddressMunicipalityName.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/PostOfficeBoxAddressMunicipalityName.java index 63700635..cd081a11 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/PostOfficeBoxAddressMunicipalityName.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/PostOfficeBoxAddressMunicipalityName.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/RegisteredEntry.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/RegisteredEntry.java index b8844adc..ddb4309c 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/RegisteredEntry.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/RegisteredEntry.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/RegisteredOffice.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/RegisteredOffice.java index 4f6e3fe5..a0f8bee6 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/RegisteredOffice.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/RegisteredOffice.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/Rest.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/Rest.java index 088d5136..21e8d545 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/Rest.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/Rest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/Service.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/Service.java index 294ef293..1611c9cd 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/Service.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/Service.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/ServiceId.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/ServiceId.java index 821e6453..01e8e3c1 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/ServiceId.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/ServiceId.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/StatusInfo.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/StatusInfo.java index 95dbbda9..eb2bc5f6 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/StatusInfo.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/StatusInfo.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/Street.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/Street.java index 375fdbbb..c127e676 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/Street.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/Street.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/StreetAddress.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/StreetAddress.java index c46549f0..5bd209b1 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/StreetAddress.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/StreetAddress.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/StreetAddressAdditionalInformation.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/StreetAddressAdditionalInformation.java index 76d0a0e2..471ae94a 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/StreetAddressAdditionalInformation.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/StreetAddressAdditionalInformation.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/StreetAddressMunicipality.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/StreetAddressMunicipality.java index ce14d0a3..ceca5fe1 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/StreetAddressMunicipality.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/StreetAddressMunicipality.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/StreetAddressMunicipalityName.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/StreetAddressMunicipalityName.java index a6021c64..1de46beb 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/StreetAddressMunicipalityName.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/StreetAddressMunicipalityName.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/StreetAddressPostOffice.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/StreetAddressPostOffice.java index 967022eb..3b388739 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/StreetAddressPostOffice.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/StreetAddressPostOffice.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/Subsystem.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/Subsystem.java index 46dcf3ba..648e26ec 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/Subsystem.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/Subsystem.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/SubsystemId.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/SubsystemId.java index c5668783..40fb35b3 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/SubsystemId.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/SubsystemId.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/WebPage.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/WebPage.java index 25c85850..49a39e54 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/WebPage.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/WebPage.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/Wsdl.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/Wsdl.java index db74c16b..f927d8de 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/Wsdl.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/entity/Wsdl.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/AddressRepository.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/AddressRepository.java index 12d06e97..cc56ba4b 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/AddressRepository.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/AddressRepository.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/BusinessAddressRepository.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/BusinessAddressRepository.java index a97ef132..fb08b86e 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/BusinessAddressRepository.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/BusinessAddressRepository.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/BusinessAuxiliaryNameRepository.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/BusinessAuxiliaryNameRepository.java index 2e0aa41d..f1d2ee4e 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/BusinessAuxiliaryNameRepository.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/BusinessAuxiliaryNameRepository.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/BusinessIdChangeRepository.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/BusinessIdChangeRepository.java index 1b348d14..d5ff1508 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/BusinessIdChangeRepository.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/BusinessIdChangeRepository.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/BusinessLineRepository.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/BusinessLineRepository.java index ca191dda..70430e18 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/BusinessLineRepository.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/BusinessLineRepository.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/BusinessNameRepository.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/BusinessNameRepository.java index 73db943d..09421613 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/BusinessNameRepository.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/BusinessNameRepository.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/CompanyFormRepository.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/CompanyFormRepository.java index d9dbaea5..a68d8063 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/CompanyFormRepository.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/CompanyFormRepository.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/CompanyRepository.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/CompanyRepository.java index 03d51aa1..7bf41274 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/CompanyRepository.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/CompanyRepository.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/ContactDetailRepository.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/ContactDetailRepository.java index 093f63c9..52c2dd91 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/ContactDetailRepository.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/ContactDetailRepository.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/EmailRepository.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/EmailRepository.java index c4445f51..42f1d55d 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/EmailRepository.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/EmailRepository.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/EndpointRepository.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/EndpointRepository.java index 838b5b10..c699eb1c 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/EndpointRepository.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/EndpointRepository.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/ErrorLogRepository.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/ErrorLogRepository.java index a3652102..79b49273 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/ErrorLogRepository.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/ErrorLogRepository.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/LanguageRepository.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/LanguageRepository.java index 31234217..33ecbbb4 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/LanguageRepository.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/LanguageRepository.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/LiquidationRepository.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/LiquidationRepository.java index 08fe55aa..b034abe7 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/LiquidationRepository.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/LiquidationRepository.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/MemberRepository.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/MemberRepository.java index 2b4294f2..9d25d30c 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/MemberRepository.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/MemberRepository.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/OpenApiRepository.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/OpenApiRepository.java index af1219bb..261f62a3 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/OpenApiRepository.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/OpenApiRepository.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/OrganizationDescriptionRepository.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/OrganizationDescriptionRepository.java index 78969b41..f9749a6b 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/OrganizationDescriptionRepository.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/OrganizationDescriptionRepository.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/OrganizationNameRepository.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/OrganizationNameRepository.java index bcf4ecfd..ea16433e 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/OrganizationNameRepository.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/OrganizationNameRepository.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/OrganizationRepository.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/OrganizationRepository.java index f0fccba4..f4327815 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/OrganizationRepository.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/OrganizationRepository.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/PhoneNumberRepository.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/PhoneNumberRepository.java index beb07f3a..9a55d08a 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/PhoneNumberRepository.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/PhoneNumberRepository.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/PostOfficeBoxAddressAdditionalInformationRepository.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/PostOfficeBoxAddressAdditionalInformationRepository.java index 01d9a320..78df5615 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/PostOfficeBoxAddressAdditionalInformationRepository.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/PostOfficeBoxAddressAdditionalInformationRepository.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/PostOfficeBoxAddressMunicipalityNameRepository.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/PostOfficeBoxAddressMunicipalityNameRepository.java index 6f16dc2f..88fa9b88 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/PostOfficeBoxAddressMunicipalityNameRepository.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/PostOfficeBoxAddressMunicipalityNameRepository.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/PostOfficeBoxAddressMunicipalityRepository.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/PostOfficeBoxAddressMunicipalityRepository.java index bbf5e756..4c518fca 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/PostOfficeBoxAddressMunicipalityRepository.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/PostOfficeBoxAddressMunicipalityRepository.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/PostOfficeBoxAddressRepository.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/PostOfficeBoxAddressRepository.java index b31ad2b1..fcb80ba3 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/PostOfficeBoxAddressRepository.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/PostOfficeBoxAddressRepository.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/PostOfficeBoxRepository.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/PostOfficeBoxRepository.java index bf794355..15a9f2e8 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/PostOfficeBoxRepository.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/PostOfficeBoxRepository.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/PostOfficeRepository.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/PostOfficeRepository.java index 28f86938..9251f17c 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/PostOfficeRepository.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/PostOfficeRepository.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/RegisteredEntryRepository.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/RegisteredEntryRepository.java index e0971942..5f1e564b 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/RegisteredEntryRepository.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/RegisteredEntryRepository.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/RegisteredOfficeRepository.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/RegisteredOfficeRepository.java index 99abe3ad..529106d1 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/RegisteredOfficeRepository.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/RegisteredOfficeRepository.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/RestRepository.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/RestRepository.java index 9a073240..fd1dfa0f 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/RestRepository.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/RestRepository.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/ServiceRepository.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/ServiceRepository.java index 5801944a..0a1b9833 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/ServiceRepository.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/ServiceRepository.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/StreetAddressAdditionalInformationRepository.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/StreetAddressAdditionalInformationRepository.java index 499d4809..54509274 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/StreetAddressAdditionalInformationRepository.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/StreetAddressAdditionalInformationRepository.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/StreetAddressMunicipalityNameRepository.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/StreetAddressMunicipalityNameRepository.java index fccb5bd1..07ee6685 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/StreetAddressMunicipalityNameRepository.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/StreetAddressMunicipalityNameRepository.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/StreetAddressMunicipalityRepository.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/StreetAddressMunicipalityRepository.java index 1e8ca9bb..fcfde8ee 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/StreetAddressMunicipalityRepository.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/StreetAddressMunicipalityRepository.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/StreetAddressPostOfficeRepository.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/StreetAddressPostOfficeRepository.java index 96ff8022..f496237b 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/StreetAddressPostOfficeRepository.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/StreetAddressPostOfficeRepository.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/StreetAddressRepository.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/StreetAddressRepository.java index 31e96328..b2caa856 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/StreetAddressRepository.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/StreetAddressRepository.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/StreetRepository.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/StreetRepository.java index ef4544e1..552f1313 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/StreetRepository.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/StreetRepository.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/SubsystemRepository.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/SubsystemRepository.java index e647efae..dc9ce497 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/SubsystemRepository.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/SubsystemRepository.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/WebPageRepository.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/WebPageRepository.java index 593b36a8..27560e8b 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/WebPageRepository.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/WebPageRepository.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/WsdlRepository.java b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/WsdlRepository.java index 10bdf1ca..5b81772a 100644 --- a/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/WsdlRepository.java +++ b/xroad-catalog-persistence/src/main/java/fi/vrk/xroad/catalog/persistence/repository/WsdlRepository.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/AddressDataDTOTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/AddressDataDTOTest.java index 85b0bdbc..3bdfc4a6 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/AddressDataDTOTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/AddressDataDTOTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/AddressRepositoryTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/AddressRepositoryTest.java index 01ef465a..ab78da34 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/AddressRepositoryTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/AddressRepositoryTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/BusinessAddressDataDTOTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/BusinessAddressDataDTOTest.java index b33a650e..9f877544 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/BusinessAddressDataDTOTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/BusinessAddressDataDTOTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/BusinessAddressRepositoryTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/BusinessAddressRepositoryTest.java index fd8f679f..29b6dd06 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/BusinessAddressRepositoryTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/BusinessAddressRepositoryTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/BusinessAuxiliaryNameDataDTOTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/BusinessAuxiliaryNameDataDTOTest.java index d10f3583..2b50884c 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/BusinessAuxiliaryNameDataDTOTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/BusinessAuxiliaryNameDataDTOTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/BusinessAuxiliaryNameRepositoryTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/BusinessAuxiliaryNameRepositoryTest.java index c45caaee..54f0b8d6 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/BusinessAuxiliaryNameRepositoryTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/BusinessAuxiliaryNameRepositoryTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/BusinessIdChangeDataDTOTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/BusinessIdChangeDataDTOTest.java index 4dd3d379..aca0dd11 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/BusinessIdChangeDataDTOTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/BusinessIdChangeDataDTOTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/BusinessIdChangeRepositoryTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/BusinessIdChangeRepositoryTest.java index 09ee441d..8930d35f 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/BusinessIdChangeRepositoryTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/BusinessIdChangeRepositoryTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/BusinessLineDataDTOTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/BusinessLineDataDTOTest.java index c6e11099..60f76b10 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/BusinessLineDataDTOTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/BusinessLineDataDTOTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/BusinessLineRepositoryTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/BusinessLineRepositoryTest.java index 4cf478da..38b997f6 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/BusinessLineRepositoryTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/BusinessLineRepositoryTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/BusinessNameDataDTOTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/BusinessNameDataDTOTest.java index 69397864..65e21834 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/BusinessNameDataDTOTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/BusinessNameDataDTOTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/BusinessNameRepositoryTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/BusinessNameRepositoryTest.java index 3f62079b..87f9403e 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/BusinessNameRepositoryTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/BusinessNameRepositoryTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/CatalogServiceTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/CatalogServiceTest.java index 4383fca4..2f3a87e0 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/CatalogServiceTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/CatalogServiceTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/ChangedValueDTOTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/ChangedValueDTOTest.java index 9791b821..fc67765b 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/ChangedValueDTOTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/ChangedValueDTOTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/CompanyDataDTOTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/CompanyDataDTOTest.java index fdefd9e5..4a873893 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/CompanyDataDTOTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/CompanyDataDTOTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/CompanyFormDataDTOTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/CompanyFormDataDTOTest.java index a6753bf3..a4b74d86 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/CompanyFormDataDTOTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/CompanyFormDataDTOTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/CompanyFormRepositoryTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/CompanyFormRepositoryTest.java index a29b7190..1752958b 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/CompanyFormRepositoryTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/CompanyFormRepositoryTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/CompanyRepositoryTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/CompanyRepositoryTest.java index bd64e586..5636377d 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/CompanyRepositoryTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/CompanyRepositoryTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/CompanyServiceTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/CompanyServiceTest.java index 06e64c54..f567ae37 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/CompanyServiceTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/CompanyServiceTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/ContactDetailDataDTOTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/ContactDetailDataDTOTest.java index 95d323e6..ebea397c 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/ContactDetailDataDTOTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/ContactDetailDataDTOTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/ContactDetailRepositoryTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/ContactDetailRepositoryTest.java index 10f26c39..64a45449 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/ContactDetailRepositoryTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/ContactDetailRepositoryTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/DescriptorInfoDTOTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/DescriptorInfoDTOTest.java index 0dbd1a32..cf5d57d3 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/DescriptorInfoDTOTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/DescriptorInfoDTOTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/DescriptorInfoListDTOTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/DescriptorInfoListDTOTest.java index ab1bb862..883dd504 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/DescriptorInfoListDTOTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/DescriptorInfoListDTOTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/DistinctServiceStatisticsDTOTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/DistinctServiceStatisticsDTOTest.java index 1c1fba44..40803219 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/DistinctServiceStatisticsDTOTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/DistinctServiceStatisticsDTOTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/DistinctServiceStatisticsResponseDTOTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/DistinctServiceStatisticsResponseDTOTest.java index 9e1f1199..daf32c58 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/DistinctServiceStatisticsResponseDTOTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/DistinctServiceStatisticsResponseDTOTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/EmailDTOTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/EmailDTOTest.java index 3d2059e6..8bad661e 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/EmailDTOTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/EmailDTOTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/EmailDataDTOTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/EmailDataDTOTest.java index cc2ad17f..558ac1d2 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/EmailDataDTOTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/EmailDataDTOTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/EmailRepositoryTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/EmailRepositoryTest.java index c0405998..eaef1480 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/EmailRepositoryTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/EmailRepositoryTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/EndpointDataDTOTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/EndpointDataDTOTest.java index b885bd88..4a5fbd5c 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/EndpointDataDTOTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/EndpointDataDTOTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/ErrorLogRepositoryTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/ErrorLogRepositoryTest.java index 25144077..5939a67c 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/ErrorLogRepositoryTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/ErrorLogRepositoryTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/ErrorLogResponseDTOTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/ErrorLogResponseDTOTest.java index d3226e1d..9bbaa6a5 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/ErrorLogResponseDTOTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/ErrorLogResponseDTOTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/HeartbeatResponseDTOTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/HeartbeatResponseDTOTest.java index d555f3b9..60b9bfda 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/HeartbeatResponseDTOTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/HeartbeatResponseDTOTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/LanguageDataDTOTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/LanguageDataDTOTest.java index e7cbea60..58d72d06 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/LanguageDataDTOTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/LanguageDataDTOTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/LanguageRepositoryTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/LanguageRepositoryTest.java index b5f58f7d..f9c08163 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/LanguageRepositoryTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/LanguageRepositoryTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/LastCollectionDataDTOTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/LastCollectionDataDTOTest.java index fdab7cff..39ad3589 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/LastCollectionDataDTOTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/LastCollectionDataDTOTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/LiquidationDataDTOTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/LiquidationDataDTOTest.java index 3fb9a98d..4c508701 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/LiquidationDataDTOTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/LiquidationDataDTOTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/LiquidationRepositoryTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/LiquidationRepositoryTest.java index c46ae1d6..324b1d51 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/LiquidationRepositoryTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/LiquidationRepositoryTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/ListOfServicesResponseDTOTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/ListOfServicesResponseDTOTest.java index 69be7332..4081037e 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/ListOfServicesResponseDTOTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/ListOfServicesResponseDTOTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/MemberDataDTOTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/MemberDataDTOTest.java index eea1ee32..a46c99b9 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/MemberDataDTOTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/MemberDataDTOTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/MemberDataListDTOTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/MemberDataListDTOTest.java index bbd1f294..01d54ccf 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/MemberDataListDTOTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/MemberDataListDTOTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/MemberInfoDTOTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/MemberInfoDTOTest.java index be038bbb..f60e9226 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/MemberInfoDTOTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/MemberInfoDTOTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/MemberRepositoryTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/MemberRepositoryTest.java index 1c58650c..b4418f71 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/MemberRepositoryTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/MemberRepositoryTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/MemberTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/MemberTest.java index e1e8d992..1e1e6827 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/MemberTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/MemberTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/OrganizationChangedDTOTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/OrganizationChangedDTOTest.java index fb27c637..b5b52964 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/OrganizationChangedDTOTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/OrganizationChangedDTOTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/OrganizationDTOTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/OrganizationDTOTest.java index 425c7236..34a28cf9 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/OrganizationDTOTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/OrganizationDTOTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/OrganizationDataDTOTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/OrganizationDataDTOTest.java index 0c412911..30546f40 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/OrganizationDataDTOTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/OrganizationDataDTOTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/OrganizationDescriptionDataDTOTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/OrganizationDescriptionDataDTOTest.java index 477f1438..0cfbb31e 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/OrganizationDescriptionDataDTOTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/OrganizationDescriptionDataDTOTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/OrganizationDescriptionRepositoryTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/OrganizationDescriptionRepositoryTest.java index 5dbd88f7..6fd19d66 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/OrganizationDescriptionRepositoryTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/OrganizationDescriptionRepositoryTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/OrganizationNameDataDTOTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/OrganizationNameDataDTOTest.java index 022bba0e..e3070277 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/OrganizationNameDataDTOTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/OrganizationNameDataDTOTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/OrganizationNameRepositoryTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/OrganizationNameRepositoryTest.java index bce8ca65..0c637d6b 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/OrganizationNameRepositoryTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/OrganizationNameRepositoryTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/OrganizationRepositoryTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/OrganizationRepositoryTest.java index 16683088..c81e1064 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/OrganizationRepositoryTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/OrganizationRepositoryTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/OrganizationServiceTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/OrganizationServiceTest.java index 72fdba68..9484beba 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/OrganizationServiceTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/OrganizationServiceTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/PhoneNumberDataDTOTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/PhoneNumberDataDTOTest.java index bb28970c..eff93ab1 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/PhoneNumberDataDTOTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/PhoneNumberDataDTOTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/PhoneNumberRepositoryTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/PhoneNumberRepositoryTest.java index 278c45bd..65834660 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/PhoneNumberRepositoryTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/PhoneNumberRepositoryTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/PostOfficeBoxAddressAdditionalInformationDataDTOTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/PostOfficeBoxAddressAdditionalInformationDataDTOTest.java index e934bb7b..92b0f904 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/PostOfficeBoxAddressAdditionalInformationDataDTOTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/PostOfficeBoxAddressAdditionalInformationDataDTOTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/PostOfficeBoxAddressAdditionalInformationRepositoryTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/PostOfficeBoxAddressAdditionalInformationRepositoryTest.java index cb7692eb..b7a99e58 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/PostOfficeBoxAddressAdditionalInformationRepositoryTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/PostOfficeBoxAddressAdditionalInformationRepositoryTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/PostOfficeBoxAddressDataDTOTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/PostOfficeBoxAddressDataDTOTest.java index 69bb82f9..a6a11cab 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/PostOfficeBoxAddressDataDTOTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/PostOfficeBoxAddressDataDTOTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/PostOfficeBoxAddressMunicipalityDataDTOTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/PostOfficeBoxAddressMunicipalityDataDTOTest.java index 7434974e..36e9d480 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/PostOfficeBoxAddressMunicipalityDataDTOTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/PostOfficeBoxAddressMunicipalityDataDTOTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/PostOfficeBoxAddressMunicipalityNameDataDTOTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/PostOfficeBoxAddressMunicipalityNameDataDTOTest.java index 2e10bbe2..3252d467 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/PostOfficeBoxAddressMunicipalityNameDataDTOTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/PostOfficeBoxAddressMunicipalityNameDataDTOTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/PostOfficeBoxAddressMunicipalityNameRepositoryTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/PostOfficeBoxAddressMunicipalityNameRepositoryTest.java index 1fd4f753..35bdc16f 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/PostOfficeBoxAddressMunicipalityNameRepositoryTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/PostOfficeBoxAddressMunicipalityNameRepositoryTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/PostOfficeBoxAddressMunicipalityRepositoryTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/PostOfficeBoxAddressMunicipalityRepositoryTest.java index 2b9090d5..78765887 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/PostOfficeBoxAddressMunicipalityRepositoryTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/PostOfficeBoxAddressMunicipalityRepositoryTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/PostOfficeBoxAddressRepositoryTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/PostOfficeBoxAddressRepositoryTest.java index 5b6a5d6a..ad5180fb 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/PostOfficeBoxAddressRepositoryTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/PostOfficeBoxAddressRepositoryTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/PostOfficeBoxDataDTOTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/PostOfficeBoxDataDTOTest.java index 4bb14c1c..689b695c 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/PostOfficeBoxDataDTOTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/PostOfficeBoxDataDTOTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/PostOfficeBoxRepositoryTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/PostOfficeBoxRepositoryTest.java index ac608e7b..1df6c497 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/PostOfficeBoxRepositoryTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/PostOfficeBoxRepositoryTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/PostOfficeDataDTOTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/PostOfficeDataDTOTest.java index efd2f824..e2aa54e4 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/PostOfficeDataDTOTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/PostOfficeDataDTOTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/PostOfficeRepositoryTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/PostOfficeRepositoryTest.java index deec4f19..46ab2c74 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/PostOfficeRepositoryTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/PostOfficeRepositoryTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/RegisteredEntryDataDTOTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/RegisteredEntryDataDTOTest.java index 9ce04b8d..71ec86af 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/RegisteredEntryDataDTOTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/RegisteredEntryDataDTOTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/RegisteredEntryRepositoryTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/RegisteredEntryRepositoryTest.java index e7bb87ce..d5b395f4 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/RegisteredEntryRepositoryTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/RegisteredEntryRepositoryTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/RegisteredOfficeDataDTOTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/RegisteredOfficeDataDTOTest.java index f4d88d2b..e0790f2e 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/RegisteredOfficeDataDTOTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/RegisteredOfficeDataDTOTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/RegisteredOfficeRepositoryTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/RegisteredOfficeRepositoryTest.java index 39d4c736..2f5ed62b 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/RegisteredOfficeRepositoryTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/RegisteredOfficeRepositoryTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/SaveMissingSubsystemTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/SaveMissingSubsystemTest.java index 7acb6615..ee7d3260 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/SaveMissingSubsystemTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/SaveMissingSubsystemTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/SecurityServerDataDTOTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/SecurityServerDataDTOTest.java index 6c8ee7ad..36dddca1 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/SecurityServerDataDTOTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/SecurityServerDataDTOTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/SecurityServerDataListDTOTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/SecurityServerDataListDTOTest.java index 9a87a09e..80fa74b3 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/SecurityServerDataListDTOTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/SecurityServerDataListDTOTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/SecurityServerInfoDTOTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/SecurityServerInfoDTOTest.java index 432559e4..2fbb96b7 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/SecurityServerInfoDTOTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/SecurityServerInfoDTOTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/ServiceDataDTOTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/ServiceDataDTOTest.java index b5894cce..db19ce9d 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/ServiceDataDTOTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/ServiceDataDTOTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/ServiceEndpointsResponseDTOTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/ServiceEndpointsResponseDTOTest.java index bb3d9383..1d581530 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/ServiceEndpointsResponseDTOTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/ServiceEndpointsResponseDTOTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/ServiceRepositoryTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/ServiceRepositoryTest.java index 4673fae9..14707201 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/ServiceRepositoryTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/ServiceRepositoryTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/ServiceResponseDTOTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/ServiceResponseDTOTest.java index e6b66a5c..4824c2df 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/ServiceResponseDTOTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/ServiceResponseDTOTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/ServiceStatisticsDTOTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/ServiceStatisticsDTOTest.java index 6fed850a..2bcb5b1d 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/ServiceStatisticsDTOTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/ServiceStatisticsDTOTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/ServiceStatisticsResponseDTOTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/ServiceStatisticsResponseDTOTest.java index 71739c16..41534e7e 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/ServiceStatisticsResponseDTOTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/ServiceStatisticsResponseDTOTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/StreetAddressAdditionalInformationDataDTOTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/StreetAddressAdditionalInformationDataDTOTest.java index cf08f284..94e70a77 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/StreetAddressAdditionalInformationDataDTOTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/StreetAddressAdditionalInformationDataDTOTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/StreetAddressAdditionalInformationRepositoryTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/StreetAddressAdditionalInformationRepositoryTest.java index bbf9d01d..c01c4859 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/StreetAddressAdditionalInformationRepositoryTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/StreetAddressAdditionalInformationRepositoryTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/StreetAddressDataDTOTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/StreetAddressDataDTOTest.java index 86ee8f7a..abc4a8d6 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/StreetAddressDataDTOTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/StreetAddressDataDTOTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/StreetAddressMunicipalityDataDTOTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/StreetAddressMunicipalityDataDTOTest.java index 69f4e4d8..6700599a 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/StreetAddressMunicipalityDataDTOTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/StreetAddressMunicipalityDataDTOTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/StreetAddressMunicipalityNameDataDTOTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/StreetAddressMunicipalityNameDataDTOTest.java index c5e7caa8..3807b398 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/StreetAddressMunicipalityNameDataDTOTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/StreetAddressMunicipalityNameDataDTOTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/StreetAddressMunicipalityNameRepositoryTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/StreetAddressMunicipalityNameRepositoryTest.java index 7823c26b..1165e27d 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/StreetAddressMunicipalityNameRepositoryTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/StreetAddressMunicipalityNameRepositoryTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/StreetAddressMunicipalityRepositoryTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/StreetAddressMunicipalityRepositoryTest.java index 9d01e0b4..fb528712 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/StreetAddressMunicipalityRepositoryTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/StreetAddressMunicipalityRepositoryTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/StreetAddressPostOfficeDataDTOTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/StreetAddressPostOfficeDataDTOTest.java index 7a9bb898..7947e048 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/StreetAddressPostOfficeDataDTOTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/StreetAddressPostOfficeDataDTOTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/StreetAddressPostOfficeRepositoryTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/StreetAddressPostOfficeRepositoryTest.java index 19b00e73..ae6a9dae 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/StreetAddressPostOfficeRepositoryTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/StreetAddressPostOfficeRepositoryTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/StreetAddressRepositoryTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/StreetAddressRepositoryTest.java index f33e47f5..a4618f42 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/StreetAddressRepositoryTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/StreetAddressRepositoryTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/StreetDataDTOTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/StreetDataDTOTest.java index 943d6eca..32c38d5e 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/StreetDataDTOTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/StreetDataDTOTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/StreetRepositoryTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/StreetRepositoryTest.java index c2471df1..8894bc89 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/StreetRepositoryTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/StreetRepositoryTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/SubsystemDataDTOTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/SubsystemDataDTOTest.java index 601e3df3..5dcf28e5 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/SubsystemDataDTOTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/SubsystemDataDTOTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/SubsystemNameDTOTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/SubsystemNameDTOTest.java index 665f9d9a..247ddf45 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/SubsystemNameDTOTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/SubsystemNameDTOTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/SubsystemRepositoryTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/SubsystemRepositoryTest.java index 48366e60..03eba760 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/SubsystemRepositoryTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/SubsystemRepositoryTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/SubsystemTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/SubsystemTest.java index bcbd1c24..6a282191 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/SubsystemTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/SubsystemTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/TestUtil.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/TestUtil.java index f1261775..8f1a032c 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/TestUtil.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/TestUtil.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/WebPageRepositoryTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/WebPageRepositoryTest.java index fbe244aa..65412f07 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/WebPageRepositoryTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/WebPageRepositoryTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/WebpageDataDTOTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/WebpageDataDTOTest.java index 32735e04..7188ace0 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/WebpageDataDTOTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/WebpageDataDTOTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/XRoadDataDTOTest.java b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/XRoadDataDTOTest.java index b9a45b1e..354da3ed 100644 --- a/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/XRoadDataDTOTest.java +++ b/xroad-catalog-persistence/src/test/java/fi/vrk/xroad/catalog/persistence/XRoadDataDTOTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad_catalog_production.png b/xroad_catalog_production.png deleted file mode 100644 index 75f78665f94c88382237ad6ab0e14e7319001025..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34622 zcma&O3p~^B`#(T*F4_76HbqW#^ z5=w3;XS{@jRHKB1iNusn{_aiW#Mu}OCbC!-WEzpmAx3g7qA1b8E#Uh|CYcsSqmcg`1GWM~%&kD?V7Lzm zYz%RPT8ZD_79g;7;Gg4(R7%ue1fdpI0D&z85Xczf1YBWgQ89erlW%JiVq z5fpz42~7jIA)yeM1;j=?1-VvNBE;5vfFpa37Plu!m!JOvTXVMYRXkRU5t3oG#t zaMPO@M&!_zkr1yumcrrEm{ET(+``rZ^yd;O(M0N>ciC7@7}5#MX4t@OqR?cM&+3C_atv?HrBA21c?2i2g7i zTYiMQFEE))cJtxE5g;5jOiTq4%E5VA`D3ARZqX!XFNP0N5X$Gqp+n=yF@Z$5Cmx3d zMted+t)N!CI06wKgN=iPyCU5P?lI(Wl#M$;#50EO5(<#EcH?8I5a0%b9?j522~bfk z7#jk`#u`GQf?e^k0kBwKJdI-oj*24rSbOn3VFAD#DA_j>5=gYBV=00D02^x@j87%G z3PN4H;4aqw&}gtf)e9KMjEHvkvu(U$toTlpaCaQA zYCh8+*qwKxVqUyhw}ZSF%WV9%s@Y|mg+z|9inXPJ&`jW)*hmW1nr-Dp^dceM3BXf0BH3sz$r&ET2?qtl zkzK4YzHZiWRIC@)35D{8I1`*BkO3}G0H;Vllr6!_6_|r_!Q-(UBFUEOBd{h0Fr&~Q znt(IZX63FpyO=t zSTvc(;b8rUuHv1*b|u+D93i+^3K!&p3?PIe7<>YZ2BYHx!aM=%;S?JIV$pfNz`~JM z$OsNOfb1UU3W@a!VEKb0yk6s0ua9#_eg*M+25OQ6Xt^?vjtfHXb3diGt9%<-H*scxqE~~`vb<*iQvO@ z^+)@_m{A^FM5u==7Ubgrb9cjq`mtlcEDu3|PiO#^8M7YZrHjf8MPN5m1xSiU>e!wC*-swlP?%~6hkl|z!rFgjo* z0V#N}{h~c_FdG3Oj_A*|2@LhJ2JQ=NATeM#lnSBxLajY17;7hxEz1uX>E_}S=R$x0 zUc|{a91LXwC_xgu5O9Q>4><~hN8&ghRA(lQPT~>hkN~$pPNcUd0*nX8Q1}sXp=b&g z8tos;AyX;NUa@hWt~OXG0}6GdMhI}x;U275v7sPh;=H*aluxw42jv2FqIl!NAufzi zJRbOt=g%ejk%*B{$1sRvBpOemVQ^6tl83FABRGNxti_XtKzPMLF$`QJ3;2~r;jnE% z-d<4=aIU+R8x|ew%ff)!ab9@WKtHAzH;}+0Fc1+CH%DhM)5--O>Bsix(~-Cc8-H|+ zH=jeYLdSW7U5QXHCf0*v<4U*T!NOel9%z9TD2jo$^(Ken`D}Wa8wej47|1~jqFvZl zE`elb3>SxR#$ouhSPF$0#^n0Ku#wy-|0o+enhvEAqrDwHaAY3_1?K1Bhl-=x@XI~VACl$C^OC%#`Cjb*n+s;1WcCmo+=};;P?Gpt!StL#15$PF5M6n$i9&z+AOeinPk>JFKM0!WL z(ohh80ntz3>+Vgp;^I96nbs&lw3RcQ$V7QVfyto+GztO^^WykIY%o?l8#Dvz;|Z{c zMNpx%FeV63WH^GMFkdHx6M-5S;N?IfJ=}ik@qA3tZO1OtJ6G8Ef1`9Y8UmOtF5EyV6o`4V#UEw%iYZk+n zjzak|Kt5hrP$Up+1VqDp!Xe(aepYM_6BWsG=3&5m8l6t^Km-41E>@^mG8#vw1|aDk zbQi$XI)OMWYi1M+90s=W3WND_2t2x16ksr{IAAaW6&=U%= zY>)&T+|SvQ9)k^sQ;>i=q$7QZATppxKr}=*50A)*C`wc~*)`0~$KM+#aE4=J{Jm`h znYLDBUSjWK7D1t2#=Lg)5v1Ym2dctEPtXaO^ zG!zo)@8szo#*9R`xwufcbY~kYNSGgA>{5YH#>p>|NTDHP*&J$UXpF#*#di)5_xF#5 zU~MUWUKkb*Zo_4X&4{xV#>vs!4bQf=CVK_Y=txLtV3Y?yAdKV;VnjuN-8cw3#m2>l z0Y>|KgjpjgL^eqffkcJ{B4EILZxGl9&SQI0B3;HJyM1$U9-J-GFyn zgmb8ybu5w<7Yp&jiJ|9V3$~7iphCUeFfezx8-xS_qGiC3fuI6608dUaC{iraD;z+tMJQNO8azMRE&s z^RSH-bHc;D018oJml_Izh{4JNi!B;N4Enfen<%mAfMam(1QHm6!dctGqgiYw8xE!6 zC@5$QheowVlVf6CeCgI0rYi+lJ<=9KjbM3`X}*jAA`#;349DR4Or}2(5A&zt!+g+4 zGToma80IX9uyOVaAi@L~pI9$9n*bOtkVNGWI7C8N1h9fIUkJmR9c%6AOk%sn#e_0I z0YHS0#KQuBP|ZIU>_ZJ@f(X1gt3clf8yLaWn!)zA!E#u(u|8zHOBB@6l}iG{IT#2q z2_VO%`&)zAPVOi=hVL9hhd?8kVmO8QgqLfe=T5fa2&C1qW_>xklMyeGx1a zTD*as*tQ5nEWzE&In>dK;?4~OVtH4AH!sYK&Oo@so#P_Cn84bc#H@%BGNcB_#AE+?*YK_`wrrW%(Ly{r7SD7g8k*9Gq5b zNGi$^9zQp%>GK8&~StoDaYp0lXR`$F@wKbG zmv?0IM^~<~y^Skevn1qkLbtZsjJ&9x-Ul*{E4e}&-!qyJ(YL7%l~ZP^Eb|@n_hbjD zM$DeEA!n12iensio5
9l3JnR2%uP7NZzf)o(8z8|thuZnV2Fz*E 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 diff --git a/xroad_catalog_user_guide.md b/xroad_catalog_user_guide.md deleted file mode 100644 index a259912e..00000000 --- a/xroad_catalog_user_guide.md +++ /dev/null @@ -1,2854 +0,0 @@ -# X-Road Catalog User Guide -Version: 3.0.1 -Doc. ID: XRDCAT-CONF - ---- - -## Version history -| Date | Version | Description | Author | -|------------|---------|--------------------------------------------------------------------------------|--------------------| -| 21.07.2021 | 1.0.0 | Initial draft | Bert Viikmäe | -| 21.07.2021 | 1.0.1 | Add installation section | Bert Viikmäe | -| 22.07.2021 | 1.0.2 | Add X-Road Catalog Collector section | Bert Viikmäe | -| 23.07.2021 | 1.0.3 | Add X-Road Catalog Lister section | Bert Viikmäe | -| 23.07.2021 | 1.0.4 | Add X-Road Catalog Persistence section | Bert Viikmäe | -| 25.08.2021 | 1.0.5 | Add list distinct services endpoint description | Bert Viikmäe | -| 02.09.2021 | 1.0.6 | Add list errors endpoint description | Bert Viikmäe | -| 22.09.2021 | 1.0.7 | Update heartbeat endpoint description | Bert Viikmäe | -| 26.10.2021 | 1.0.8 | Update listErrors endpoint description | Bert Viikmäe | -| 27.10.2021 | 1.1.0 | Add listSecurityServers and listDescriptors endpoint descriptions | Bert Viikmäe | -| 15.12.2021 | 1.1.1 | Update listErrors endpoint description | Bert Viikmäe | -| 08.02.2022 | 1.2.0 | Add getOrganization and getOrganizationChanges endpoint descriptions | Bert Viikmäe | -| 29.07.2022 | 2.0.0 | Substitute since with start and end date parameter and update related chapters | Bert Viikmäe | -| 04.10.2022 | 2.1.0 | Add getRest and getEndpoints descriptions | Bert Viikmäe | -| 15.01.2023 | 3.0.0 | Restructure of the document | Bert Viikmäe | - -## Table of Contents - - - - -* [License](#license) -* [1. Introduction](#1-introduction) - * [1.1 Target Audience](#11-target-audience) -* [2. Installation](#2-installation) - * [2.1 Prerequisites to Installation](#21-prerequisites-to-installation) - * [2.2 Installation](#22-installation) - * [2.3 SSL](#23-ssl) - * [2.4 Status of services](#24-status-of-services) - * [2.5 Logs](#25-logs) - * [2.6 Profiles](#26-profiles) - * [2.6.1 Default profile](#261-default-profile) - * [2.6.2 FI profile](#262-fi-profile) -* [3. X-Road Catalog](#3-x-road-catalog) - * [3.1 X-Road Catalog Collector](#31-x-road-catalog-collector) - * [3.2 X-Road Catalog Lister](#32-x-road-catalog-lister) - * [3.2.1 SOAP endpoints](#321-soap-endpoints) - * [3.2.1.1 List all members](#3211-list-all-members) - * [3.2.1.2 Retrieve WSDL descriptions](#3212-retrieve-wsdl-descriptions) - * [3.2.1.3 Retrieve OPENAPI descriptions](#3213-retrieve-openapi-descriptions) - * [3.2.1.4 Get service type](#3214-get-service-type) - * [3.2.1.5 Check if member is provider](#3215-check-if-member-is-provider) - * [3.2.1.6 List errors](#3216-list-errors) - * [3.2.1.7 List organizations](#3217-list-organizations) - * [3.2.1.8 List organization changes](#3218-list-organization-changes) - * [3.2.1.9 List companies](#3219-list-companies) - * [3.2.1.10 List company changes](#32110-list-company-changes) - * [3.2.2 REST endpoints](#322-rest-endpoints) - * [3.2.2.1 List service statistics](#3221-list-service-statistics) - * [3.2.2.2 List service statistics in CSV format](#3222-list-service-statistics-in-csv-format) - * [3.2.2.3 List services](#3223-list-services) - * [3.2.2.4 List services in CSV format](#3224-list-services-in-csv-format) - * [3.2.2.5 Check heartbeat](#3225-check-heartbeat) - * [3.2.2.6 List distinct service statistics](#3226-list-distinct-service-statistics) - * [3.2.2.7 List errors](#3227-list-errors) - * [3.2.2.8 List security servers](#3228-list-security-servers) - * [3.2.2.9 List descriptors](#3229-list-descriptors) - * [3.2.2.10 Get endpoints](#32210-get-endpoints) - * [3.2.2.11 Get Rest](#32211-get-rest) - * [3.2.2.12 Get Organization](#32212-get-organization) - * [3.2.2.13 Get Organization changes](#32213-get-organization-changes) - * [3.2.2.14 Check organization heartbeat](#32214-check-organization-heartbeat) - * [3.3 X-Road Catalog Persistence](#33-x-road-catalog-persistence) - - - - -## License - -This document is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/. - -## 1. Introduction - -The purpose of this piece of software is to collect information, more specifically members, subsystems and services, from an X-Road Catalog instance and offer an interface where the information can be read. - -The software consists of three parts: -- X-Road Catalog Collector - * Collects members, subsystems and services from the X-Road instance and stores them to a database. - * Implemented using concurrent Akka actors. -- X-Road Catalog Lister - * Provides SOAP and REST endpoints offering information collected by the collector. - * Can be used as an X-Road service (X-Road headers are in place) -- X-Road Catalog Persistence - * Library used to persist and read persisted data. Used by both of the above. - -### 1.1 Target Audience - -The intended audience of this user guide are system administrators responsible for managing and configuring systems and applicatons that use X-Road services. -The document is intended for readers with a good knowledge of Linux server management, computer networks, and the X-Road functioning principles. - -## 2. Installation - -## 2.1 Prerequisites to Installation - -Running the X-Road Catalog software requires Linux (Ubuntu or RHEL). If you are using some other operating system (e.g. Windows or macOS), the easiest option is to first install Ubuntu 18.04 or RHEL 7.0 into a virtual machine. - -*Required for building* -* OpenJDK / JDK version 11 -* Gradle - -*Recommended for development environment* -* Docker (for deb/rpm packaging) -* LXD (https://linuxcontainers.org/lxd/) - * for setting up a local X-Road instance -* Ansible - * for automating the X-Road instance installation - -The development environment should have at least 8GB of memory and 20GB of free disk space (applies to a virtual machine as well), especially if you set up a local X-Road instance. - - -## 2.2 Installation - -The installable software consists of xroad-catalog-collector and xroad-catalog-lister. Both are provided as RPM packages. - -``` $ sudo yum install xroad-catalog-lister xroad-catalog-collector``` or ```rpm -i install xroad-catalog-lister xroad-catalog-collector``` - -Instructions on how to build the RPM packages using Docker can be found: -[here](xroad-catalog-collector/README.md#build-rpm-packages-on-non-redhat-platform) -and -[here](xroad-catalog-lister/README.md#build-rpm-packages-on-non-redhat-platform) - -Configure parameters in /etc/xroad/xroad-catalog/collector-production.properties, especially X-Road instance information and URL of security server. -``` -xroad-catalog.xroad-instance= -xroad-catalog.member-class= -xroad-catalog.member-code= -xroad-catalog.subsystem-code= -xroad-catalog.security-server-host= -``` - -In addition, configure also parameters related to behaviour of X-Road Catalog Collector: -``` -xroad-catalog.flush-log-time-after-hour= -xroad-catalog.flush-log-time-before-hour= -xroad-catalog.error-log-length-in-days= -xroad-catalog.fetch-run-unlimited= -xroad-catalog.fetch-time-after-hour= -xroad-catalog.fetch-time-before-hour= -xroad-catalog.collector-interval-min= -``` - -``` ERROR_LOGS_FLUSH_IN_DB_TIME_INTERVAL_AFTER ``` is a parameter for setting the start of time interval during which the error logs in the db will be deleted - when those exceed the amount in days set by ``` ERROR_LOGS_KEPT_IN_DB_LENGTH_IN_DAYS ``` parameter, e.g. value ``` 18 ``` means starting from ``` 18:00 ``` - -``` ERROR_LOGS_FLUSH_IN_DB_TIME_INTERVAL_BEFORE ``` is a parameter for setting the end of time interval during which the error logs in the db will be deleted - when those exceed the amount in days set by ``` ERROR_LOGS_KEPT_IN_DB_LENGTH_IN_DAYS ``` parameter, e.g. value ``` 23 ``` means ending at ``` 23:00 ``` - -``` ERROR_LOGS_KEPT_IN_DB_LENGTH_IN_DAYS ``` is a parameter for setting the amount in days for how long the errors logs should be kept in the db, - e.g. value ``` 90 ``` means ``` for 90 days ``` - -``` XROAD_CATALOG_COLLECTOR_FETCH_UNLIMITED ``` is a parameter for setting whether the X-Road Catalog Collector should try - to fetch data from security server continuously during a day or only between certain hours, e.g. value ``` true ``` means ``` continously ``` - -``` XROAD_CATALOG_COLLECTOR_FETCH_INTERVAL_AFTER ``` is a parameter for setting the start of time interval during which the X-Road Catalog Collector should try - to fetch data from security server continuously (this parameter will be ignored if the parameter ``` XROAD_CATALOG_COLLECTOR_FETCH_UNLIMITED ``` is set - to ``` true ```), e.g. value ``` 18 ``` means starting from ``` 18:00 ``` - -``` XROAD_CATALOG_COLLECTOR_FETCH_INTERVAL_BEFORE ``` is a parameter for setting the end of time interval during which the X-Road Catalog Collector should try - to fetch data from security server continuously (this parameter will be ignored if the parameter ``` XROAD_CATALOG_COLLECTOR_FETCH_UNLIMITED ``` is set - to ``` true ```), e.g. value ``` 23 ``` means ending at ``` 23:00 ``` - -``` XROAD_CATALOG_COLLECTOR_FETCH_INTERVAL_MINUTES ``` is a parameter for setting the amount of time in minutes after which the X-Road Catalog Collector - should start re-fetching data from security server, e.g. value ``` 60 ``` means ``` every 60 minutes ``` - -Change also the database password in /etc/xroad/xroad-catalog/catalogdb-production.properties. -``` -spring.datasource.password=password -``` -and in the DB: -``` -$ sudo -u postgres psql -U postgres -d postgres -c "alter user xroad_catalog with password 'password';" -``` - -Make sure that the services are enabled on boot and restart services in order to make the changes to have effect. -``` -# Enable the service to start on boot -$ sudo systemctl enable xroad-catalog-lister -$ sudo systemctl enable xroad-catalog-collector -$ sudo systemctl restart xroad-catalog-lister -$ sudo systemctl restart xroad-catalog-collector -``` -### X-Road Catalog installation in Production -![X-Road Catalog production](xroad_catalog_production.png) - -## 2.3 SSL - -If secure connection to the security server is required, add the server's cert for the JVM trust store, for example as follows. - -``` -$ sudo cp cert.pem /etc/pki/ca-trust/source/anchors/ -$ sudo update-ca-trust extract -``` - -If you don't have the certificate, it can be asked as follows: - -``` -$ openssl s_client -showcerts -connect :443 xroad-catalog.cer -``` - -Created xroad-catalog.cer must be added to security server (Through UI: Security Server Clients > SELECT SERVICE > Internal Servers > Internal TLS Certificates > ADD) - -The keystore password can be configured in /etc/xroad/xroad-catalog/collector-production.properties -``` -xroad-catalog.ssl-keystore-password=changeit -``` - - -## 2.4 Status of Services - -This instruction expects that xroad-catalog-collector and xroad-catalog-lister are installed on the same server. It is also possible to install them on different servers but then database settings need to be set for both services. For server of xroad-catalog-lister file /etc/xroad/xroad-catalog/catalogdb-production.properties must be manually created. - -``` -[root@ip-172-31-128-199 xroad-catalog]# service xroad-catalog-collector status -Redirecting to /bin/systemctl status xroad-catalog-collector.service -● xroad-catalog-collector.service - X-Road Catalog Collector - Loaded: loaded (/usr/lib/systemd/system/xroad-catalog-collector.service; disabled; vendor preset: enabled) - Active: active (running) since Thu 2016-04-07 11:00:42 EEST; 3min 11s ago - Main PID: 7298 (java) - CGroup: /system.slice/xroad-catalog-collector.service - └─7298 /bin/java -Dspring.profiles.active=production -jar /usr/lib/xroad-catalog/xroad-catalog-collector.jar -... -Apr 07 11:01:12 ip-172-31-128-199.eu-west-1.compute.internal xroad-catalog-collector[7298]: Hibernate: select subsystem0..._ -Apr 07 11:01:12 ip-172-31-128-199.eu-west-1.compute.internal xroad-catalog-collector[7298]: Hibernate: select wsdls0_.ser... -Apr 07 11:01:12 ip-172-31-128-199.eu-west-1.compute.internal xroad-catalog-collector[7298]: Hibernate: select nextval ('...) -Apr 07 11:01:12 ip-172-31-128-199.eu-west-1.compute.internal xroad-catalog-collector[7298]: Hibernate: insert into wsdl ...) -Apr 07 11:01:12 ip-172-31-128-199.eu-west-1.compute.internal xroad-catalog-collector[7298]: 2016-04-07 11:01:12.211 INF...y -Apr 07 11:01:13 ip-172-31-128-199.eu-west-1.compute.internal xroad-catalog-collector[7298]: Hibernate: select service0_....s -Apr 07 11:01:13 ip-172-31-128-199.eu-west-1.compute.internal xroad-catalog-collector[7298]: Hibernate: select subsystem0..._ -Apr 07 11:01:13 ip-172-31-128-199.eu-west-1.compute.internal xroad-catalog-collector[7298]: Hibernate: select wsdls0_.ser... -Apr 07 11:01:13 ip-172-31-128-199.eu-west-1.compute.internal xroad-catalog-collector[7298]: Hibernate: update wsdl set d...? -Apr 07 11:01:13 ip-172-31-128-199.eu-west-1.compute.internal xroad-catalog-collector[7298]: 2016-04-07 11:01:13.766 INF...y -Hint: Some lines were ellipsized, use -l to show in full. -``` - -``` -[root@ip-172-31-128-199 xroad-catalog]# service xroad-catalog-lister status -Redirecting to /bin/systemctl status xroad-catalog-lister.service -● xroad-catalog-lister.service - X-Road Catalog Lister - Loaded: loaded (/usr/lib/systemd/system/xroad-catalog-lister.service; enabled; vendor preset: enabled) - Active: active (running) since Thu 2016-04-07 07:06:03 EEST; 3h 58min ago - Main PID: 763 (java) - CGroup: /system.slice/xroad-catalog-lister.service - └─763 /bin/java -Dserver.port=8070 -Dspring.profiles.active=production -jar /usr/lib/xroad-catalog/xroad-catal... -Apr 07 11:01:11 ip-172-31-128-199.eu-west-1.compute.internal xroad-catalog-lister[763]: 2016-04-07 11:01:11.084 DEBUG 76...t -Apr 07 11:01:11 ip-172-31-128-199.eu-west-1.compute.internal xroad-catalog-lister[763]: 2016-04-07 11:01:11.101 DEBUG 76...t -Apr 07 11:01:11 ip-172-31-128-199.eu-west-1.compute.internal xroad-catalog-lister[763]: 2016-04-07 11:01:11.102 DEBUG 76...l -Apr 07 11:01:11 ip-172-31-128-199.eu-west-1.compute.internal xroad-catalog-lister[763]: 2016-04-07 11:01:11.105 DEBUG 76...] -Apr 07 11:01:11 ip-172-31-128-199.eu-west-1.compute.internal xroad-catalog-lister[763]: 2016-04-07 11:01:11.105 INFO 76...s -Apr 07 11:01:11 ip-172-31-128-199.eu-west-1.compute.internal xroad-catalog-lister[763]: 2016-04-07 11:01:11.105 DEBUG 76...y -Apr 07 11:01:11 ip-172-31-128-199.eu-west-1.compute.internal xroad-catalog-lister[763]: 2016-04-07 11:01:11.600 DEBUG 76...] -Apr 07 11:01:11 ip-172-31-128-199.eu-west-1.compute.internal xroad-catalog-lister[763]: 2016-04-07 11:01:11.611 DEBUG 76...] -Apr 07 11:01:11 ip-172-31-128-199.eu-west-1.compute.internal xroad-catalog-lister[763]: 2016-04-07 11:01:11.691 DEBUG 76...t -Apr 07 11:01:11 ip-172-31-128-199.eu-west-1.compute.internal xroad-catalog-lister[763]: 2016-04-07 11:01:11.692 DEBUG 76...t -Hint: Some lines were ellipsized, use -l to show in full. -``` - -## 2.5 Logs - -``` -$ sudo journalctl -fu xroad-catalog-collector --since="2016-04-07 10:50 --output=cat" -$ sudo journalctl -fu xroad-catalog-lister --since="2016-04-07 10:50 --output=cat" -``` - -## 2.6 Profiles - -Spring profiles are used to configure different implementation/features in X-Road Catalog. - -* Docker image is built within a CI/CD pipeline build process - - for X-Road Catalog Collector: -``` - docker build -t collector-rpm packages/xroad-catalog-collector/docker --build-arg CATALOG_PROFILE=fi -``` - - for X-Road Catalog Lister: -``` -docker build -t lister-rpm packages/xroad-catalog-lister/docker --build-arg CATALOG_PROFILE=fi -``` - - Profile value is provided to the respective "Dockerfile" with an argument ```--build-arg CATALOG_PROFILE=fi``` here - Then within the "Dockerfile" an environment variable ```CATALOG_PROFILE``` is initalized with that profile value. - -* A shell script "build_rpm.sh" is run within a docker container, which takes a ```p``` (profile) parameter as input, which is read from the environment variable ```CATALOG_PROFILE``` -* The shell script "build_rpm.sh" passes on the profile parameter(the script assumes the profile is ```default``` when no value is given with the ```profile``` parameter) - to ```xroad-catalog-collector.spec``` or ```xroad-catalog-lister.spec``` which configures a prepares the creation Systemd service for X-Road Catalog Collector or X-Road Catalog Lister. -* Within that ```.spec``` file the catalog profile value will be written to a properties file: - -``` - echo "CATALOG_PROFILE=%{profile}" >> catalog-profile.properties -``` - -* Then that file will be copied to ```/etc/xroad/xroad-catalog``` among other properties files -* In addition, specific db scripts will be run within that "spec" file according to the value of the ```profile```: - -``` - sudo -u postgres psql --file=/usr/share/xroad/sql/create_tables_%{profile}.sql -``` - -* Finally, the profile value will be read from that properties file: - -``` - source /etc/xroad/xroad-catalog/catalog-profile.properties -``` - -* Then a Systemd service will be created with the following content - - for X-Road Catalog Collector: - -``` - exec ${JAVA_HOME}/bin/java -Xms128m -Xmx2g -Dspring.profiles.active=base,production -Dspring.profiles.include=$CATALOG_PROFILE -jar /usr/lib/xroad-catalog/xroad-catalog-collector.jar --spring.config.location=/etc/xroad/xroad-catalog/ --spring.config.name=collector,catalogdb -``` - - for X-Road Catalog Lister: - -``` - exec ${JAVA_HOME}/bin/java -Xms128m -Xmx2g -Dserver.port=8070 -Dspring.profiles.active=production -Dspring.profiles.include=$CATALOG_PROFILE -jar /usr/lib/xroad-catalog/xroad-catalog-lister.jar --spring.config.location=/etc/xroad/xroad-catalog/ --spring.config.name=lister,catalogdb -``` - -### 2.6.1 Default profile - -The default profile(a profile used for default operation of X-Road Catalog, without any country-specific features) -The default profile can be set with ```spring.profiles.active=default``` - -### 2.6.2 FI profile - -The FI profile(an extra profile used in addition to the default profile, which has country specific features) -The FI profile can be set with ```spring.profiles.active=fi``` - -## 3. X-Road Catalog - -### 3.1 X-Road Catalog Collector - -The purpose of this piece of software is to collect members, subsystems and services from the X-Road instance and store them to the PostgreSQL database. - -[xroad-catalog-collector](xroad-catalog-collector/README.md) - -### 3.2 X-Road Catalog Lister - -The purpose of this piece of software is to provide a webservice which lists all the X-Road members and the services they provide together with service descriptions - -[xroad-catalog-lister](xroad-catalog-lister/README.md) - -### 3.2.1 SOAP endpoints - -The main endpoints this software provides with the [default profile](#261-default-profile): -* ListMembers - a SOAP endpoint to list all the members the Catalog Collector has stored to the db -* GetWsdl - a SOAP endpoint to retrieve a WSDL description for a given service -* GetOpenAPI - a SOAP endpoint to retrieve an OpenAPI description for a given service -* GetServiceType - a SOAP endpoint for requesting whether a given service is of type SOAP, REST or OPENAPI -* IsProvider - a SOAP endpoint for requesting whether a given member is a provider -* GetErrors - a SOAP endpoint for requesting a list of errors related to fetching data from different apis and security servers - -In addition, some more SOAP endpoints are provided when the [FI profile](#262-fi-profile) is active: -* GetOrganizations - a SOAP endpoint for requesting public organization details -* HasOrganizationChanged - a SOAP endpoint for requesting whether given public organization has some of its details changed -* GetCompanies - a SOAP endpoint for requesting private company details -* HasCompanyChanged - a SOAP endpoint for requesting whether given private company has some of its details changed - - -### 3.2.1.1 List all members - -In order to list all members and related subsystems and services, a request in XML format has to be sent to the respective SOAP endpoint: - -``` $ curl -k -d @servicerequest.xml --header "Content-Type: text/xml" -X POST http://:8080/ws/ListMembers ``` - -* SERVER_ADDRESS please use the server address, on which the X-Road Catalog Lister is running on, e.g. localhost - -Contents of the example ```servicerequest.xml``` file: -```xml - - - 4.x - ID11234 - EE1234567890 - - FI - GOV - 1710128-9 - - - FI - GOV - 1710128-9 - SS1 - ListMembers - v1 - - - - - 2020-01-01 - 2022-01-01 - - - -``` - -Contents of the XML response of the request -```xml - - - - 4.x - ID11234 - EE1234567890 - - FI - GOV - 1710128-9 - - - FI - GOV - 1710128-9 - SS1 - ListMembers - v1 - - - - - - - DEV - GOV - 1234 - ACME - - - MANAGEMENT - - - clientReg - - 1584692751893_da8be621-5d6b-4920-91c9-d8c359dddbad - 2020-03-20T10:25:51.892+02:00 - 2020-03-20T10:25:51.892+02:00 - 2020-03-20T12:31:09.188+02:00 - - 2020-03-20T10:25:51.632+02:00 - 2020-03-20T10:25:51.632+02:00 - 2020-03-20T12:31:07.223+02:00 - - - respa.tampere.fi - 2020-03-20T10:25:51.632+02:00 - 2020-03-20T10:25:51.632+02:00 - 2020-03-20T12:31:07.223+02:00 - - - authCertDeletion - - 1584692751942_ab002cbd-bbbd-43c7-a311-b0dc5adf3af1 - 2020-03-20T10:25:51.936+02:00 - 2020-03-20T10:25:51.936+02:00 - 2020-03-20T12:31:09.009+02:00 - - 2020-03-20T10:25:51.632+02:00 - 2020-03-20T10:25:51.632+02:00 - 2020-03-20T12:31:07.223+02:00 - - - clientDeletion - - 1584692751908_5bdde30d-3a5f-42c0-9f45-d884f5810996 - 2020-03-20T10:25:51.906+02:00 - 2020-03-20T10:25:51.906+02:00 - 2020-03-20T12:31:07.383+02:00 - - 2020-03-20T10:25:51.632+02:00 - 2020-03-20T10:25:51.632+02:00 - 2020-03-20T12:31:07.223+02:00 - - - ownerChange - - 1584692751888_07141c5a-bfe0-4c84-b621-e5e4a9db01fa - 2020-03-20T10:25:51.884+02:00 - 2020-03-20T10:25:51.884+02:00 - 2020-03-20T12:31:07.479+02:00 - - 2020-03-20T10:25:51.632+02:00 - 2020-03-20T10:25:51.632+02:00 - 2020-03-20T12:31:07.223+02:00 - - - PetStoreNew - 2020-03-20T10:25:51.632+02:00 - 2020-03-20T10:25:51.632+02:00 - 2020-03-20T12:31:07.223+02:00 - - - 2020-03-20T10:25:51.055+02:00 - 2020-03-20T10:25:51.055+02:00 - 2020-03-20T12:31:01.394+02:00 - - - TEST - - 2020-03-20T10:25:51.055+02:00 - 2020-03-20T10:25:51.055+02:00 - 2020-03-20T12:31:01.394+02:00 - - - 2020-03-20T10:25:51.055+02:00 - 2020-03-20T10:25:51.055+02:00 - 2020-03-20T12:31:01.394+02:00 - - - - - -``` - -The XML response has a `````` element with the following structure: - -* ListMembersResponse - * memberList - * member - * subsystems - * subsystem - * subsystemCode - * services - * service - * serviceCode - * wsdl (if the given service description is a WSDL description) - * externalId - -In addition, each subsystem, service and wsdl contains also fields ```created```, ```changed```, ```fetched``` and ```removed```, -reflecting the creation, change, fetch and removal (when a subsystem/service/wsdl was fetched by X-Road Catalog Collector to the DB) dates - -### 3.2.1.2 Retrieve WSDL descriptions - -In order to retrieve a WSDL service description, a request in XML format has to be sent to the respective SOAP endpoint: - -``` $ curl -k -d @wsdlrequest.xml --header "Content-Type: text/xml" -X POST http://:8080/ws/GetWsdl ``` - -* SERVER_ADDRESS please use the server address, on which the X-Road Catalog Lister is running on, e.g. localhost - -Contents of the example ```wsdlrequest.xml``` file: -```xml - - - 4.x - ID11234 - EE1234567890 - - FI - GOV - 1710128-9 - - - FI - GOV - 1710128-9 - SS1 - ListMembers - v1 - - - - - 1584692751908_5bdde30d-3a5f-42c0-9f45-d884f5810996 - - - -``` - -In the request there is a field ```externalId```, indicating the id of the WSDL to be retrieved - -The response of the given request is in XML format, containing the WSDL service description. -A longer example provided in [xroad-catalog-lister](xroad-catalog-lister/README.md) - -### 3.2.1.3 Retrieve OPENAPI descriptions - -In order to retrieve an OPENAPI service descriptions, a request in XML format has to be sent to the respective SOAP endpoint: - -``` $ curl -k -d @openapirequest.xml --header "Content-Type: text/xml" -X POST http://:8080/ws/GetOpenAPI ``` - -* SERVER_ADDRESS please use the server address, on which the X-Road Catalog Lister is running on, e.g. localhost - -Contents of the example ```openapirequest.xml``` file: -```xml - - - 4.x - ID11234 - EE1234567890 - - FI - GOV - 1710128-9 - - - FI - GOV - 1710128-9 - SS1 - ListMembers - v1 - - - - - 1584692752414_504b3ad4-eca3-4b96-8b21-71209225cfc8 - - - -``` - -In the request there is a field ```externalId```, indicating the id of the OPENAPI to be retrieved - -The response of the given request is in XML format, containing the OPENAPI service description. -A longer example provided in [xroad-catalog-lister](xroad-catalog-lister/README.md) - -### 3.2.1.4 Get service type - -In order to retrieve service type information, a request in XML format has to be sent to the respective SOAP endpoint: - -``` $ curl -k -d @GetServiceTypeRequest.xml --header "Content-Type: text/xml" -X POST http://:8080/ws/GetServiceType ``` - -* SERVER_ADDRESS please use the server address, on which the X-Road Catalog Lister is running on, e.g. localhost - -Contents of the example ```GetServiceTypeRequest.xml``` file: -```xml - - - 4.x - ID11234 - EE1234567890 - - FI - GOV - 1710128-9 - - - FI - GOV - 1710128-9 - SS1 - ListMembers - v1 - - - - - DEV - GOV - 1234 - authCertDeletion - MANAGEMENT - v1 - - - -``` - -In the request there are the following fields that need to be filled: - ```xRoadInstance``` - X-Road Instance name, e.g. DEV - ```memberClass``` - member class, e.g. GOV - ```memberCode``` - member code, e.g. 1234 - ```serviceCode``` - service code, e.g. authCertDeletion - ```subsystemCode``` - subsystem code, e.g. MANAGEMENT - ```serviceVersion``` - service version, e.g. v1 - -The XML response has a `````` element with the following structure: - -* GetServiceTypeResponse - * type (values: REST/OPENAPI3/WSDL) - -A longer example provided in [xroad-catalog-lister](xroad-catalog-lister/README.md) - -### 3.2.1.5 Check if member is provider - -In order to check if a given X-Road member (security server) is a provider, a request in XML format has to be sent to the respective SOAP endpoint: - -``` $ curl -k -d @IsProviderRequest.xml --header "Content-Type: text/xml" -X POST http://:8080/ws/IsProvider ``` - -* SERVER_ADDRESS please use the server address, on which the X-Road Catalog Lister is running on, e.g. localhost - -Contents of the example ```IsProviderRequest.xml``` file: -```xml - - - 4.x - ID11234 - EE1234567890 - - FI - GOV - 1710128-9 - - - FI - GOV - 1710128-9 - SS1 - ListMembers - v1 - - - - - DEV - GOV - 1234 - - - -``` - -In the request there are the following fields that need to be filled: - ```xRoadInstance``` - X-Road Instance name, e.g. DEV - ```memberClass``` - member class, e.g. GOV - ```memberCode``` - member code, e.g. 1234 - -The XML response has a `````` element with the following structure: - -* IsProviderResponse - * provider (values: true/false) - -A longer example provided in [xroad-catalog-lister](xroad-catalog-lister/README.md) - -### 3.2.1.6 List errors - -In order to fetch information about errors in the X-Road Catalog, a request in XML format has to be sent to the respective SOAP endpoint: - -``` $ curl -k -d @GetErrorsRequest.xml --header "Content-Type: text/xml" -X POST http://:8080/ws/GetErrors ``` - -* SERVER_ADDRESS please use the server address, on which the X-Road Catalog Lister is running on, e.g. localhost - -Contents of the example ```GetErrorsRequest.xml``` file: -```xml - - - 4.x - ID11234 - EE1234567890 - - FI - GOV - 1710128-9 - - - FI - GOV - 1710128-9 - SS1 - ListMembers - v1 - - - - - 2020-01-01 - 2022-01-01 - - - -``` -In the request there are the following fields that need to be filled: -```startDateTime``` - date after which to list errors, e.g. 2020-01-01 -```endDateTime``` - date before which to list errors, e.g. 2022-01-01 - -The XML response has a `````` element with the following structure: - -* GetErrorsResponse - * errorLogList - * errorLog - * message - * code - * created - -### 3.2.1.7 List organizations - -Requires ```FI``` profile (check [2.6.2 FI profile](#262-fi-profile)) - -In order to fetch information about organizations, a request in XML format has to be sent to the respective SOAP endpoint: - -``` $ curl -k -d @GetOrganizationsRequest.xml --header "Content-Type: text/xml" -X POST http://:8080/ws/GetOrganizations ``` - -* SERVER_ADDRESS please use the server address, on which the X-Road Catalog Lister is running on, e.g. localhost - -Contents of the example ```GetOrganizationsRequest.xml``` file: -```xml - - - 4.x - ID11234 - EE1234567890 - - FI - GOV - 1710128-9 - - - FI - GOV - 1710128-9 - SS1 - ListMembers - v1 - - - - - 0181367-9 - - - -``` - -In the request there are the following fields that need to be filled: - ```businessCode``` - business code of the searchable organization, e.g. 0181367-9 - -The XML response has a `````` element with the following structure: - -* GetOrganizationsResponse - * organizationList - * organization - * organizationType - * publishingStatus - * businessCode - * guid - * organizationNames - * organizationName - * language - * type - * value - * created - * changed - * fetched - * removed - * organizationDescriptions - * organizationDescription - * language - * type - * value - * created - * changed - * fetched - * removed - * emails - * email - * language - * type - * value - * created - * changed - * fetched - * removed - * phoneNumbers - * phoneNumber - * language - * additionalInformation - * serviceChargeType - * chargeDescription - * prefixNumber - * number - * isFinnishServiceNumber - * created - * changed - * fetched - * removed - * webPages - * webPage - * language - * url - * value - * created - * changed - * fetched - * removed - * addresses - * address - * country - * type - * subType - * streetAddresses - * streetAddress - * postalCode - * latitude - * longitude - * coordinateState - * streets - * street - * language - * value - * created - * changed - * fetched - * removed - * postOffices - * streetAddressPostOffice - * language - * value - * created - * changed - * fetched - * removed - * municipalities - * streetAddressMunicipality - * code - * streetAddressMunicipalityNames - * streetAddressMunicipalityName - * language - * value - * created - * changed - * fetched - * removed - * created - * changed - * fetched - * removed - * additionalInformation - * streetAddressAdditionalInformation - * language - * value - * created - * changed - * fetched - * removed - * created - * changed - * fetched - * removed - * created - * changed - * fetched - * removed - -In addition, most sections also contain fields ```created```, ```changed```, ```fetched``` and ```remoced```, -reflecting the creation, change, fetch and removal (when the respective data was fetched by X-Road Catalog Collector to the DB) dates - -A longer example provided in [xroad-catalog-lister](xroad-catalog-lister/README.md) - -### 3.2.1.8 List organization changes - -Requires ```FI``` profile (check [2.6.2 FI profile](#262-fi-profile)) - -In order to fetch information about changed organization fields, a request in XML format has to be sent to the respective SOAP endpoint: - -``` $ curl -k -d @HasOrganizationChangedRequest.xml --header "Content-Type: text/xml" -X POST http://:8080/ws/HasOrganizationChanged ``` - -* SERVER_ADDRESS please use the server address, on which the X-Road Catalog Lister is running on, e.g. localhost - -Contents of the example ```HasOrganizationChangedRequest.xml``` file: -```xml - - - 4.x - ID11234 - EE1234567890 - - FI - GOV - 1710128-9 - - - FI - GOV - 1710128-9 - SS1 - ListMembers - v1 - - - - - e6b33f11-bb47-496e-98c5-6a736dae6014 - 2020-01-01 - 2022-01-01 - - - -``` - -In the request there are the following fields that need to be filled: - ```guid``` - unique id of the searchable organization, e.g. e6b33f11-bb47-496e-98c5-6a736dae6014 - ```startDateTime``` - date to check against after which an organization may have changed its field values, e.g. 2020-01-01 - ```endDateTime``` - date to check against before which an organization may have changed its field values, e.g. 2022-01-01 - -The XML response has a `````` element with the following structure: - -* HasOrganizationChangedResponse - * changed (values true/false) - * changedValueList - * changedValue - * name (values e.g. OrganizationName, Email, Address etc) - -A longer example provided in [xroad-catalog-lister](xroad-catalog-lister/README.md) - -### 3.2.1.9 List companies - -Requires ```FI``` profile (check [2.6.2 FI profile](#262-fi-profile)) - -In order to fetch information about companies, a request in XML format has to be sent to the respective SOAP endpoint: - -``` $ curl -k -d @GetCompaniesRequest.xml --header "Content-Type: text/xml" -X POST http://:8080/ws/GetCompanies ``` - -* SERVER_ADDRESS please use the server address, on which the X-Road Catalog Lister is running on, e.g. localhost - -Contents of the example ```GetCompaniesRequest.xml``` file: -```xml - - - 4.x - ID11234 - EE1234567890 - - FI - GOV - 1710128-9 - - - FI - GOV - 1710128-9 - SS1 - ListMembers - v1 - - - - - 1710128-9 - - - -``` - -In the request there are the following fields that need to be filled: - ```businessId``` - business code of the searchable organization, e.g. 1710128-9 - -The XML response has a `````` element with the following structure: - -* GetCompaniesResponse - * companyList - * company - * companyForm - * detailsUri - * businessId - * name - * registrationDate - * businessAddresses - * businessAddress - * source - * version - * careOf - * street - * postCode - * city - * language - * type - * country - * registrationDate - * created - * changed - * fetched - * removed - * businessAuxiliaryNames - * businessAuxiliaryName - * source - * ordering - * version - * name - * language - * registrationDate - * created - * changed - * fetched - * removed - * businessIdChanges - * businessIdChange - * source - * description - * reason - * changeDate - * change - * oldBusinessId - * newBusinessId - * language - * created - * changed - * fetched - * removed - * businessLines - * businessLine - * source - * ordering - * version - * name - * language - * registrationDate - * created - * changed - * fetched - * removed - * businessNames - * businessName - * companyId - * source - * ordering - * version - * name - * language - * registrationDate - * endDate - * created - * changed - * fetched - * removed - * companyForms - * companyForm - * source - * version - * name - * language - * type - * registrationDate - * created - * changed - * fetched - * removed - * contactDetails - * contactDetail - * source - * version - * language - * value - * type - * registrationDate - * created - * changed - * fetched - * languages - * language - * source - * version - * name - * language - * registrationDate - * created - * changed - * fetched - * liquidations - * liquidation - * companyId - * source - * version - * name - * language - * registrationDate - * endDate - * created - * changed - * fetched - * removed - * registeredEntries - * registeredEntry - * companyId - * description - * status - * register - * language - * authority - * registrationDate - * endDate - * created - * changed - * fetched - * removed - * registeredOffices - * registeredOffice - * companyId - * source - * ordering - * version - * name - * language - * registrationDate - * endDate - * created - * changed - * fetched - * removed - -A longer example provided in [xroad-catalog-lister](xroad-catalog-lister/README.md) - -### 3.2.1.10 List company changes - -Requires ```FI``` profile (check [2.6.2 FI profile](#262-fi-profile)) - -In order to fetch information about changed company fields, a request in XML format has to be sent to the respective SOAP endpoint: - -``` $ curl -k -d @HasCompanyChangedRequest.xml --header "Content-Type: text/xml" -X POST http://:8080/ws/HasCompanyChanged ``` - -* SERVER_ADDRESS please use the server address, on which the X-Road Catalog Lister is running on, e.g. localhost - -Contents of the example ```HasCompanyChangedRequest.xml``` file: -```xml - - - 4.x - ID11234 - EE1234567890 - - FI - GOV - 1710128-9 - - - FI - GOV - 1710128-9 - SS1 - ListMembers - v1 - - - - - 1710128-9 - 2020-01-01 - 2022-01-01 - - - -``` - -In the request there are the following fields that need to be filled: - ```businessId``` - business id of the searchable company, e.g. 1710128-9 - ```startDateTime``` - date to check against after which a company may have changed its field values, e.g. 2020-01-01 - ```endDateTime``` - date to check against before which a company may have changed its field values, e.g. 2022-01-01 - -The XML response has a `````` element with the following structure: - -* HasCompanyChangedResponse - * changed (values true/false) - * changedValueList - * changedValue - * name (values e.g. Company, ContactDetail etc) - -A longer example provided in [xroad-catalog-lister](xroad-catalog-lister/README.md) - - -### 3.2.2 REST endpoints - -The main endpoints this software provides with the [default profile](#261-default-profile): -* getServiceStatistics - a REST endpoint for requesting a list of statistics, consisting of numbers of SOAP/REST services over time -* getServiceStatisticsCSV - a REST endpoint for requesting a list of statistics in CSV format, consisting of numbers of SOAP/REST services over time -* getListOfServices - a REST endpoint for requesting a list of members and related subsystems, services and security servers over time -* getListOfServicesCSV - a REST endpoint for requesting a list of members and related subsystems, services and security servers in CSV format -* getDistinctServiceStatistics - a REST endpoint for requesting a list of statistics, consisting of numbers of distinct services over time -* listErrors - a REST endpoint for listing errors for a given member or subsystem, supports pagination -* heartbeat - a REST endpoint for requesting the heartbeat of X-Road Catalog -* listSecurityServers - a REST endpoint for listing security servers and related information -* listDescriptors - a REST endpoint for listing subsystems -* getRest - a REST endpoint for displaying a list of endpoints for a REST type of service -* getEndpoints - a REST endpoint for displaying a list of endpoints for a REST or OPENAPI3 type of service - -In addition, some more REST endpoints are provided when the [FI profile](#262-fi-profile) is active: -* getOrganization - a REST endpoint for listing organization/company data -* getOrganizationChanges - a REST endpoint for requesting whether given organization/company has some of its details changed -* organizationHeartbeat - a REST endpoint for requesting the heartbeat of organization and companies of X-Road Catalog - - -### 3.2.2.1 List service statistics - -In order to fetch information about service statistics in the X-Road Catalog, an HTTP request has to be sent to a respective REST endpoint: - -``` $ curl "http://:8080/api/getServiceStatistics?startDate=&endDate=" -H "Content-Type: application/json" ``` - -* SERVER_ADDRESS please use the server address, on which the X-Road Catalog Lister is running on, e.g. localhost -* START_DATE - an optional parameter(a string in format YYYY-MM-DD), if not used, today's date will be assumed -* END_DATE - an optional parameter(a string in format YYYY-MM-DD), if not used, today's date will be assumed - -Response in JSON: -```json -{ - "serviceStatisticsList":[ - { - "created":[ - 2022, - 7, - 1, - 0, - 0 - ], - "numberOfSoapServices":0, - "numberOfRestServices":0, - "numberOfOpenApiServices":0 - }, - { - "created":[ - 2022, - 7, - 2, - 0, - 0 - ], - "numberOfSoapServices":0, - "numberOfRestServices":0, - "numberOfOpenApiServices":0 - } - ] -} -``` - -The response has the following fields: - -* serviceStatisticsList - * created - * numberOfSoapServices - * numberOfRestServices - * numberOfOpenApiServices - -### 3.2.2.2 List service statistics in CSV format - -In order to fetch information about service statistics in the X-Road Catalog, an HTTP request has to be sent to a respective REST endpoint: - -``` $ curl "http://:8080/api/getServiceStatisticsCSV?startDate=&endDate=" -H "Content-Type: text/csv" --output service_statistics.csv ``` - -* SERVER_ADDRESS please use the server address, on which the X-Road Catalog Lister is running on, e.g. localhost -* START_DATE - an optional parameter(a string in format YYYY-MM-DD), if not used, today's date will be assumed -* END_DATE - an optional parameter(a string in format YYYY-MM-DD), if not used, today's date will be assumed - -Response is a file ```service_statistics.csv``` with the following content: -```csv -Date,Number of REST services,Number of SOAP services,Number of OpenApi services -2022-07-01T00:00,0,0,0,0 -2022-07-02T00:00,0,0,0,0 -``` - -### 3.2.2.3 List services - -In order to fetch information about services in the X-Road Catalog, an HTTP request has to be sent to a respective REST endpoint: - -``` $ curl "http://:8080/api/getListOfServices?startDate=&endDate=" -H "Content-Type: application/json ``` - -* SERVER_ADDRESS please use the server address, on which the X-Road Catalog Lister is running on, e.g. localhost -* START_DATE - an optional parameter(a string in format YYYY-MM-DD), if not used, today's date will be assumed -* END_DATE - an optional parameter(a string in format YYYY-MM-DD), if not used, today's date will be assumed - -Response in JSON: - -```json -{ - "memberData":[ - { - "date":[ - 2021, - 8, - 24, - 0, - 0 - ], - "memberDataList":[ - { - "created":[ - 2021, - 8, - 24, - 16, - 20, - 26, - 830000000 - ], - "memberClass":"COM", - "memberCode":"222", - "name":"ACME", - "provider":false, - "subsystemList":[ - { - "created":[ - 2022, - 2, - 3, - 14, - 10, - 25, - 712000000 - ], - "subsystemCode":"FRUIT", - "active":true, - "serviceList":[ - - ] - } - ], - "xroadInstance":"DEV" - }, - { - "created":[ - 2021, - 8, - 24, - 16, - 20, - 26, - 830000000 - ], - "memberClass":"COM", - "memberCode":"12345", - "name":"Company", - "provider":false, - "subsystemList":[ - - ], - "xroadInstance":"DEV" - } - ] - }, - { - "date":[ - 2021, - 8, - 25, - 0, - 0 - ], - "memberDataList":[ - { - "created":[ - 2021, - 8, - 24, - 16, - 20, - 26, - 830000000 - ], - "memberClass":"COM", - "memberCode":"222", - "name":"ACME", - "provider":false, - "subsystemList":[ - { - "created":[ - 2022, - 2, - 3, - 14, - 10, - 25, - 712000000 - ], - "subsystemCode":"FRUIT", - "active":true, - "serviceList":[ - - ] - } - ], - "xroadInstance":"DEV" - }, - { - "created":[ - 2021, - 8, - 24, - 16, - 20, - 26, - 830000000 - ], - "memberClass":"COM", - "memberCode":"12345", - "name":"Company", - "provider":false, - "subsystemList":[ - - ], - "xroadInstance":"DEV" - } - ] - } - ], - "securityServerData":[ - { - "serverCode":"SS1", - "address":"SS1", - "memberClass":"GOV", - "memberCode":"1234", - "xroadInstance":"DEV" - }, - { - "serverCode":"ss4", - "address":"ss4", - "memberClass":"GOV", - "memberCode":"1234", - "xroadInstance":"DEV" - } - ] -} -``` - -The response has the following fields: - -* memberData - * date - * memberDataList - * created - * memberClass - * memberCode - * name - * subsystemList - * created - * subsystemCode - * active (values: true/false) - * serviceList - * created - * serviceCode - * serviceVersion - * active (values: true/false) - * xroadInstance -* securityServerData - * serverCode - * address - * memberClass - * memberCode - -### 3.2.2.4 List services in CSV format - -In order to fetch information about services in the X-Road Catalog, an HTTP request has to be sent to a respective REST endpoint: - -``` $ curl "http://:8080/api/getListOfServicesCSV?startDate=&endDate=" -H "Content-Type: text/csv" --output list_of_services.csv ``` - -* SERVER_ADDRESS please use the server address, on which the X-Road Catalog Lister is running on, e.g. localhost -* START_DATE - an optional parameter(a string in format YYYY-MM-DD), if not used, today's date will be assumed -* END_DATE - an optional parameter(a string in format YYYY-MM-DD), if not used, today's date will be assumed - -Response is a file ```list_of_services.csv``` with the following content: - -```list_of_services.csv file with content: -Date,XRoad instance,Member class,Member code,Member name,Member created,Subsystem code,Subsystem created,Subsystem active,Service code,Service version,Service created,Service active -2021-08-24T00:00,,,,,,,,,,,, -"",DEV,COM,222,ACME,2021-08-24T16:20:26.830,FRUIT,2022-02-03T14:10:25.712,true,,,, -"",DEV,COM,12345,Company,2021-08-24T16:20:26.830,,,,,,, -2021-08-25T00:00,,,,,,,,,,,, -"",DEV,COM,222,ACME,2021-08-24T16:20:26.830,FRUIT,2022-02-03T14:10:25.712,true,,,, -"",DEV,COM,12345,Company,2021-08-24T16:20:26.830,,,,,,, -"",Security server (SS) info:,,,,,,,,,,, -instance,member class,member code,server code,address,,,,,,,, -DEV,GOV,1234,SS1,SS1,,,,,,,, -DEV,GOV,1234,ss4,ss4,,,,,,,, -``` - -### 3.2.2.5 Check heartbeat - -In order to fetch X-Road Catalog heartbeat information, an HTTP request has to be sent to a respective REST endpoint: - -``` $ curl "http://:8080/api/heartbeat" -H "Content-Type: application/json" ``` - -* SERVER_ADDRESS please use the server address, on which the X-Road Catalog Lister is running on, e.g. localhost - -Response in JSON: -```json -{"appWorking":true, - "dbWorking":true, - "appName":"X-Road Catalog Lister", - "appVersion":"1.2.1", - "systemTime":[2021,9,20,10,12,15,132000000], - "lastCollectionData": - {"membersLastFetched":[2021,9,20,10,8,51,380000000], - "subsystemsLastFetched":[2021,9,20,10,8,51,380000000], - "servicesLastFetched":[2021,9,1,15,32,51,123000000], - "wsdlsLastFetched":[2021,9,1,15,32,53,87000000], - "openapisLastFetched":[2020,11,22,22,12,32,202000000] - } -} -``` - -The response has the following fields: - -* appWorking -* dbWorking -* appName -* appVersion -* systemTime -* lastCollectionData - * membersLastFetched - * subsystemsLastFetched - * servicesLastFetched - * wsdlsLastFetched - * openapisLastFetched - -### 3.2.2.6 List distinct service statistics - -In order to fetch information about distinct service statistics in the X-Road Catalog, an HTTP request has to be sent to a respective REST endpoint: - -``` $ curl "http://:8080/api/getDistinctServiceStatistics?startDate=&endDate=" -H "Content-Type: application/json" ``` - -* SERVER_ADDRESS please use the server address, on which the X-Road Catalog Lister is running on, e.g. localhost -* START_DATE - an optional parameter(a string in format YYYY-MM-DD), if not used, today's date will be assumed -* END_DATE - an optional parameter(a string in format YYYY-MM-DD), if not used, today's date will be assumed - -Response in JSON: -```json -{ - "distinctServiceStatisticsList":[ - { - "created":[ - 2020, - 11, - 20, - 0, - 0 - ], - "numberOfDistinctServices":3 - }, - { - "created":[ - 2020, - 11, - 21, - 0, - 0 - ], - "numberOfDistinctServices":3 - }, - { - "created":[ - 2020, - 11, - 22, - 0, - 0 - ], - "numberOfDistinctServices":3 - }, - { - "created":[ - 2020, - 11, - 23, - 0, - 0 - ], - "numberOfDistinctServices":3 - }, - { - "created":[ - 2020, - 11, - 24, - 0, - 0 - ], - "numberOfDistinctServices":3 - }, - { - "created":[ - 2020, - 11, - 25, - 0, - 0 - ], - "numberOfDistinctServices":3 - }, - { - "created":[ - 2020, - 11, - 26, - 0, - 0 - ], - "numberOfDistinctServices":3 - }, - { - "created":[ - 2020, - 11, - 27, - 0, - 0 - ], - "numberOfDistinctServices":3 - }, - { - "created":[ - 2020, - 11, - 28, - 0, - 0 - ], - "numberOfDistinctServices":3 - }, - { - "created":[ - 2020, - 11, - 29, - 0, - 0 - ], - "numberOfDistinctServices":3 - }, - { - "created":[ - 2020, - 11, - 30, - 0, - 0 - ], - "numberOfDistinctServices":3 - } - ] -} -``` - -The response has the following fields: - -* serviceStatisticsList - * created - * numberOfDistinctServices - -### 3.2.2.7 List errors - -Requests - -List errors for a given subsystem: -``` $ curl "http://:8080/api/listErrors////?startDate=&endDate=" -H "Content-Type: application/json" ``` - -List errors for a given member: -``` $ curl "http://:8080/api/listErrors///?startDate=&endDate=" -H "Content-Type: application/json" ``` - -List errors for a given member class: -``` $ curl "http://:8080/api/listErrors//?startDate=&endDate=" -H "Content-Type: application/json" ``` - -List errors for a given instance: -``` $ curl "http://:8080/api/listErrors/?startDate=&endDate=" -H "Content-Type: application/json" ``` - -List errors for all the instances and members: -``` $ curl "http://:8080/api/listErrors?startDate=&endDate=" -H "Content-Type: application/json" ``` - -List errors for a given subsystem with pagination: -``` $ curl "http://:8080/api/listErrors////?startDate=&endDate=&page=&limit=" -H "Content-Type: application/json" ``` - -List errors for a given member with pagination: -``` $ curl "http://:8080/api/listErrors///?startDate=&endDate=&page=&limit=" -H "Content-Type: application/json" ``` - -List errors for a given member class with pagination: -``` $ curl "http://:8080/api/listErrors//?startDate=&endDate=&page=&limit=" -H "Content-Type: application/json" ``` - -List errors for a given instance with pagination: -``` $ curl "http://:8080/api/listErrors/?startDate=&endDate=&page=&limit=" -H "Content-Type: application/json" ``` - -List errors for all the instances and members with pagination: -``` $ curl "http://:8080/api/listErrors?startDate=&endDate=&page=&limit=" -H "Content-Type: application/json" ``` - -Example request -``` $ curl "http://localhost:8900/api/listErrors/DEV/GOV/1234?startDate=2021-08-24&endDate=2021-08-25&page=0&limit=10" -H "Content-Type: application/json" ``` - - -* SERVER_ADDRESS please use the server address, on which the X-Road Catalog Lister is running on, e.g. localhost -* INSTANCE name of X-Road instance, e.g. DEV -* MEMBER_CLASS member class, e.g. GOV -* MEMBER_CODE member code, e.g. 1234 -* SUBSYSTEM_CODE subsystem code, e.g. TEST -* START_DATE - an optional parameter(a string in format YYYY-MM-DD), if not used, today's date will be assumed -* END_DATE - an optional parameter(a string in format YYYY-MM-DD), if not used, today's date will be assumed -* PAGE_NUMBER the number of page of the fetched results -* NO_OF_ERRORS_PER_PAGE number of errors per fetched page - -Response in JSON: -```json -{ - "pageNumber":0, - "pageSize":10, - "numberOfPages":2, - "errorLogList":[ - { - "id":38, - "message":"Fetch of REST services failed(url: http://ss3/r1/DEV/GOV/1234/TEST/listMethods): 500 Server Error", - "code":"500", - "created":[ - 2021, - 8, - 24, - 16, - 21, - 13, - 114000000 - ], - "memberClass":"GOV", - "memberCode":"1234", - "subsystemCode":"TEST", - "groupCode":"", - "serviceCode":"", - "serviceVersion":null, - "securityCategoryCode":"", - "serverCode":"", - "xroadInstance":"DEV" - }, - { - "id":39, - "message":"Fetch of REST services failed(url: http://ss3/r1/DEV/GOV/1234/TESTCLIENT/listMethods): 500 Server Error", - "code":"500", - "created":[ - 2021, - 8, - 24, - 16, - 21, - 13, - 114000000 - ], - "memberClass":"GOV", - "memberCode":"1234", - "subsystemCode":"TESTCLIENT", - "groupCode":"", - "serviceCode":"", - "serviceVersion":null, - "securityCategoryCode":"", - "serverCode":"", - "xroadInstance":"DEV" - }, - { - "id":40, - "message":"Fetch of REST services failed(url: http://ss3/r1/DEV/GOV/1234/MASTER/listMethods): 500 Server Error", - "code":"500", - "created":[ - 2021, - 8, - 24, - 16, - 21, - 13, - 114000000 - ], - "memberClass":"GOV", - "memberCode":"1234", - "subsystemCode":"MASTER", - "groupCode":"", - "serviceCode":"", - "serviceVersion":null, - "securityCategoryCode":"", - "serverCode":"", - "xroadInstance":"DEV" - }, - { - "id":41, - "message":"Fetch of REST services failed(url: http://ss3/r1/DEV/GOV/1234/MANAGEMENT/listMethods): 500 Server Error", - "code":"500", - "created":[ - 2021, - 8, - 24, - 16, - 31, - 39, - 548000000 - ], - "memberClass":"GOV", - "memberCode":"1234", - "subsystemCode":"MANAGEMENT", - "groupCode":"", - "serviceCode":"", - "serviceVersion":null, - "securityCategoryCode":"", - "serverCode":"", - "xroadInstance":"DEV" - }, - { - "id":42, - "message":"Fetch of REST services failed(url: http://ss3/r1/DEV/GOV/1234/TESTCLIENT/listMethods): 500 Server Error", - "code":"500", - "created":[ - 2021, - 8, - 24, - 16, - 31, - 39, - 551000000 - ], - "memberClass":"GOV", - "memberCode":"1234", - "subsystemCode":"TESTCLIENT", - "groupCode":"", - "serviceCode":"", - "serviceVersion":null, - "securityCategoryCode":"", - "serverCode":"", - "xroadInstance":"DEV" - }, - { - "id":43, - "message":"Fetch of REST services failed(url: http://ss3/r1/DEV/GOV/1234/MANAGEMENT/listMethods): 500 Server Error", - "code":"500", - "created":[ - 2021, - 8, - 24, - 16, - 34, - 46, - 378000000 - ], - "memberClass":"GOV", - "memberCode":"1234", - "subsystemCode":"MANAGEMENT", - "groupCode":"", - "serviceCode":"", - "serviceVersion":null, - "securityCategoryCode":"", - "serverCode":"", - "xroadInstance":"DEV" - }, - { - "id":44, - "message":"Fetch of REST services failed(url: http://ss3/r1/DEV/GOV/1234/TESTCLIENT/listMethods): 500 Server Error", - "code":"500", - "created":[ - 2021, - 8, - 24, - 16, - 34, - 46, - 384000000 - ], - "memberClass":"GOV", - "memberCode":"1234", - "subsystemCode":"TESTCLIENT", - "groupCode":"", - "serviceCode":"", - "serviceVersion":null, - "securityCategoryCode":"", - "serverCode":"", - "xroadInstance":"DEV" - }, - { - "id":45, - "message":"Fetch of REST services failed(url: http://ss3/r1/DEV/GOV/1234/TESTCLIENT/listMethods): 500 Server Error", - "code":"500", - "created":[ - 2021, - 8, - 24, - 16, - 36, - 25, - 490000000 - ], - "memberClass":"GOV", - "memberCode":"1234", - "subsystemCode":"TESTCLIENT", - "groupCode":"", - "serviceCode":"", - "serviceVersion":null, - "securityCategoryCode":"", - "serverCode":"", - "xroadInstance":"DEV" - }, - { - "id":46, - "message":"Fetch of REST services failed(url: http://ss3/r1/DEV/GOV/1234/TESTCLIENT/listMethods): 500 Server Error", - "code":"500", - "created":[ - 2021, - 8, - 24, - 16, - 39, - 30, - 845000000 - ], - "memberClass":"GOV", - "memberCode":"1234", - "subsystemCode":"TESTCLIENT", - "groupCode":"", - "serviceCode":"", - "serviceVersion":null, - "securityCategoryCode":"", - "serverCode":"", - "xroadInstance":"DEV" - }, - { - "id":47, - "message":"Fetch of REST services failed(url: http://ss1/r1/DEV/GOV/1234/TESTCLIENT/listMethods): 500 Server Error", - "code":"500", - "created":[ - 2021, - 8, - 24, - 16, - 41, - 34, - 622000000 - ], - "memberClass":"GOV", - "memberCode":"1234", - "subsystemCode":"TESTCLIENT", - "groupCode":"", - "serviceCode":"", - "serviceVersion":null, - "securityCategoryCode":"", - "serverCode":"", - "xroadInstance":"DEV" - } - ] -} -``` - -The response has the following fields: - -* pageNumber -* pageSize -* numberOfPages -* errorLogList - * id - * message - * code - * created - * memberClass - * memberCode - * subsystemCode - * groupCode - * serviceCode - * serviceVersion - * securityCategoryCode - * serverCode - * xroadInstance - -### 3.2.2.8 List security servers - -Request - -``` $ curl "http://:8080/api/listSecurityServers" -H "Content-Type: application/json" ``` - -* SERVER_ADDRESS please use the server address, on which the X-Road Catalog Lister is running on, e.g. localhost - -Response -```json -{ - "securityServerDataList": [ - { - "owner": { - "memberClass": "GOV", - "memberCode": "1234", - "name": "ACME", - "subsystemCode": null - }, - "serverCode": "SS1", - "address": "SS1", - "clients": [ - { - "memberClass": "GOV", - "memberCode": "1234", - "name": "ACME", - "subsystemCode": "MANAGEMENT" - } - ] - }, - { - "owner": { - "memberClass": "GOV", - "memberCode": "1234", - "name": "ACME", - "subsystemCode": null - }, - "serverCode": "ss4", - "address": "ss4", - "clients": [ - { - "memberClass": "GOV", - "memberCode": "1234", - "name": "ACME", - "subsystemCode": "THESUBSYSTEM" - }, - { - "memberClass": "COM", - "memberCode": "222", - "name": "FRUIT", - "subsystemCode": null - } - ] - } - ] -} -``` - -The response has the following fields: - -* securityServerDataList - * owner - * memberClass - * memberCode - * name - * subsystemCode - * serverCode - * address - * clients - * memberClass - * memberCode - * name - * subsystemCode - -**owner** indicates the owner of the security server - -**clients** provides a list of clients using the security server, where a client can be considered a member when their subsystemCode is null - - -### 3.2.2.9 List descriptors - -Request - -``` $ curl "http://:8080/api/listDescriptors" -H "Content-Type: application/json" ``` - -* SERVER_ADDRESS please use the server address, on which the X-Road Catalog Lister is running on, e.g. localhost - -Response - -```json -[ - { - "x_road_instance":"DEV", - "subsystem_name":{ - "et":"Subsystem Name ET", - "en":"Subsystem Name EN" - }, - "email":[ - { - "name":"Firstname Lastname", - "email":"yourname@yourdomain" - } - ], - "member_class":"GOV", - "member_code":"1234", - "member_name":"ACME", - "subsystem_code":"MANAGEMENT" - }, - { - "x_road_instance":"DEV", - "subsystem_name":{ - "et":"Subsystem Name ET", - "en":"Subsystem Name EN" - }, - "email":[ - { - "name":"Firstname Lastname", - "email":"yourname@yourdomain" - } - ], - "member_class":"GOV", - "member_code":"1234", - "member_name":"ACME", - "subsystem_code":"TEST" - } -] -``` - - -The response has the following fields: - -A list of: -* x_road_instance -* member_class -* member_code -* member_name -* subsystem_code -* subsystem_name -* et -* en -* A list of emails with: -* name -* email address - -**subsystem_name** indicates a user-friendly name of the subsystem, in addition to not so friendly subsystem_code, -in the current implementation contains default values, because X-Road currently does not provide such information, but -the fields are still required for the X-Road Metrics to operate correctly - -**email** A list consisting of name of a contact person and their e-mail address, -in the current implementation contains default values, because X-Road currently does not provide such information, but -the fields are still required for the X-Road Metrics to operate correctly - -### 3.2.2.10 Get endpoints - -Request - -``` $ curl "http://:8080/api/getEndpoints/////" -H "Content-Type: application/json" ``` - - -* SERVER_ADDRESS please use the server address, on which the X-Road Catalog Lister is running on, e.g. localhost -* INSTANCE name of X-Road instance, e.g. DEV -* MEMBER_CLASS member class, e.g. GOV -* MEMBER_CODE member code, e.g. 1234 -* SUBSYSTEM_CODE subsystem code, e.g. TEST -* SERVICE_CODE service code, e.g. CATALOG_HEARTBEAT - -Example request -``` $ curl "http://localhost:8080/api/getEndpoints/DEV/GOV/1234/TEST/CATALOG_HEARTBEAT" -H "Content-Type: application/json" ``` - -Response - -```json -{ - "listOfServices":[ - { - "memberClass":"GOV", - "memberCode":"1234", - "subsystemCode":"TEST", - "serviceCode":"CATALOG_HEARTBEAT", - "serviceVersion":null, - "endpointList":[ - { - "method":"GET", - "path":"/heartbeat" - } - ], - "xroadInstance":"DEV" - } - ] -} -``` - - -The response has the following fields: - -* xroadInstance -* memberClass -* memberCode -* subsystemCode -* serviceCode -* serviceVersion -* endpointList - * method - * path - -### 3.2.2.11 Get Rest - -Request - -``` $ curl "http://:8080/api/getRest/////" -H "Content-Type: application/json" ``` - - -* SERVER_ADDRESS please use the server address, on which the X-Road Catalog Lister is running on, e.g. localhost -* INSTANCE name of X-Road instance, e.g. DEV -* MEMBER_CLASS member class, e.g. GOV -* MEMBER_CODE member code, e.g. 1234 -* SUBSYSTEM_CODE subsystem code, e.g. TEST -* SERVICE_CODE service code, e.g. CATALOG_HEARTBEAT - -Example request -``` $ curl "http://localhost:8080/api/getRest/DEV/GOV/1234/TEST/CATALOG_HEARTBEAT" -H "Content-Type: application/json" ``` - -Response - -```json -{ - "listOfServices":[ - { - "memberClass":"GOV", - "memberCode":"1234", - "subsystemCode":"TEST", - "serviceCode":"CATALOG_HEARTBEAT", - "serviceVersion":null, - "endpointList":[ - { - "method":"GET", - "path":"/heartbeat" - } - ], - "xroadInstance":"DEV" - } - ] -} -``` - - -The response has the following fields: - -* xroadInstance -* memberClass -* memberCode -* subsystemCode -* serviceCode -* serviceVersion -* endpointList - * method - * path - -### 3.2.2.12 Get Organization - -Requires ```FI``` profile (check [2.6.2 FI profile](#262-fi-profile)) - -Request -``` $ curl "http://:8080/api/getOrganization/" -H "Content-Type: application/json" ``` - -* SERVER_ADDRESS please use the server address, on which the X-Road Catalog Lister is running on, e.g. localhost -* BUSINESS_CODE businessCode of the organization - -Example request -``` $ curl "http://localhost:8080/api/getOrganization/0130729-0" -H "Content-Type: application/json" ``` - -Response - -```json -{ - "organizationData": { - "businessCode": "0130729-0", - "created": [2021,8,24,16,21,53,649000000], - "changed": [2021,8,24,16,21,53,649000000], - "fetched": [2022,2,3,13,19,34,411000000], - "removed": null, - "organizationType": "Municipality", - "publishingStatus": "Published", - "guid": "37962bfb-07a1-4f07-bad8-2b5c77e85451", - "organizationNames": [ - { - "language": "fi", - "type": "Name", - "value": "Pukkilan kunta", - "created": [2021,8,24,16,21,53,651000000], - "changed": [2021,8,24,16,21,53,651000000], - "fetched": [2022,2,3,13,19,34,414000000], - "removed": null - } - ] - }, - "companyData": null -} -``` - - -The response has the following fields: - -* organizationData - * organizationType - * publishingStatus - * businessCode - * guid - * organizationNames - * organizationName - * language - * type - * value - * created - * changed - * fetched - * removed - * organizationDescriptions - * organizationDescription - * language - * type - * value - * created - * changed - * fetched - * removed - * emails - * email - * language - * type - * value - * created - * changed - * fetched - * removed - * phoneNumbers - * phoneNumber - * language - * additionalInformation - * serviceChargeType - * chargeDescription - * prefixNumber - * number - * isFinnishServiceNumber - * created - * changed - * fetched - * removed - * webPages - * webPage - * language - * url - * value - * created - * changed - * fetched - * removed - * addresses - * address - * country - * type - * subType - * streetAddresses - * streetAddress - * postalCode - * latitude - * longitude - * coordinateState - * streets - * street - * language - * value - * created - * changed - * fetched - * removed - * postOffices - * streetAddressPostOffice - * language - * value - * created - * changed - * fetched - * removed - * municipalities - * streetAddressMunicipality - * code - * streetAddressMunicipalityNames - * streetAddressMunicipalityName - * language - * value - * created - * changed - * fetched - * removed - * created - * changed - * fetched - * removed - * additionalInformation - * streetAddressAdditionalInformation - * language - * value - * created - * changed - * fetched - * removed - * created - * changed - * fetched - * removed - * created - * changed - * fetched - * removed -* companyData - * companyForm - * detailsUri - * businessCode - * name - * registrationDate - * businessAddresses - * businessAddress - * source - * version - * careOf - * street - * postCode - * city - * language - * type - * country - * registrationDate - * created - * changed - * fetched - * removed - * businessAuxiliaryNames - * businessAuxiliaryName - * source - * ordering - * version - * name - * language - * registrationDate - * created - * changed - * fetched - * removed - * businessIdChanges - * businessIdChange - * source - * description - * reason - * changeDate - * change - * oldBusinessId - * newBusinessId - * language - * created - * changed - * fetched - * removed - * businessLines - * businessLine - * source - * ordering - * version - * name - * language - * registrationDate - * created - * changed - * fetched - * removed - * businessNames - * businessName - * companyId - * source - * ordering - * version - * name - * language - * registrationDate - * endDate - * created - * changed - * fetched - * removed - * companyForms - * companyForm - * source - * version - * name - * language - * type - * registrationDate - * created - * changed - * fetched - * removed - * contactDetails - * contactDetail - * source - * version - * language - * value - * type - * registrationDate - * created - * changed - * fetched - * languages - * language - * source - * version - * name - * language - * registrationDate - * created - * changed - * fetched - * liquidations - * liquidation - * companyId - * source - * version - * name - * language - * registrationDate - * endDate - * created - * changed - * fetched - * removed - * registeredEntries - * registeredEntry - * companyId - * description - * status - * register - * language - * authority - * registrationDate - * endDate - * created - * changed - * fetched - * removed - * registeredOffices - * registeredOffice - * companyId - * source - * ordering - * version - * name - * language - * registrationDate - * endDate - * created - * changed - * fetched - * removed - -**organizationData** holds values for different data related to organization fetched from an external API - -**companyData** holds values for different data related to company fetched from another API in case the organization -with the given businessCode was not found among the data retrieved from the first API - -### 3.2.2.13 Get Organization changes - -Requires ```FI``` profile (check [2.6.2 FI profile](#262-fi-profile)) - -Request - -``` $ curl "http://:8080/api/getOrganizationChanges/?startDate=&endDate=" -H "Content-Type: application/json" ``` - -* SERVER_ADDRESS please use the server address, on which the X-Road Catalog Lister is running on, e.g. localhost -* BUSINESS_CODE businessCode of the organization -* START_DATE - an optional parameter(a string in format YYYY-MM-DD), if not used, today's date will be assumed -* END_DATE - an optional parameter(a string in format YYYY-MM-DD), if not used, today's date will be assumed - -Example request -``` $ curl "http://localhost:8080/api/getOrganizationChanges/0130729-0?startDate=2021-08-24&endDate=2021-08-25" -H "Content-Type: application/json" ``` - -Response - -```json -{ - "changed":true, - "changedValueList":[ - { - "name":"Organization" - }, - { - "name":"OrganizationName" - }, - { - "name":"OrganizationDescription" - }, - { - "name":"Email" - }, - { - "name":"PhoneNumber" - }, - { - "name":"WebPage" - }, - { - "name":"Address" - }, - { - "name":"Street" - }, - { - "name":"Street" - }, - { - "name":"Street" - }, - { - "name":"Street" - }, - { - "name":"Street" - }, - { - "name":"Street" - }, - { - "name":"StreetAddress PostOffice" - }, - { - "name":"StreetAddress PostOffice" - }, - { - "name":"StreetAddress PostOffice" - }, - { - "name":"StreetAddress PostOffice" - }, - { - "name":"StreetAddress PostOffice" - }, - { - "name":"StreetAddress PostOffice" - }, - { - "name":"StreetAddress Municipality" - }, - { - "name":"StreetAddress Municipality Name" - }, - { - "name":"StreetAddress Municipality Name" - }, - { - "name":"StreetAddress Municipality Name" - }, - { - "name":"Address" - }, - { - "name":"Street" - }, - { - "name":"Street" - }, - { - "name":"Street" - }, - { - "name":"Street" - }, - { - "name":"Street" - }, - { - "name":"Street" - }, - { - "name":"StreetAddress PostOffice" - }, - { - "name":"StreetAddress PostOffice" - }, - { - "name":"StreetAddress PostOffice" - }, - { - "name":"StreetAddress PostOffice" - }, - { - "name":"StreetAddress PostOffice" - }, - { - "name":"StreetAddress PostOffice" - }, - { - "name":"StreetAddress Municipality" - }, - { - "name":"StreetAddress Municipality Name" - }, - { - "name":"StreetAddress Municipality Name" - }, - { - "name":"StreetAddress Municipality Name" - } - ] -} -``` - - -The response has the following fields: - -* changed -* changedValueList - * name - -**changed** is a boolean value which indicates whether there were any changes in all the data -**changedValueList** a list of changed data fields -**name** the name of the data field which has changes - - -### 3.2.2.14 Check organization heartbeat - -Requires ```FI``` profile (check [2.6.2 FI profile](#262-fi-profile)) - -In order to fetch X-Road Catalog organization heartbeat information, an HTTP request has to be sent to a respective REST endpoint: - -``` $ curl "http://:8080/api/organizationHeartbeat" -H "Content-Type: application/json" ``` - -* SERVER_ADDRESS please use the server address, on which the X-Road Catalog Lister is running on, e.g. localhost - -Response in JSON: -```json -{"appWorking":true, - "dbWorking":true, - "appName":"X-Road Catalog Lister", - "appVersion":"1.2.1", - "systemTime":[2021,9,20,10,12,15,132000000], - "lastCollectionData": - {"organizationsLastFetched":[2021,9,20,10,10,55,153000000], - "companiesLastFetched":null - } -} -``` - -The response has the following fields: - -* appWorking -* dbWorking -* appName -* appVersion -* systemTime -* lastCollectionData - * organizationsLastFetched - * companiesLastFetched - -### 3.3 X-Road Catalog Persistence - -The purpose of this piece of software is to persist and read persisted data. Used by the Collector and Lister - -[xroad-catalog-persistence](xroad-catalog-persistence/README.md) - From bde730c4e27b058a2fa14aa5c36f04d047daa816 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bert=20Viikm=C3=A4e?= Date: Tue, 7 Nov 2023 07:41:41 +0200 Subject: [PATCH 02/10] update version --- build.gradle | 2 +- xroad-catalog-collector/CHANGELOG.md | 5 +++++ xroad-catalog-collector/build_rpm.sh | 2 +- xroad-catalog-lister/CHANGELOG.md | 5 +++++ xroad-catalog-lister/build_rpm.sh | 2 +- xroad-catalog-lister/src/main/resources/version.properties | 2 +- xroad-catalog-persistence/CHANGELOG.md | 4 ++++ 7 files changed, 18 insertions(+), 4 deletions(-) diff --git a/build.gradle b/build.gradle index 7d54c92c..ffea6fea 100644 --- a/build.gradle +++ b/build.gradle @@ -27,7 +27,7 @@ wrapper { } ext { - project_version='3.0.4' + project_version='3.0.5' } diff --git a/xroad-catalog-collector/CHANGELOG.md b/xroad-catalog-collector/CHANGELOG.md index d956a081..8101f2dc 100644 --- a/xroad-catalog-collector/CHANGELOG.md +++ b/xroad-catalog-collector/CHANGELOG.md @@ -2,6 +2,11 @@ All notable changes to this project will be documented in this file. +## [3.0.5] - 2023-11-07 + +# Changed +- Pull latest version from NIIS develop branch + ## [3.0.4] - 2023-02-13 # Changed diff --git a/xroad-catalog-collector/build_rpm.sh b/xroad-catalog-collector/build_rpm.sh index 0801265c..6c6fd4b1 100755 --- a/xroad-catalog-collector/build_rpm.sh +++ b/xroad-catalog-collector/build_rpm.sh @@ -29,7 +29,7 @@ CMD="-ba" rm -rf ${ROOT}/RPMS/* -app_version=3.0.4 +app_version=3.0.5 echo "Chosen catalog profile = $PROFILE" diff --git a/xroad-catalog-lister/CHANGELOG.md b/xroad-catalog-lister/CHANGELOG.md index 1994bd88..78e07898 100644 --- a/xroad-catalog-lister/CHANGELOG.md +++ b/xroad-catalog-lister/CHANGELOG.md @@ -2,6 +2,11 @@ All notable changes to this project will be documented in this file. +## [3.0.5] - 2023-11-07 + +# Changed +- Pull latest version from NIIS develop branch + ## [3.0.4] - 2023-02-13 # Changed diff --git a/xroad-catalog-lister/build_rpm.sh b/xroad-catalog-lister/build_rpm.sh index 1db7dec0..92e1d725 100755 --- a/xroad-catalog-lister/build_rpm.sh +++ b/xroad-catalog-lister/build_rpm.sh @@ -28,7 +28,7 @@ CMD="-ba" rm -rf ${ROOT}/RPMS/* -app_version=3.0.4 +app_version=3.0.5 echo "Chosen catalog profile = $PROFILE" diff --git a/xroad-catalog-lister/src/main/resources/version.properties b/xroad-catalog-lister/src/main/resources/version.properties index 7063ed5f..681f7741 100644 --- a/xroad-catalog-lister/src/main/resources/version.properties +++ b/xroad-catalog-lister/src/main/resources/version.properties @@ -1,2 +1,2 @@ xroad-catalog.app-name=X-Road Catalog Lister -xroad-catalog.app-version=3.0.4 \ No newline at end of file +xroad-catalog.app-version=3.0.5 \ No newline at end of file diff --git a/xroad-catalog-persistence/CHANGELOG.md b/xroad-catalog-persistence/CHANGELOG.md index ba1fdc9e..691f23e6 100644 --- a/xroad-catalog-persistence/CHANGELOG.md +++ b/xroad-catalog-persistence/CHANGELOG.md @@ -2,6 +2,10 @@ All notable changes to this project will be documented in this file. +## 3.0.5 - 2023-11-07 + +- Pull latest version from NIIS develop branch + ## 3.0.4 - 2023-02-13 - Bugfixes, updates to systemd service specs From 44d1d1505ea10a41d50f9b4a5bccb4beb7603aeb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bert=20Viikm=C3=A4e?= Date: Thu, 9 Nov 2023 15:32:14 +0200 Subject: [PATCH 03/10] Remove xroad-confclient requirement --- .../xroad-catalog-lister/redhat/SPECS/xroad-catalog-lister.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xroad-catalog-lister/packages/xroad-catalog-lister/redhat/SPECS/xroad-catalog-lister.spec b/xroad-catalog-lister/packages/xroad-catalog-lister/redhat/SPECS/xroad-catalog-lister.spec index 35ecda17..adf97011 100644 --- a/xroad-catalog-lister/packages/xroad-catalog-lister/redhat/SPECS/xroad-catalog-lister.spec +++ b/xroad-catalog-lister/packages/xroad-catalog-lister/redhat/SPECS/xroad-catalog-lister.spec @@ -8,7 +8,7 @@ Release: %{rel}%{?snapshot}%{?dist} Summary: X-Road Service Listing Group: Applications/Internet License: MIT -Requires: systemd, java-11-openjdk, xroad-confclient +Requires: systemd, java-11-openjdk Requires(post): systemd Requires(preun): systemd Requires(postun): systemd From 3e2ada767d6f0c61c6100f6275f3552170da37f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bert=20Viikm=C3=A4e?= Date: Thu, 9 Nov 2023 16:40:13 +0200 Subject: [PATCH 04/10] Refacto fetch of companies --- build.gradle | 2 +- xroad-catalog-collector/CHANGELOG.md | 5 ++ xroad-catalog-collector/build_rpm.sh | 2 +- .../collector/XRoadCatalogCollector.java | 2 - .../collector/actors/CatalogSupervisor.java | 2 - .../collector/actors/FetchCompaniesActor.java | 28 ++++++++--- .../collector/actors/OrganizationsActor.java | 7 ++- .../ProductionConfiguration.java | 2 - .../collector/util/OrganizationUtil.java | 48 +++++++++++++++++++ .../resources/collector-production.properties | 3 +- .../resources/collector-sshtest.properties | 1 + .../src/main/resources/collector.properties | 3 +- .../actors/FetchCompanyActorTest.java | 40 +++++++++------- .../actors/ListMethodsActorTest.java | 1 + .../actors/OrganizationsActorTest.java | 1 + xroad-catalog-lister/CHANGELOG.md | 5 ++ xroad-catalog-lister/build_rpm.sh | 2 +- .../src/main/resources/version.properties | 2 +- xroad-catalog-persistence/CHANGELOG.md | 4 ++ 19 files changed, 122 insertions(+), 38 deletions(-) diff --git a/build.gradle b/build.gradle index ffea6fea..5bb2fd44 100644 --- a/build.gradle +++ b/build.gradle @@ -27,7 +27,7 @@ wrapper { } ext { - project_version='3.0.5' + project_version='3.0.6' } diff --git a/xroad-catalog-collector/CHANGELOG.md b/xroad-catalog-collector/CHANGELOG.md index 8101f2dc..fc8456af 100644 --- a/xroad-catalog-collector/CHANGELOG.md +++ b/xroad-catalog-collector/CHANGELOG.md @@ -2,6 +2,11 @@ All notable changes to this project will be documented in this file. +## [3.0.6] - 2023-11-09 + +# Changed +- Refactor fetch of companies + ## [3.0.5] - 2023-11-07 # Changed diff --git a/xroad-catalog-collector/build_rpm.sh b/xroad-catalog-collector/build_rpm.sh index 6c6fd4b1..8905d766 100755 --- a/xroad-catalog-collector/build_rpm.sh +++ b/xroad-catalog-collector/build_rpm.sh @@ -29,7 +29,7 @@ CMD="-ba" rm -rf ${ROOT}/RPMS/* -app_version=3.0.5 +app_version=3.0.6 echo "Chosen catalog profile = $PROFILE" diff --git a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/XRoadCatalogCollector.java b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/XRoadCatalogCollector.java index 5c11232a..1017ed7d 100644 --- a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/XRoadCatalogCollector.java +++ b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/XRoadCatalogCollector.java @@ -18,7 +18,6 @@ import akka.actor.ActorSystem; import akka.event.Logging; import akka.event.LoggingAdapter; -import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.ApplicationContext; @@ -28,7 +27,6 @@ import java.util.Arrays; import java.util.concurrent.TimeUnit; -@Slf4j @SpringBootApplication public class XRoadCatalogCollector { diff --git a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/CatalogSupervisor.java b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/CatalogSupervisor.java index 2ed1fdb5..e699e205 100644 --- a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/CatalogSupervisor.java +++ b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/CatalogSupervisor.java @@ -19,7 +19,6 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Profile; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; import scala.concurrent.duration.Duration; @@ -34,7 +33,6 @@ @Component("CatalogSupervisor") @Scope("prototype") @Slf4j -@Profile("!fi") // remove, so that this will be used for all profiles public class CatalogSupervisor extends XRoadCatalogActor { public static final String LIST_CLIENTS_ACTOR_ROUTER = "list-clients-actor-router"; diff --git a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/FetchCompaniesActor.java b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/FetchCompaniesActor.java index 81faf748..fccfcdbb 100644 --- a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/FetchCompaniesActor.java +++ b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/FetchCompaniesActor.java @@ -14,7 +14,6 @@ import fi.vrk.xroad.catalog.collector.util.OrganizationUtil; import fi.vrk.xroad.catalog.collector.wsimport.ClientType; -import fi.vrk.xroad.catalog.collector.wsimport.XRoadClientIdentifierType; import fi.vrk.xroad.catalog.persistence.CatalogService; import fi.vrk.xroad.catalog.persistence.CompanyService; import fi.vrk.xroad.catalog.persistence.entity.*; @@ -36,6 +35,9 @@ public class FetchCompaniesActor extends XRoadCatalogActor { @Value("${xroad-catalog.fetch-companies-url}") private String fetchCompaniesUrl; + @Value("${xroad-catalog.fetch-companies-limit}") + private Integer fetchCompaniesLimit; + @Autowired protected CatalogService catalogService; @@ -51,12 +53,24 @@ public void preStart() throws Exception { protected boolean handleMessage(Object message) { if (message instanceof ClientType) { ClientType clientType = (ClientType) message; - XRoadClientIdentifierType client = clientType.getId(); - log.info("Fetching data for company with businessCode {}", client.getMemberCode()); - String businessCode = clientType.getId().getMemberCode(); - JSONObject companyJson = OrganizationUtil.getCompany(clientType, fetchCompaniesUrl, businessCode, catalogService); - saveData(companyJson.optJSONArray("results")); - log.info("Successfully saved data for company with businessCode {}", businessCode); + JSONObject companiesJson = OrganizationUtil.getCompanies(clientType, fetchCompaniesLimit, fetchCompaniesUrl, catalogService); + JSONArray companiesArray = companiesJson.optJSONArray("results"); + int numberOfCompanies = companiesArray.length(); + log.info("Fetching data for {} companies", numberOfCompanies); + companiesArray.forEach(item -> { + JSONObject company = (JSONObject) item; + String businessCode = company.optString("businessId"); + JSONObject companyJson = OrganizationUtil.getCompany(clientType, fetchCompaniesUrl, businessCode, catalogService); + saveData(companyJson.optJSONArray("results")); + }); + + // for (int i = 0; i < numberOfCompanies; i++) { + // JSONObject company = companiesArray.optJSONObject(i); + // String businessCode = company.optString("businessId"); + // JSONObject companyJson = OrganizationUtil.getCompany(clientType, fetchCompaniesUrl, businessCode, catalogService); + // saveData(companyJson.optJSONArray("results")); + // } + log.info("Successfully saved data for {} companies", numberOfCompanies); return true; } else { return false; diff --git a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/OrganizationsActor.java b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/OrganizationsActor.java index 03c833ed..0dd2bdf8 100644 --- a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/OrganizationsActor.java +++ b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/OrganizationsActor.java @@ -43,6 +43,8 @@ public class OrganizationsActor extends XRoadCatalogActor { private boolean organizationsFetched = false; + private boolean companiesFetched = false; + private static final String SERVICE_TYPE_REST = "REST"; @Value("${xroad-catalog.security-server-host}") @@ -138,7 +140,10 @@ private void fetchOrganizations(ClientType clientType) { private void fetchCompanies(ClientType clientType) { if (MethodListUtil.shouldFetchCompanies(fetchCompaniesUnlimited, fetchCompaniesTimeAfterHour, fetchCompaniesTimeBeforeHour)) { - fetchCompaniesPoolRef.tell(clientType, getSelf()); + if (Boolean.FALSE.equals(companiesFetched)) { + fetchCompaniesPoolRef.tell(clientType, getSelf()); + companiesFetched = true; + } } } diff --git a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/configuration/ProductionConfiguration.java b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/configuration/ProductionConfiguration.java index c48bc0bd..d9bff930 100644 --- a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/configuration/ProductionConfiguration.java +++ b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/configuration/ProductionConfiguration.java @@ -12,13 +12,11 @@ */ package fi.vrk.xroad.catalog.collector.configuration; -import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; @Configuration @Profile({"production", "sshtest"} ) -@Slf4j public class ProductionConfiguration extends ApplicationConfiguration { // dont override anything from ApplicationConfiguration diff --git a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/util/OrganizationUtil.java b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/util/OrganizationUtil.java index afde8c33..efdea252 100644 --- a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/util/OrganizationUtil.java +++ b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/util/OrganizationUtil.java @@ -40,6 +40,9 @@ @Slf4j public class OrganizationUtil { + private static final String TOTAL_RESULTS = "true"; + private static final String RESULTS_FROM = "0"; + private static final String REGISTRATION_FROM = "1970-01-01"; private static final String WITH_BUSINESS_CODE = "with businessCode "; private static final String DESCRIPTION = "description"; private static final String LANGUAGE = "language"; @@ -54,6 +57,51 @@ private OrganizationUtil() { } + public static JSONObject getCompanies(ClientType clientType, + Integer fetchCompaniesLimit, + String url, + CatalogService catalogService) { + final String fetchCompaniesUrl = new StringBuilder() + .append(url) + .append("?totalResults=").append(TOTAL_RESULTS) + .append("&maxResults=").append(String.valueOf(fetchCompaniesLimit)) + .append("&resultsFrom=").append(RESULTS_FROM) + .append("&companyRegistrationFrom=").append(REGISTRATION_FROM) + .toString(); + JSONObject jsonObject = new JSONObject(); + try { + String ret = getResponseBody(fetchCompaniesUrl); + jsonObject = new JSONObject(ret); + return jsonObject; + } catch (KeyStoreException e) { + ErrorLog errorLog = MethodListUtil.createErrorLog(clientType, + "KeyStoreException occurred when fetching list of companies from url " + url, + "500"); + catalogService.saveErrorLog(errorLog); + log.error("KeyStoreException occurred when fetching companies from url {}", url); + } catch (NoSuchAlgorithmException e) { + ErrorLog errorLog = MethodListUtil.createErrorLog(clientType, + "NoSuchAlgorithmException occurred when fetching companies from url " + url, + "500"); + catalogService.saveErrorLog(errorLog); + log.error("NoSuchAlgorithmException occurred when fetching companies from url", url); + } catch (KeyManagementException e) { + ErrorLog errorLog = MethodListUtil.createErrorLog(clientType, + "KeyManagementException occurred when fetching companies from url " + url, + "500"); + catalogService.saveErrorLog(errorLog); + log.error("KeyManagementException occurred when fetching companies from url {}", url); + } + catch (Exception e) { + ErrorLog errorLog = MethodListUtil.createErrorLog(clientType, + "Exception occurred when fetching companies from url " + url, + "500"); + catalogService.saveErrorLog(errorLog); + log.error("Exception occurred when fetching companies from url {}", url); + } + return jsonObject; + } + public static JSONObject getCompany(ClientType clientType, String url, String businessCode, CatalogService catalogService) { final String fetchCompaniesUrl = new StringBuilder().append(url) .append("/").append(businessCode).toString(); diff --git a/xroad-catalog-collector/src/main/resources/collector-production.properties b/xroad-catalog-collector/src/main/resources/collector-production.properties index 0bfdde0f..73996990 100644 --- a/xroad-catalog-collector/src/main/resources/collector-production.properties +++ b/xroad-catalog-collector/src/main/resources/collector-production.properties @@ -18,6 +18,7 @@ xroad-catalog.fetch-companies-url=https://avoindata.prh.fi/bis/v1 # 100 is maximum per request for the api xroad-catalog.max-organizations-per-request=100 xroad-catalog.fetch-organizations-limit=2000 +xroad-catalog.fetch-companies-limit=2000 xroad-catalog.fetch-companies-run-unlimited=false xroad-catalog.fetch-companies-time-after-hour=3 @@ -46,4 +47,4 @@ xroad-catalog.fetch-companies-pool-size=10 # Do not change except in development spring.main.web_environment=false -spring.main.allow-bean-definition-overriding=true +spring.main.allow-bean-definition-overriding=true \ No newline at end of file diff --git a/xroad-catalog-collector/src/main/resources/collector-sshtest.properties b/xroad-catalog-collector/src/main/resources/collector-sshtest.properties index 26608054..72d3612a 100644 --- a/xroad-catalog-collector/src/main/resources/collector-sshtest.properties +++ b/xroad-catalog-collector/src/main/resources/collector-sshtest.properties @@ -23,6 +23,7 @@ xroad-catalog.fetch-companies-url=https://avoindata.prh.fi/bis/v1 # 100 is maximum per request for the api xroad-catalog.max-organizations-per-request=100 xroad-catalog.fetch-organizations-limit=2000 +xroad-catalog.fetch-companies-limit=2000 xroad-catalog.fetch-companies-run-unlimited=false xroad-catalog.fetch-companies-time-after-hour=3 diff --git a/xroad-catalog-collector/src/main/resources/collector.properties b/xroad-catalog-collector/src/main/resources/collector.properties index 70bd4a4f..6378254c 100644 --- a/xroad-catalog-collector/src/main/resources/collector.properties +++ b/xroad-catalog-collector/src/main/resources/collector.properties @@ -21,6 +21,7 @@ xroad-catalog.fetch-companies-url=https://avoindata.prh.fi/bis/v1 # 100 is maximum per request for the api xroad-catalog.max-organizations-per-request=100 xroad-catalog.fetch-organizations-limit=2000 +xroad-catalog.fetch-companies-limit=2000 xroad-catalog.fetch-companies-run-unlimited=false xroad-catalog.fetch-companies-time-after-hour=3 @@ -44,4 +45,4 @@ xroad-catalog.fetch-companies-pool-size=1 # SSL keystore parameters xroad-catalog.ssl-keystore=/etc/xroad/xroad-catalog/keystore -xroad-catalog.ssl-keystore-password=changeit +xroad-catalog.ssl-keystore-password=changeit \ No newline at end of file diff --git a/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/actors/FetchCompanyActorTest.java b/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/actors/FetchCompanyActorTest.java index aeb21923..5d025f78 100644 --- a/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/actors/FetchCompanyActorTest.java +++ b/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/actors/FetchCompanyActorTest.java @@ -28,10 +28,14 @@ import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.test.context.TestPropertySource; +import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.*; @SpringBootTest(classes = DevelopmentConfiguration.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) -@TestPropertySource(properties = {"xroad-catalog.fetch-companies-run-unlimited=true"}) +@TestPropertySource(properties = { + "xroad-catalog.fetch-companies-limit=3", + "xroad-catalog.fetch-companies-run-unlimited=true" +}) public class FetchCompanyActorTest { @MockBean @@ -60,25 +64,25 @@ public void testBasicPlumbing() { value.setObjectType(XRoadObjectType.SERVICE); clientType.setId(value); fetchCompanyActor.tell(clientType, ActorRef.noSender()); - verify(companyService, times(1)).saveCompany(any()); + verify(companyService, times(3)).saveCompany(any()); } - @Test - public void testBasicPlumbingWithInvalidData() { - TestActorRef fetchCompanyActor = TestActorRef.create(actorSystem, springExtension.props("fetchCompaniesActor", null)); - ClientType clientType = new ClientType(); - XRoadClientIdentifierType value = new XRoadClientIdentifierType(); - value.setXRoadInstance("INSTANCE"); - value.setMemberClass("COM"); - value.setMemberCode("abc"); - value.setSubsystemCode("SUBSYSTEM"); - value.setServiceCode("aService"); - value.setServiceVersion("v1"); - value.setObjectType(XRoadObjectType.SERVICE); - clientType.setId(value); - fetchCompanyActor.tell(clientType, ActorRef.noSender()); - verify(catalogService, times(1)).saveErrorLog(any()); - } + // @Test + // public void testBasicPlumbingWithInvalidData() { + // TestActorRef fetchCompanyActor = TestActorRef.create(actorSystem, springExtension.props("fetchCompaniesActor", null)); + // ClientType clientType = new ClientType(); + // XRoadClientIdentifierType value = new XRoadClientIdentifierType(); + // value.setXRoadInstance("INSTANCE"); + // value.setMemberClass("COM"); + // value.setMemberCode("abc"); + // value.setSubsystemCode("SUBSYSTEM"); + // value.setServiceCode("aService"); + // value.setServiceVersion("v1"); + // value.setObjectType(XRoadObjectType.SERVICE); + // clientType.setId(value); + // fetchCompanyActor.tell(clientType, ActorRef.noSender()); + // verify(catalogService, times(3)).saveErrorLog(any()); + // } @Test public void testBasicPlumbingWithInvalidMessageType() { diff --git a/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/actors/ListMethodsActorTest.java b/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/actors/ListMethodsActorTest.java index 5f9e5aab..f43cd2b0 100644 --- a/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/actors/ListMethodsActorTest.java +++ b/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/actors/ListMethodsActorTest.java @@ -36,6 +36,7 @@ @SpringBootTest(classes = DevelopmentConfiguration.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) @TestPropertySource(properties = { "xroad-catalog.fetch-organizations-limit=3", + "xroad-catalog.fetch-companies-limit=3", "xroad-catalog.max-organizations-per-request=3" }) public class ListMethodsActorTest { diff --git a/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/actors/OrganizationsActorTest.java b/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/actors/OrganizationsActorTest.java index 5c1d0c48..388e532b 100644 --- a/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/actors/OrganizationsActorTest.java +++ b/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/actors/OrganizationsActorTest.java @@ -36,6 +36,7 @@ @SpringBootTest(classes = DevelopmentConfiguration.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) @TestPropertySource(properties = { "xroad-catalog.fetch-organizations-limit=3", + "xroad-catalog.fetch-companies-limit=3", "xroad-catalog.max-organizations-per-request=3", "xroad-catalog.fetch-companies-run-unlimited=true", "xroad-catalog.flush-log-time-after-hour=0", diff --git a/xroad-catalog-lister/CHANGELOG.md b/xroad-catalog-lister/CHANGELOG.md index 78e07898..6d121a26 100644 --- a/xroad-catalog-lister/CHANGELOG.md +++ b/xroad-catalog-lister/CHANGELOG.md @@ -2,6 +2,11 @@ All notable changes to this project will be documented in this file. +## [3.0.6] - 2023-11-09 + +# Changed +- Refactor fetch of companies + ## [3.0.5] - 2023-11-07 # Changed diff --git a/xroad-catalog-lister/build_rpm.sh b/xroad-catalog-lister/build_rpm.sh index 92e1d725..8f5f81b9 100755 --- a/xroad-catalog-lister/build_rpm.sh +++ b/xroad-catalog-lister/build_rpm.sh @@ -28,7 +28,7 @@ CMD="-ba" rm -rf ${ROOT}/RPMS/* -app_version=3.0.5 +app_version=3.0.6 echo "Chosen catalog profile = $PROFILE" diff --git a/xroad-catalog-lister/src/main/resources/version.properties b/xroad-catalog-lister/src/main/resources/version.properties index 681f7741..1e37cd7b 100644 --- a/xroad-catalog-lister/src/main/resources/version.properties +++ b/xroad-catalog-lister/src/main/resources/version.properties @@ -1,2 +1,2 @@ xroad-catalog.app-name=X-Road Catalog Lister -xroad-catalog.app-version=3.0.5 \ No newline at end of file +xroad-catalog.app-version=3.0.6 \ No newline at end of file diff --git a/xroad-catalog-persistence/CHANGELOG.md b/xroad-catalog-persistence/CHANGELOG.md index 691f23e6..28456c38 100644 --- a/xroad-catalog-persistence/CHANGELOG.md +++ b/xroad-catalog-persistence/CHANGELOG.md @@ -2,6 +2,10 @@ All notable changes to this project will be documented in this file. +## 3.0.6 - 2023-11-09 + +- Refactor fetch of companies + ## 3.0.5 - 2023-11-07 - Pull latest version from NIIS develop branch From 38e43a4f725d864abfefc90e1fc5963d4e46e60d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bert=20Viikm=C3=A4e?= Date: Thu, 9 Nov 2023 16:48:26 +0200 Subject: [PATCH 05/10] Refacto fetch of companies --- .../collector/actors/FetchCompaniesActor.java | 7 ------- .../collector/actors/FetchCompanyActorTest.java | 17 ----------------- 2 files changed, 24 deletions(-) diff --git a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/FetchCompaniesActor.java b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/FetchCompaniesActor.java index fccfcdbb..504af00c 100644 --- a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/FetchCompaniesActor.java +++ b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/FetchCompaniesActor.java @@ -63,13 +63,6 @@ protected boolean handleMessage(Object message) { JSONObject companyJson = OrganizationUtil.getCompany(clientType, fetchCompaniesUrl, businessCode, catalogService); saveData(companyJson.optJSONArray("results")); }); - - // for (int i = 0; i < numberOfCompanies; i++) { - // JSONObject company = companiesArray.optJSONObject(i); - // String businessCode = company.optString("businessId"); - // JSONObject companyJson = OrganizationUtil.getCompany(clientType, fetchCompaniesUrl, businessCode, catalogService); - // saveData(companyJson.optJSONArray("results")); - // } log.info("Successfully saved data for {} companies", numberOfCompanies); return true; } else { diff --git a/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/actors/FetchCompanyActorTest.java b/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/actors/FetchCompanyActorTest.java index 5d025f78..58650163 100644 --- a/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/actors/FetchCompanyActorTest.java +++ b/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/actors/FetchCompanyActorTest.java @@ -67,23 +67,6 @@ public void testBasicPlumbing() { verify(companyService, times(3)).saveCompany(any()); } - // @Test - // public void testBasicPlumbingWithInvalidData() { - // TestActorRef fetchCompanyActor = TestActorRef.create(actorSystem, springExtension.props("fetchCompaniesActor", null)); - // ClientType clientType = new ClientType(); - // XRoadClientIdentifierType value = new XRoadClientIdentifierType(); - // value.setXRoadInstance("INSTANCE"); - // value.setMemberClass("COM"); - // value.setMemberCode("abc"); - // value.setSubsystemCode("SUBSYSTEM"); - // value.setServiceCode("aService"); - // value.setServiceVersion("v1"); - // value.setObjectType(XRoadObjectType.SERVICE); - // clientType.setId(value); - // fetchCompanyActor.tell(clientType, ActorRef.noSender()); - // verify(catalogService, times(3)).saveErrorLog(any()); - // } - @Test public void testBasicPlumbingWithInvalidMessageType() { TestActorRef fetchCompanyActor = TestActorRef.create(actorSystem, springExtension.props("fetchCompaniesActor")); From 5f0db07fff106b1a6cb2bceaf9cc1585b565fbb7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bert=20Viikm=C3=A4e?= Date: Fri, 10 Nov 2023 15:28:08 +0200 Subject: [PATCH 06/10] Fix companies fetch limit --- .../src/main/resources/collector-production.properties | 2 +- .../src/main/resources/collector-sshtest.properties | 2 +- xroad-catalog-collector/src/main/resources/collector.properties | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/xroad-catalog-collector/src/main/resources/collector-production.properties b/xroad-catalog-collector/src/main/resources/collector-production.properties index 73996990..d8f9f105 100644 --- a/xroad-catalog-collector/src/main/resources/collector-production.properties +++ b/xroad-catalog-collector/src/main/resources/collector-production.properties @@ -18,7 +18,7 @@ xroad-catalog.fetch-companies-url=https://avoindata.prh.fi/bis/v1 # 100 is maximum per request for the api xroad-catalog.max-organizations-per-request=100 xroad-catalog.fetch-organizations-limit=2000 -xroad-catalog.fetch-companies-limit=2000 +xroad-catalog.fetch-companies-limit=1000 xroad-catalog.fetch-companies-run-unlimited=false xroad-catalog.fetch-companies-time-after-hour=3 diff --git a/xroad-catalog-collector/src/main/resources/collector-sshtest.properties b/xroad-catalog-collector/src/main/resources/collector-sshtest.properties index 72d3612a..9af0e7b9 100644 --- a/xroad-catalog-collector/src/main/resources/collector-sshtest.properties +++ b/xroad-catalog-collector/src/main/resources/collector-sshtest.properties @@ -23,7 +23,7 @@ xroad-catalog.fetch-companies-url=https://avoindata.prh.fi/bis/v1 # 100 is maximum per request for the api xroad-catalog.max-organizations-per-request=100 xroad-catalog.fetch-organizations-limit=2000 -xroad-catalog.fetch-companies-limit=2000 +xroad-catalog.fetch-companies-limit=1000 xroad-catalog.fetch-companies-run-unlimited=false xroad-catalog.fetch-companies-time-after-hour=3 diff --git a/xroad-catalog-collector/src/main/resources/collector.properties b/xroad-catalog-collector/src/main/resources/collector.properties index 6378254c..be990d2f 100644 --- a/xroad-catalog-collector/src/main/resources/collector.properties +++ b/xroad-catalog-collector/src/main/resources/collector.properties @@ -21,7 +21,7 @@ xroad-catalog.fetch-companies-url=https://avoindata.prh.fi/bis/v1 # 100 is maximum per request for the api xroad-catalog.max-organizations-per-request=100 xroad-catalog.fetch-organizations-limit=2000 -xroad-catalog.fetch-companies-limit=2000 +xroad-catalog.fetch-companies-limit=1000 xroad-catalog.fetch-companies-run-unlimited=false xroad-catalog.fetch-companies-time-after-hour=3 From e80260b9475ddbcb3d93763f5f2b60edab30bf59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bert=20Viikm=C3=A4e?= Date: Fri, 17 Nov 2023 15:41:45 +0200 Subject: [PATCH 07/10] Refacto ListMembers to have serviceType field --- build.gradle | 2 +- doc/xroad_catalog_user_guide.md | 12 ++++++++++-- xroad-catalog-collector/CHANGELOG.md | 5 +++++ xroad-catalog-collector/build_rpm.sh | 2 +- xroad-catalog-lister/CHANGELOG.md | 5 +++++ xroad-catalog-lister/build_rpm.sh | 2 +- .../catalog/lister/ServiceEndpointImpl.java | 6 +++++- .../catalog/lister/util/JaxbServiceUtil.java | 18 ++++++++++++++++++ .../src/main/resources/services.wsdl | 1 + .../src/main/resources/version.properties | 2 +- xroad-catalog-persistence/CHANGELOG.md | 4 ++++ 11 files changed, 52 insertions(+), 7 deletions(-) diff --git a/build.gradle b/build.gradle index 5bb2fd44..7f77ddd4 100644 --- a/build.gradle +++ b/build.gradle @@ -27,7 +27,7 @@ wrapper { } ext { - project_version='3.0.6' + project_version='3.0.7' } diff --git a/doc/xroad_catalog_user_guide.md b/doc/xroad_catalog_user_guide.md index 317d9458..aa730bde 100644 --- a/doc/xroad_catalog_user_guide.md +++ b/doc/xroad_catalog_user_guide.md @@ -1,5 +1,5 @@ # X-Road Catalog User Guide -Version: 4.2.0 +Version: 4.2.1 Doc. ID: UG-XRDCAT --- @@ -25,6 +25,7 @@ Doc. ID: UG-XRDCAT | 22.03.2023 | 4.0.0 | Split document into X-Road Catalog Installation Guide and User Guide | Petteri Kivimäki | | 16.08.2023 | 4.1.0 | Update Catalog Lister port number from `8080` to `8070` | Petteri Kivimäki | | 09.09.2023 | 4.2.0 | Update REST endpoint descriptions | Petteri Kivimäki | +| 17.11.2023 | 4.2.1 | Update response of ListMembers and service types for GetServiceType | Bert Viikmäe | ## Table of Contents @@ -204,6 +205,7 @@ Contents of the XML response of the request clientReg + SOAP 1584692751893_da8be621-5d6b-4920-91c9-d8c359dddbad 2020-03-20T10:25:51.892+02:00 @@ -216,12 +218,14 @@ Contents of the XML response of the request respa.tampere.fi + REST 2020-03-20T10:25:51.632+02:00 2020-03-20T10:25:51.632+02:00 2020-03-20T12:31:07.223+02:00 authCertDeletion + SOAP 1584692751942_ab002cbd-bbbd-43c7-a311-b0dc5adf3af1 2020-03-20T10:25:51.936+02:00 @@ -234,6 +238,7 @@ Contents of the XML response of the request clientDeletion + SOAP 1584692751908_5bdde30d-3a5f-42c0-9f45-d884f5810996 2020-03-20T10:25:51.906+02:00 @@ -246,6 +251,7 @@ Contents of the XML response of the request ownerChange + SOAP 1584692751888_07141c5a-bfe0-4c84-b621-e5e4a9db01fa 2020-03-20T10:25:51.884+02:00 @@ -258,6 +264,7 @@ Contents of the XML response of the request PetStoreNew + REST 2020-03-20T10:25:51.632+02:00 2020-03-20T10:25:51.632+02:00 2020-03-20T12:31:07.223+02:00 @@ -296,6 +303,7 @@ The XML response has a `` element with the following structure: * `services` * `service` * `serviceCode` + * `serviceType` * `wsdl` (if the given service description is a WSDL description) * `externalId` @@ -456,7 +464,7 @@ The following request fields need to be filled: The XML response has a `` element with the following structure: * `GetServiceTypeResponse` - * `type` (values: `REST`/`OPENAPI3`/`WSDL`) + * `type` (values: `REST`/`OPENAPI3`/`WSDL`/`UNKNOWN`) ### 3.1.5 Check if member is provider diff --git a/xroad-catalog-collector/CHANGELOG.md b/xroad-catalog-collector/CHANGELOG.md index fc8456af..485a24a9 100644 --- a/xroad-catalog-collector/CHANGELOG.md +++ b/xroad-catalog-collector/CHANGELOG.md @@ -2,6 +2,11 @@ All notable changes to this project will be documented in this file. +## [3.0.7] - 2023-11-17 + +# Changed +- Refactor ListMembers endpoint to have extra field "serviceType" + ## [3.0.6] - 2023-11-09 # Changed diff --git a/xroad-catalog-collector/build_rpm.sh b/xroad-catalog-collector/build_rpm.sh index 8905d766..e9f7e11f 100755 --- a/xroad-catalog-collector/build_rpm.sh +++ b/xroad-catalog-collector/build_rpm.sh @@ -29,7 +29,7 @@ CMD="-ba" rm -rf ${ROOT}/RPMS/* -app_version=3.0.6 +app_version=3.0.7 echo "Chosen catalog profile = $PROFILE" diff --git a/xroad-catalog-lister/CHANGELOG.md b/xroad-catalog-lister/CHANGELOG.md index 6d121a26..8eca5c58 100644 --- a/xroad-catalog-lister/CHANGELOG.md +++ b/xroad-catalog-lister/CHANGELOG.md @@ -2,6 +2,11 @@ All notable changes to this project will be documented in this file. +## [3.0.7] - 2023-11-17 + +# Changed +- Refactor ListMembers endpoint to have extra field "serviceType" + ## [3.0.6] - 2023-11-09 # Changed diff --git a/xroad-catalog-lister/build_rpm.sh b/xroad-catalog-lister/build_rpm.sh index 8f5f81b9..b48f6239 100755 --- a/xroad-catalog-lister/build_rpm.sh +++ b/xroad-catalog-lister/build_rpm.sh @@ -28,7 +28,7 @@ CMD="-ba" rm -rf ${ROOT}/RPMS/* -app_version=3.0.6 +app_version=3.0.7 echo "Chosen catalog profile = $PROFILE" diff --git a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/ServiceEndpointImpl.java b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/ServiceEndpointImpl.java index 0ff6fb51..353806bb 100644 --- a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/ServiceEndpointImpl.java +++ b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/ServiceEndpointImpl.java @@ -98,7 +98,11 @@ public IsProviderResponse isProvider(@RequestPayload IsProvider request) { member.getAllSubsystems().forEach(subsystem -> { subsystem.getAllServices().forEach(service -> { - if (service.hasWsdl() || service.hasOpenApi()) { + if (service.hasWsdl()) { + isProvider.set(Boolean.TRUE); + } else if (service.hasOpenApi()) { + isProvider.set(Boolean.TRUE); + } else if (service.hasRest()) { isProvider.set(Boolean.TRUE); } }); diff --git a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/util/JaxbServiceUtil.java b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/util/JaxbServiceUtil.java index 445d3609..a8a17c1d 100644 --- a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/util/JaxbServiceUtil.java +++ b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/util/JaxbServiceUtil.java @@ -26,10 +26,27 @@ public class JaxbServiceUtil { + private static final String SERVICE_TYPE_SOAP = "SOAP"; + private static final String SERVICE_TYPE_REST = "REST"; + private static final String SERVICE_TYPE_OPENAPI = "OPENAPI"; + private static final String SERVICE_TYPE_UNKNOWN = "UNKNOWN"; + private JaxbServiceUtil() { } + public static String determineServiceType(Service service) { + if (service.hasWsdl()) { + return SERVICE_TYPE_SOAP; + } else if (service.hasOpenApi()) { + return SERVICE_TYPE_OPENAPI; + } else if (service.hasRest()) { + return SERVICE_TYPE_REST; + } else { + return SERVICE_TYPE_UNKNOWN; + } + } + public static fi.vrk.xroad.xroad_catalog_lister.Service convertService(Service service, boolean onlyActiveChildren) { fi.vrk.xroad.xroad_catalog_lister.Service cs = new fi.vrk.xroad.xroad_catalog_lister.Service(); cs.setChanged(toXmlGregorianCalendar(service.getStatusInfo().getChanged())); @@ -38,6 +55,7 @@ public static fi.vrk.xroad.xroad_catalog_lister.Service convertService(Service s cs.setRemoved(toXmlGregorianCalendar(service.getStatusInfo().getRemoved())); cs.setServiceCode(service.getServiceCode()); cs.setServiceVersion(service.getServiceVersion()); + cs.setServiceType(determineServiceType(service)); Wsdl wsdl = null; if (onlyActiveChildren) { if (service.getWsdl() != null && !service.getWsdl().getStatusInfo().isRemoved()) { diff --git a/xroad-catalog-lister/src/main/resources/services.wsdl b/xroad-catalog-lister/src/main/resources/services.wsdl index 02506568..de38c0a0 100644 --- a/xroad-catalog-lister/src/main/resources/services.wsdl +++ b/xroad-catalog-lister/src/main/resources/services.wsdl @@ -1000,6 +1000,7 @@ http://x-road.eu/xsd/identifiers "> + diff --git a/xroad-catalog-lister/src/main/resources/version.properties b/xroad-catalog-lister/src/main/resources/version.properties index 1e37cd7b..b614f424 100644 --- a/xroad-catalog-lister/src/main/resources/version.properties +++ b/xroad-catalog-lister/src/main/resources/version.properties @@ -1,2 +1,2 @@ xroad-catalog.app-name=X-Road Catalog Lister -xroad-catalog.app-version=3.0.6 \ No newline at end of file +xroad-catalog.app-version=3.0.7 \ No newline at end of file diff --git a/xroad-catalog-persistence/CHANGELOG.md b/xroad-catalog-persistence/CHANGELOG.md index 28456c38..e5b91b6c 100644 --- a/xroad-catalog-persistence/CHANGELOG.md +++ b/xroad-catalog-persistence/CHANGELOG.md @@ -2,6 +2,10 @@ All notable changes to this project will be documented in this file. +## 3.0.7 - 2023-11-17 + +- Refactor ListMembers endpoint to have extra field "serviceType" + ## 3.0.6 - 2023-11-09 - Refactor fetch of companies From ba86fbd6d1faf26941154dbb4e0b3098327955ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bert=20Viikm=C3=A4e?= Date: Fri, 17 Nov 2023 16:30:41 +0200 Subject: [PATCH 08/10] Remove method determineServiceType and reduce branching for similar code in ServiceEndpointImpl --- .../catalog/lister/ServiceEndpointImpl.java | 6 +---- .../catalog/lister/util/JaxbServiceUtil.java | 27 +++++++------------ 2 files changed, 10 insertions(+), 23 deletions(-) diff --git a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/ServiceEndpointImpl.java b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/ServiceEndpointImpl.java index 353806bb..d5c422f8 100644 --- a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/ServiceEndpointImpl.java +++ b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/ServiceEndpointImpl.java @@ -98,11 +98,7 @@ public IsProviderResponse isProvider(@RequestPayload IsProvider request) { member.getAllSubsystems().forEach(subsystem -> { subsystem.getAllServices().forEach(service -> { - if (service.hasWsdl()) { - isProvider.set(Boolean.TRUE); - } else if (service.hasOpenApi()) { - isProvider.set(Boolean.TRUE); - } else if (service.hasRest()) { + if (service.hasWsdl() || service.hasOpenApi() || service.hasRest()) { isProvider.set(Boolean.TRUE); } }); diff --git a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/util/JaxbServiceUtil.java b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/util/JaxbServiceUtil.java index a8a17c1d..9a1a7c2f 100644 --- a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/util/JaxbServiceUtil.java +++ b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/util/JaxbServiceUtil.java @@ -26,27 +26,10 @@ public class JaxbServiceUtil { - private static final String SERVICE_TYPE_SOAP = "SOAP"; - private static final String SERVICE_TYPE_REST = "REST"; - private static final String SERVICE_TYPE_OPENAPI = "OPENAPI"; - private static final String SERVICE_TYPE_UNKNOWN = "UNKNOWN"; - private JaxbServiceUtil() { } - public static String determineServiceType(Service service) { - if (service.hasWsdl()) { - return SERVICE_TYPE_SOAP; - } else if (service.hasOpenApi()) { - return SERVICE_TYPE_OPENAPI; - } else if (service.hasRest()) { - return SERVICE_TYPE_REST; - } else { - return SERVICE_TYPE_UNKNOWN; - } - } - public static fi.vrk.xroad.xroad_catalog_lister.Service convertService(Service service, boolean onlyActiveChildren) { fi.vrk.xroad.xroad_catalog_lister.Service cs = new fi.vrk.xroad.xroad_catalog_lister.Service(); cs.setChanged(toXmlGregorianCalendar(service.getStatusInfo().getChanged())); @@ -55,7 +38,15 @@ public static fi.vrk.xroad.xroad_catalog_lister.Service convertService(Service s cs.setRemoved(toXmlGregorianCalendar(service.getStatusInfo().getRemoved())); cs.setServiceCode(service.getServiceCode()); cs.setServiceVersion(service.getServiceVersion()); - cs.setServiceType(determineServiceType(service)); + if (service.hasWsdl()) { + cs.setServiceType("SOAP"); + } else if (service.hasOpenApi()) { + cs.setServiceType("OPENAPI"); + } else if (service.hasRest()) { + cs.setServiceType("REST"); + } else { + cs.setServiceType("UNKNOWN"); + } Wsdl wsdl = null; if (onlyActiveChildren) { if (service.getWsdl() != null && !service.getWsdl().getStatusInfo().isRemoved()) { From 0a2b185800a3969a43d563ed415203561f88b79a Mon Sep 17 00:00:00 2001 From: Raido Kaju Date: Tue, 28 May 2024 11:24:59 +0300 Subject: [PATCH 09/10] chore: fix merge issues Refs: XRDCAT-19 --- .../collector/actors/FetchCompaniesActor.java | 13 +- .../collector/util/OrganizationUtil.java | 1408 +++++++++-------- .../catalog/lister/ServiceEndpointImpl.java | 18 +- 3 files changed, 756 insertions(+), 683 deletions(-) diff --git a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/FetchCompaniesActor.java b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/FetchCompaniesActor.java index 2cce0a16..2f468d80 100644 --- a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/FetchCompaniesActor.java +++ b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/FetchCompaniesActor.java @@ -16,7 +16,18 @@ import fi.vrk.xroad.catalog.collector.wsimport.ClientType; import fi.vrk.xroad.catalog.persistence.CatalogService; import fi.vrk.xroad.catalog.persistence.CompanyService; -import fi.vrk.xroad.catalog.persistence.entity.*; +import fi.vrk.xroad.catalog.persistence.entity.BusinessAddress; +import fi.vrk.xroad.catalog.persistence.entity.BusinessAuxiliaryName; +import fi.vrk.xroad.catalog.persistence.entity.BusinessIdChange; +import fi.vrk.xroad.catalog.persistence.entity.BusinessLine; +import fi.vrk.xroad.catalog.persistence.entity.BusinessName; +import fi.vrk.xroad.catalog.persistence.entity.Company; +import fi.vrk.xroad.catalog.persistence.entity.CompanyForm; +import fi.vrk.xroad.catalog.persistence.entity.ContactDetail; +import fi.vrk.xroad.catalog.persistence.entity.Language; +import fi.vrk.xroad.catalog.persistence.entity.Liquidation; +import fi.vrk.xroad.catalog.persistence.entity.RegisteredEntry; +import fi.vrk.xroad.catalog.persistence.entity.RegisteredOffice; import lombok.extern.slf4j.Slf4j; import org.json.JSONArray; import org.json.JSONObject; diff --git a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/util/OrganizationUtil.java b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/util/OrganizationUtil.java index 93928561..0b225dd4 100644 --- a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/util/OrganizationUtil.java +++ b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/util/OrganizationUtil.java @@ -14,16 +14,55 @@ import fi.vrk.xroad.catalog.collector.wsimport.ClientType; import fi.vrk.xroad.catalog.persistence.CatalogService; -import fi.vrk.xroad.catalog.persistence.entity.*; +import fi.vrk.xroad.catalog.persistence.entity.Address; +import fi.vrk.xroad.catalog.persistence.entity.BusinessAddress; +import fi.vrk.xroad.catalog.persistence.entity.BusinessAuxiliaryName; +import fi.vrk.xroad.catalog.persistence.entity.BusinessIdChange; +import fi.vrk.xroad.catalog.persistence.entity.BusinessLine; +import fi.vrk.xroad.catalog.persistence.entity.BusinessName; +import fi.vrk.xroad.catalog.persistence.entity.Company; +import fi.vrk.xroad.catalog.persistence.entity.CompanyForm; +import fi.vrk.xroad.catalog.persistence.entity.ContactDetail; +import fi.vrk.xroad.catalog.persistence.entity.Email; +import fi.vrk.xroad.catalog.persistence.entity.ErrorLog; +import fi.vrk.xroad.catalog.persistence.entity.Language; +import fi.vrk.xroad.catalog.persistence.entity.Liquidation; +import fi.vrk.xroad.catalog.persistence.entity.Organization; +import fi.vrk.xroad.catalog.persistence.entity.OrganizationDescription; +import fi.vrk.xroad.catalog.persistence.entity.OrganizationName; +import fi.vrk.xroad.catalog.persistence.entity.PhoneNumber; +import fi.vrk.xroad.catalog.persistence.entity.PostOffice; +import fi.vrk.xroad.catalog.persistence.entity.PostOfficeBox; +import fi.vrk.xroad.catalog.persistence.entity.PostOfficeBoxAddress; +import fi.vrk.xroad.catalog.persistence.entity.PostOfficeBoxAddressAdditionalInformation; +import fi.vrk.xroad.catalog.persistence.entity.PostOfficeBoxAddressMunicipality; +import fi.vrk.xroad.catalog.persistence.entity.PostOfficeBoxAddressMunicipalityName; +import fi.vrk.xroad.catalog.persistence.entity.RegisteredEntry; +import fi.vrk.xroad.catalog.persistence.entity.RegisteredOffice; +import fi.vrk.xroad.catalog.persistence.entity.Street; +import fi.vrk.xroad.catalog.persistence.entity.StreetAddress; +import fi.vrk.xroad.catalog.persistence.entity.StreetAddressAdditionalInformation; +import fi.vrk.xroad.catalog.persistence.entity.StreetAddressMunicipality; +import fi.vrk.xroad.catalog.persistence.entity.StreetAddressMunicipalityName; +import fi.vrk.xroad.catalog.persistence.entity.StreetAddressPostOffice; +import fi.vrk.xroad.catalog.persistence.entity.WebPage; import lombok.extern.slf4j.Slf4j; -import org.apache.http.conn.ssl.NoopHostnameVerifier; -import org.apache.http.conn.ssl.SSLConnectionSocketFactory; -import org.apache.http.conn.ssl.TrustStrategy; -import org.apache.http.impl.client.CloseableHttpClient; -import org.apache.http.impl.client.HttpClients; + +import org.apache.hc.client5.http.impl.classic.CloseableHttpClient; +import org.apache.hc.client5.http.impl.classic.HttpClients; +import org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager; +import org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManagerBuilder; +import org.apache.hc.client5.http.ssl.NoopHostnameVerifier; +import org.apache.hc.client5.http.ssl.SSLConnectionSocketFactory; +import org.apache.hc.core5.ssl.SSLContexts; +import org.apache.hc.core5.ssl.TrustStrategy; import org.json.JSONArray; import org.json.JSONObject; -import org.springframework.http.*; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpMethod; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; import org.springframework.web.client.RestTemplate; import javax.net.ssl.SSLContext; @@ -38,678 +77,685 @@ import java.util.List; @Slf4j -public class OrganizationUtil { - - private static final String TOTAL_RESULTS = "true"; - private static final String RESULTS_FROM = "0"; - private static final String REGISTRATION_FROM = "1970-01-01"; - private static final String WITH_BUSINESS_CODE = "with businessCode "; - private static final String DESCRIPTION = "description"; - private static final String LANGUAGE = "language"; - private static final String VALUE = "value"; - private static final String REGISTRATION_DATE = "registrationDate"; - private static final String END_DATE = "endDate"; - private static final String SOURCE = "source"; - private static final String VERSION = "version"; - private static final String ORDER = "order"; - - private OrganizationUtil() { - - } - - public static JSONObject getCompanies(ClientType clientType, - Integer fetchCompaniesLimit, - String url, - CatalogService catalogService) { - final String fetchCompaniesUrl = new StringBuilder() - .append(url) - .append("?totalResults=").append(TOTAL_RESULTS) - .append("&maxResults=").append(String.valueOf(fetchCompaniesLimit)) - .append("&resultsFrom=").append(RESULTS_FROM) - .append("&companyRegistrationFrom=").append(REGISTRATION_FROM) - .toString(); - JSONObject jsonObject = new JSONObject(); - try { - String ret = getResponseBody(fetchCompaniesUrl); - jsonObject = new JSONObject(ret); - return jsonObject; - } catch (KeyStoreException e) { - ErrorLog errorLog = MethodListUtil.createErrorLog(clientType, - "KeyStoreException occurred when fetching list of companies from url " + url, - "500"); - catalogService.saveErrorLog(errorLog); - log.error("KeyStoreException occurred when fetching companies from url {}", url); - } catch (NoSuchAlgorithmException e) { - ErrorLog errorLog = MethodListUtil.createErrorLog(clientType, - "NoSuchAlgorithmException occurred when fetching companies from url " + url, - "500"); - catalogService.saveErrorLog(errorLog); - log.error("NoSuchAlgorithmException occurred when fetching companies from url", url); - } catch (KeyManagementException e) { - ErrorLog errorLog = MethodListUtil.createErrorLog(clientType, - "KeyManagementException occurred when fetching companies from url " + url, - "500"); - catalogService.saveErrorLog(errorLog); - log.error("KeyManagementException occurred when fetching companies from url {}", url); - } catch (Exception e) { - ErrorLog errorLog = MethodListUtil.createErrorLog(clientType, - "Exception occurred when fetching companies from url " + url, - "500"); - catalogService.saveErrorLog(errorLog); - log.error("Exception occurred when fetching companies from url {}", url); - } - return jsonObject; - } - - public static JSONObject getCompany(ClientType clientType, String url, String businessCode, - CatalogService catalogService) { - final String fetchCompaniesUrl = new StringBuilder().append(url) - .append("/").append(businessCode).toString(); - JSONObject jsonObject = new JSONObject(); - try { - String ret = getResponseBody(fetchCompaniesUrl); - jsonObject = new JSONObject(ret); - return jsonObject; - } catch (KeyStoreException e) { - ErrorLog errorLog = MethodListUtil.createErrorLog(clientType, - "KeyStoreException occurred when fetching companies from url " + url - + WITH_BUSINESS_CODE + businessCode, - "500"); - catalogService.saveErrorLog(errorLog); - log.error("KeyStoreException occurred when fetching companies from url {} with businessCode {}", - url, businessCode); - } catch (NoSuchAlgorithmException e) { - ErrorLog errorLog = MethodListUtil.createErrorLog(clientType, - "NoSuchAlgorithmException occurred when fetching companies from url " + url - + WITH_BUSINESS_CODE + businessCode, - "500"); - catalogService.saveErrorLog(errorLog); - log.error("NoSuchAlgorithmException occurred when fetching companies from url {} with businessCode {}", - url, businessCode); - } catch (KeyManagementException e) { - ErrorLog errorLog = MethodListUtil.createErrorLog(clientType, - "KeyManagementException occurred when fetching companies from url " + url - + WITH_BUSINESS_CODE + businessCode, - "500"); - catalogService.saveErrorLog(errorLog); - log.error("KeyManagementException occurred when fetching companies from url {} with businessCode {}", - url, businessCode); - } catch (Exception e) { - ErrorLog errorLog = MethodListUtil.createErrorLog(clientType, - "Exception occurred when fetching companies from url " + url - + WITH_BUSINESS_CODE + businessCode, - "500"); - catalogService.saveErrorLog(errorLog); - log.error("Exception occurred when fetching companies from url {} with businessCode {}", url, - businessCode); - } - return jsonObject; - } - - public static List getOrganizationIdsList(ClientType clientType, String url, - Integer fetchOrganizationsLimit, CatalogService catalogService) - throws KeyStoreException, NoSuchAlgorithmException, KeyManagementException { - List idsList = new ArrayList<>(); - try { - String response = getResponseBody(url); - JSONObject json = new JSONObject(response); - JSONArray itemList = json.optJSONArray("itemList"); - int totalFetchAmount = itemList.length() > fetchOrganizationsLimit ? fetchOrganizationsLimit - : itemList.length(); - for (int i = 0; i < totalFetchAmount; i++) { - String id = itemList.optJSONObject(i).optString("id"); - idsList.add(id); - } - return idsList; - } catch (KeyStoreException e) { - ErrorLog errorLog = MethodListUtil.createErrorLog(clientType, - "KeyStoreException occurred when fetching organization ids with from url " - + url, - "500"); - catalogService.saveErrorLog(errorLog); - log.error("KeyStoreException occurred when fetching organization ids with from url {}", url); - } catch (NoSuchAlgorithmException e) { - ErrorLog errorLog = MethodListUtil.createErrorLog(clientType, - "NoSuchAlgorithmException occurred when fetching organization ids with from url " - + url, - "500"); - catalogService.saveErrorLog(errorLog); - log.error("NoSuchAlgorithmException occurred when fetching organization ids with from url {}", - url); - } catch (KeyManagementException e) { - ErrorLog errorLog = MethodListUtil.createErrorLog(clientType, - "KeyManagementException occurred when fetching organization ids with from url " - + url, - "500"); - catalogService.saveErrorLog(errorLog); - log.error("KeyManagementException occurred when fetching organizations with from url {}", url); - } catch (Exception e) { - log.error("Exception occurred when fetching organization ids: " + e.getMessage()); - ErrorLog errorLog = ErrorLog.builder() - .created(LocalDateTime.now()) - .message("Exception occurred when fetching organization ids: " + e.getMessage()) - .code("500") - .xRoadInstance(clientType.getId().getXRoadInstance()) - .memberClass(clientType.getId().getMemberClass()) - .memberCode(clientType.getId().getMemberCode()) - .groupCode(clientType.getId().getGroupCode()) - .securityCategoryCode(clientType.getId().getSecurityCategoryCode()) - .serverCode(clientType.getId().getServerCode()) - .serviceCode(clientType.getId().getServiceCode()) - .serviceVersion(clientType.getId().getServiceVersion()) - .subsystemCode(clientType.getId().getSubsystemCode()) - .build(); - catalogService.saveErrorLog(errorLog); - } - return idsList; - } - - public static Organization createOrganization(JSONObject jsonObject) { - return Organization.builder().businessCode(jsonObject.optString("businessCode")) - .guid(jsonObject.optString("id")) - .organizationType(jsonObject.optString("organizationType")) - .publishingStatus(jsonObject.optString("publishingStatus")) - .build(); - } - - public static List createEmails(JSONArray jsonArray) { - List emails = new ArrayList<>(); - for (int i = 0; i < jsonArray.length(); i++) { - emails.add(Email.builder() - .description(replaceUnicodeControlCharacters( - jsonArray.optJSONObject(i).optString(DESCRIPTION))) - .language(jsonArray.optJSONObject(i).optString(LANGUAGE)) - .value(replaceUnicodeControlCharacters( - jsonArray.optJSONObject(i).optString(VALUE))) - .build()); - } - return emails; - } - - public static List createWebPages(JSONArray jsonArray) { - List webPages = new ArrayList<>(); - for (int i = 0; i < jsonArray.length(); i++) { - webPages.add(WebPage.builder() - .url(replaceUnicodeControlCharacters( - jsonArray.optJSONObject(i).optString("url"))) - .language(jsonArray.optJSONObject(i).optString(LANGUAGE)) - .value(replaceUnicodeControlCharacters( - jsonArray.optJSONObject(i).optString(VALUE))) - .build()); - } - return webPages; - } - - public static List createDescriptions(JSONArray jsonArray) { - List organizationDescriptions = new ArrayList<>(); - for (int i = 0; i < jsonArray.length(); i++) { - organizationDescriptions.add(OrganizationDescription.builder() - .type(jsonArray.optJSONObject(i).optString("type")) - .language(jsonArray.optJSONObject(i).optString(LANGUAGE)) - .value(replaceUnicodeControlCharacters( - jsonArray.optJSONObject(i).optString(VALUE))) - .build()); - } - return organizationDescriptions; - } - - private static String replaceUnicodeControlCharacters(String input) { - return input.replaceAll( - "[\\x{0000}-\\x{0009}]|[\\x{000b}-\\x{000c}]|[\\x{000e}-\\x{000f}]|[\\x{0010}-\\x{001f}]", - ""); - } - - public static List createNames(JSONArray jsonArray) { - List organizationNames = new ArrayList<>(); - for (int i = 0; i < jsonArray.length(); i++) { - organizationNames.add(OrganizationName.builder() - .type(jsonArray.optJSONObject(i).optString("type")) - .language(jsonArray.optJSONObject(i).optString(LANGUAGE)) - .value(replaceUnicodeControlCharacters( - jsonArray.optJSONObject(i).optString(VALUE))) - .build()); - } - return organizationNames; - } - - public static List
createAddresses(JSONArray jsonArray) { - List
addresses = new ArrayList<>(); - for (int i = 0; i < jsonArray.length(); i++) { - addresses.add(Address.builder() - .type(jsonArray.optJSONObject(i).optString("type")) - .subType(jsonArray.optJSONObject(i).optString("subType")) - .country(jsonArray.optJSONObject(i).optString("country")).build()); - } - return addresses; - } - - public static StreetAddress createStreetAddress(JSONObject jsonObject) { - return StreetAddress.builder() - .streetNumber(jsonObject.optString("streetNumber")) - .postalCode(jsonObject.optString("postalCode")) - .latitude(jsonObject.optString("latitude")) - .longitude(jsonObject.optString("longitude")) - .coordinateState(jsonObject.optString("coordinateState")).build(); - } - - public static StreetAddressMunicipality createStreetAddressMunicipality(JSONObject jsonObject) { - return StreetAddressMunicipality.builder() - .code(jsonObject.optString("code")).build(); - } - - public static List createStreetAddressMunicipalityNames(JSONArray jsonArray) { - List streetAddressMunicipalityNames = new ArrayList<>(); - for (int i = 0; i < jsonArray.length(); i++) { - streetAddressMunicipalityNames.add(StreetAddressMunicipalityName.builder() - .language(jsonArray.optJSONObject(i).optString(LANGUAGE)) - .value(jsonArray.optJSONObject(i).optString(VALUE)).build()); - } - return streetAddressMunicipalityNames; - } - - public static List createStreetAddressAdditionalInformation( - JSONArray jsonArray) { - List additionalInformationList = new ArrayList<>(); - for (int i = 0; i < jsonArray.length(); i++) { - additionalInformationList.add(StreetAddressAdditionalInformation.builder() - .language(jsonArray.optJSONObject(i).optString(LANGUAGE)) - .value(replaceUnicodeControlCharacters( - jsonArray.optJSONObject(i).optString(VALUE))) - .build()); - } - return additionalInformationList; - } - - public static List createStreetAddressPostOffices(JSONArray jsonArray) { - List postOffices = new ArrayList<>(); - for (int i = 0; i < jsonArray.length(); i++) { - postOffices.add(StreetAddressPostOffice.builder() - .language(jsonArray.optJSONObject(i).optString(LANGUAGE)) - .value(jsonArray.optJSONObject(i).optString(VALUE)).build()); - } - return postOffices; - } - - public static List createStreets(JSONArray jsonArray) { - List streets = new ArrayList<>(); - for (int i = 0; i < jsonArray.length(); i++) { - streets.add(Street.builder() - .language(jsonArray.optJSONObject(i).optString(LANGUAGE)) - .value(jsonArray.optJSONObject(i).optString(VALUE)).build()); - } - return streets; - } - - public static PostOfficeBoxAddress createPostOfficeBoxAddress(JSONObject jsonObject) { - return PostOfficeBoxAddress.builder() - .postalCode(jsonObject.optString("postalCode")).build(); - } - - public static List createPostOfficeBoxAddressAdditionalInformation( - JSONArray jsonArray) { - List additionalInformationList = new ArrayList<>(); - for (int i = 0; i < jsonArray.length(); i++) { - additionalInformationList.add(PostOfficeBoxAddressAdditionalInformation.builder() - .language(jsonArray.optJSONObject(i).optString(LANGUAGE)) - .value(replaceUnicodeControlCharacters( - jsonArray.optJSONObject(i).optString(VALUE))) - .build()); - } - return additionalInformationList; - } - - public static List createPostOfficeBoxes(JSONArray jsonArray) { - List postOfficeBoxes = new ArrayList<>(); - for (int i = 0; i < jsonArray.length(); i++) { - postOfficeBoxes.add(PostOfficeBox.builder() - .language(jsonArray.optJSONObject(i).optString(LANGUAGE)) - .value(jsonArray.optJSONObject(i).optString(VALUE)).build()); - } - return postOfficeBoxes; - } - - public static List createPostOffice(JSONArray jsonArray) { - List postOffices = new ArrayList<>(); - for (int i = 0; i < jsonArray.length(); i++) { - postOffices.add(PostOffice.builder() - .language(jsonArray.optJSONObject(i).optString(LANGUAGE)) - .value(jsonArray.optJSONObject(i).optString(VALUE)).build()); - } - return postOffices; - } - - public static PostOfficeBoxAddressMunicipality createPostOfficeBoxAddressMunicipality(JSONObject jsonObject) { - return PostOfficeBoxAddressMunicipality.builder() - .code(jsonObject.optString("code")).build(); - } - - public static List createPostOfficeBoxAddressMunicipalityNames( - JSONArray jsonArray) { - List streetAddressMunicipalityNames = new ArrayList<>(); - for (int i = 0; i < jsonArray.length(); i++) { - streetAddressMunicipalityNames.add(PostOfficeBoxAddressMunicipalityName.builder() - .language(jsonArray.optJSONObject(i).optString(LANGUAGE)) - .value(jsonArray.optJSONObject(i).optString(VALUE)).build()); - } - return streetAddressMunicipalityNames; - } - - public static List createPhoneNumbers(JSONArray jsonArray) { - List phoneNumbers = new ArrayList<>(); - for (int i = 0; i < jsonArray.length(); i++) { - phoneNumbers.add(PhoneNumber.builder() - .additionalInformation(replaceUnicodeControlCharacters( - jsonArray.optJSONObject(i).optString("additionalInformation"))) - .number(jsonArray.optJSONObject(i).optString("number")) - .isFinnishServiceNumber( - jsonArray.optJSONObject(i).getBoolean("isFinnishServiceNumber")) - .prefixNumber(jsonArray.optJSONObject(i).optString("prefixNumber")) - .language(jsonArray.optJSONObject(i).optString(LANGUAGE)) - .chargeDescription(replaceUnicodeControlCharacters( - jsonArray.optJSONObject(i).optString("chargeDescription"))) - .serviceChargeType(jsonArray.optJSONObject(i).optString("serviceChargeType")) - .build()); - } - return phoneNumbers; - } - - public static Company createCompany(JSONObject jsonObject) { - return Company.builder().businessId(jsonObject.optString("businessId")) - .companyForm(jsonObject.optString("companyForm")) - .detailsUri(jsonObject.optString("detailsUri")) - .name(jsonObject.optString("name")) - .registrationDate(parseDateFromString(jsonObject.optString(REGISTRATION_DATE))) - .build(); - } - - public static List createBusinessAddresses(JSONArray jsonArray) { - List businessAddresses = new ArrayList<>(); - for (int i = 0; i < jsonArray.length(); i++) { - businessAddresses.add(BusinessAddress.builder() - .careOf(jsonArray.optJSONObject(i).optString("careOf")) - .city(jsonArray.optJSONObject(i).optString("city")) - .country(jsonArray.optJSONObject(i).optString("country")) - .language(jsonArray.optJSONObject(i).optString(LANGUAGE)) - .postCode(jsonArray.optJSONObject(i).optString("postCode")) - .source(jsonArray.optJSONObject(i).optLong(SOURCE)) - .type(jsonArray.optJSONObject(i).optLong("type")) - .version(jsonArray.optJSONObject(i).optLong(VERSION)) - .street(jsonArray.optJSONObject(i).optString("street")) - .registrationDate(parseDateFromString( - jsonArray.optJSONObject(i).optString(REGISTRATION_DATE))) - .endDate(parseDateFromString(jsonArray.optJSONObject(i).optString(END_DATE))) - .build()); - } - return businessAddresses; - } - - public static List createBusinessAuxiliaryNames(JSONArray jsonArray) { - List businessAuxiliaryNames = new ArrayList<>(); - for (int i = 0; i < jsonArray.length(); i++) { - businessAuxiliaryNames.add(BusinessAuxiliaryName.builder() - .language(jsonArray.optJSONObject(i).optString(LANGUAGE)) - .name(jsonArray.optJSONObject(i).optString("name")) - .ordering(jsonArray.optJSONObject(i).optLong(ORDER)) - .source(jsonArray.optJSONObject(i).optLong(SOURCE)) - .version(jsonArray.optJSONObject(i).optLong(VERSION)) - .registrationDate(parseDateFromString( - jsonArray.optJSONObject(i).optString(REGISTRATION_DATE))) - .endDate(parseDateFromString(jsonArray.optJSONObject(i).optString(END_DATE))) - .build()); - } - return businessAuxiliaryNames; - } - - public static List createBusinessIdChanges(JSONArray jsonArray) { - List businessIdChanges = new ArrayList<>(); - for (int i = 0; i < jsonArray.length(); i++) { - businessIdChanges.add(BusinessIdChange.builder() - .language(jsonArray.optJSONObject(i).optString(LANGUAGE)) - .change(jsonArray.optJSONObject(i).optString("change")) - .changeDate(jsonArray.optJSONObject(i).optString("changeDate")) - .description(jsonArray.optJSONObject(i).optString(DESCRIPTION)) - .reason(jsonArray.optJSONObject(i).optString("reason")) - .oldBusinessId(jsonArray.optJSONObject(i).optString("oldBusinessId")) - .newBusinessId(jsonArray.optJSONObject(i).optString("newBusinessId")) - .source(jsonArray.optJSONObject(i).optLong(SOURCE)) - .build()); - } - return businessIdChanges; - } - - public static List createBusinessLines(JSONArray jsonArray) { - List businessLines = new ArrayList<>(); - for (int i = 0; i < jsonArray.length(); i++) { - businessLines.add(BusinessLine.builder() - .language(jsonArray.optJSONObject(i).optString(LANGUAGE)) - .name(jsonArray.optJSONObject(i).optString("name")) - .ordering(jsonArray.optJSONObject(i).optLong(ORDER)) - .source(jsonArray.optJSONObject(i).optLong(SOURCE)) - .version(jsonArray.optJSONObject(i).optLong(VERSION)) - .registrationDate(parseDateFromString( - jsonArray.optJSONObject(i).optString(REGISTRATION_DATE))) - .endDate(parseDateFromString(jsonArray.optJSONObject(i).optString(END_DATE))) - .build()); - } - return businessLines; - } - - public static List createBusinessNames(JSONArray jsonArray) { - List businessNames = new ArrayList<>(); - for (int i = 0; i < jsonArray.length(); i++) { - businessNames.add(BusinessName.builder() - .language(jsonArray.optJSONObject(i).optString(LANGUAGE)) - .name(jsonArray.optJSONObject(i).optString("name")) - .ordering(jsonArray.optJSONObject(i).optLong(ORDER)) - .source(jsonArray.optJSONObject(i).optLong(SOURCE)) - .version(jsonArray.optJSONObject(i).optLong(VERSION)) - .registrationDate(parseDateFromString( - jsonArray.optJSONObject(i).optString(REGISTRATION_DATE))) - .endDate(parseDateFromString(jsonArray.optJSONObject(i).optString(END_DATE))) - .build()); - } - return businessNames; - } - - public static List createCompanyForms(JSONArray jsonArray) { - List companyForms = new ArrayList<>(); - for (int i = 0; i < jsonArray.length(); i++) { - companyForms.add(CompanyForm.builder() - .language(jsonArray.optJSONObject(i).optString(LANGUAGE)) - .name(jsonArray.optJSONObject(i).optString("name")) - .source(jsonArray.optJSONObject(i).optLong(SOURCE)) - .type(jsonArray.optJSONObject(i).optLong("type")) - .version(jsonArray.optJSONObject(i).optLong(VERSION)) - .registrationDate(parseDateFromString( - jsonArray.optJSONObject(i).optString(REGISTRATION_DATE))) - .endDate(parseDateFromString(jsonArray.optJSONObject(i).optString(END_DATE))) - .build()); - } - return companyForms; - } - - public static List createContactDetails(JSONArray jsonArray) { - List contactDetails = new ArrayList<>(); - for (int i = 0; i < jsonArray.length(); i++) { - contactDetails.add(ContactDetail.builder() - .version(jsonArray.optJSONObject(i).optLong(VERSION)) - .type(jsonArray.optJSONObject(i).optString("type")) - .source(jsonArray.optJSONObject(i).optLong(SOURCE)) - .language(jsonArray.optJSONObject(i).optString(LANGUAGE)) - .value(jsonArray.optJSONObject(i).optString(VALUE)) - .registrationDate(parseDateFromString( - jsonArray.optJSONObject(i).optString(REGISTRATION_DATE))) - .endDate(parseDateFromString(jsonArray.optJSONObject(i).optString(END_DATE))) - .build()); - } - return contactDetails; - } - - public static List createLanguages(JSONArray jsonArray) { - List languages = new ArrayList<>(); - for (int i = 0; i < jsonArray.length(); i++) { - languages.add(Language.builder() - .version(jsonArray.optJSONObject(i).optLong(VERSION)) - .source(jsonArray.optJSONObject(i).optLong(SOURCE)) - .language(jsonArray.optJSONObject(i).optString(LANGUAGE)) - .name(jsonArray.optJSONObject(i).optString("name")) - .registrationDate(parseDateFromString( - jsonArray.optJSONObject(i).optString(REGISTRATION_DATE))) - .endDate(parseDateFromString(jsonArray.optJSONObject(i).optString(END_DATE))) - .build()); - } - return languages; - } - - public static List createLiquidations(JSONArray jsonArray) { - List liquidations = new ArrayList<>(); - for (int i = 0; i < jsonArray.length(); i++) { - liquidations.add(Liquidation.builder() - .version(jsonArray.optJSONObject(i).optLong(VERSION)) - .source(jsonArray.optJSONObject(i).optLong(SOURCE)) - .language(jsonArray.optJSONObject(i).optString(LANGUAGE)) - .name(jsonArray.optJSONObject(i).optString("name")) - .type(jsonArray.optJSONObject(i).optLong("type")) - .registrationDate(LocalDateTime.now()) - .endDate(LocalDateTime.now()) - .build()); - } - return liquidations; - } - - public static List createRegisteredEntries(JSONArray jsonArray) { - List registeredEntries = new ArrayList<>(); - for (int i = 0; i < jsonArray.length(); i++) { - registeredEntries.add(RegisteredEntry.builder() - .language(jsonArray.optJSONObject(i).optString(LANGUAGE)) - .description(jsonArray.optJSONObject(i).optString(DESCRIPTION)) - .register(jsonArray.optJSONObject(i).optLong("register")) - .status(jsonArray.optJSONObject(i).optLong("status")) - .authority(jsonArray.optJSONObject(i).optLong("authority")) - .registrationDate(parseDateFromString( - jsonArray.optJSONObject(i).optString(REGISTRATION_DATE))) - .endDate(parseDateFromString(jsonArray.optJSONObject(i).optString(END_DATE))) - .build()); - } - return registeredEntries; - } - - public static List createRegisteredOffices(JSONArray jsonArray) { - List registeredOffices = new ArrayList<>(); - for (int i = 0; i < jsonArray.length(); i++) { - registeredOffices.add(RegisteredOffice.builder() - .source(jsonArray.optJSONObject(i).optLong(SOURCE)) - .language(jsonArray.optJSONObject(i).optString(LANGUAGE)) - .name(jsonArray.optJSONObject(i).optString("name")) - .ordering(jsonArray.optJSONObject(i).optLong(ORDER)) - .version(jsonArray.optJSONObject(i).optLong(VERSION)) - .registrationDate(parseDateFromString( - jsonArray.optJSONObject(i).optString(REGISTRATION_DATE))) - .endDate(parseDateFromString(jsonArray.optJSONObject(i).optString(END_DATE))) - .build()); - } - return registeredOffices; - } - - private static LocalDateTime parseDateFromString(String dateValue) { - if (dateValue != null && !dateValue.isEmpty()) { - return LocalDate.parse(dateValue).atStartOfDay(); - } - return null; - } - - public static JSONArray getDataByIds(ClientType clientType, List guids, String url, - CatalogService catalogService) { - String requestGuids = ""; - for (int i = 0; i < guids.size(); i++) { - requestGuids += guids.get(i); - if (i < (guids.size() - 1)) { - requestGuids += ","; - } - } - - final String listOrganizationsUrl = new StringBuilder().append(url) - .append("/list?guids=").append(requestGuids).toString(); - - JSONArray itemList = new JSONArray(); - try { - String ret = getResponseBody(listOrganizationsUrl); - JSONObject json = new JSONObject("{\"items\":" + ret + "}"); - itemList = json.optJSONArray("items"); - return itemList; - } catch (KeyStoreException e) { - ErrorLog errorLog = MethodListUtil.createErrorLog(clientType, - "KeyStoreException occurred when fetching organizations with from url " + url, - "500"); - catalogService.saveErrorLog(errorLog); - log.error("KeyStoreException occurred when fetching organizations with from url {}", url); - } catch (NoSuchAlgorithmException e) { - ErrorLog errorLog = MethodListUtil.createErrorLog(clientType, - "NoSuchAlgorithmException occurred when fetching organizations with from url " - + url, - "500"); - catalogService.saveErrorLog(errorLog); - log.error("NoSuchAlgorithmException occurred when fetching organizations with from url {}", - url); - } catch (KeyManagementException e) { - ErrorLog errorLog = MethodListUtil.createErrorLog(clientType, - "KeyManagementException occurred when fetching organizations with from url " - + url, - "500"); - catalogService.saveErrorLog(errorLog); - log.error("KeyManagementException occurred when fetching organizations with from url {}", url); - } catch (Exception e) { - log.error("Exception occurred when fetching organization data: " + e.getMessage()); - ErrorLog errorLog = ErrorLog.builder() - .created(LocalDateTime.now()) - .message("Exception occurred when fetching organization data: " - + e.getMessage()) - .code("500") - .xRoadInstance(clientType.getId().getXRoadInstance()) - .memberClass(clientType.getId().getMemberClass()) - .memberCode(clientType.getId().getMemberCode()) - .groupCode(clientType.getId().getGroupCode()) - .securityCategoryCode(clientType.getId().getSecurityCategoryCode()) - .serverCode(clientType.getId().getServerCode()) - .serviceCode(clientType.getId().getServiceCode()) - .serviceVersion(clientType.getId().getServiceVersion()) - .subsystemCode(clientType.getId().getSubsystemCode()) - .build(); - catalogService.saveErrorLog(errorLog); - } - return itemList; - } - - public static String getResponseBody(String url) - throws KeyStoreException, NoSuchAlgorithmException, KeyManagementException { - HttpHeaders headers = new HttpHeaders(); - List mediaTypes = new ArrayList<>(); - mediaTypes.add(MediaType.APPLICATION_JSON); - headers.setAccept(mediaTypes); - final HttpEntity entity = new HttpEntity<>(headers); - RestTemplate restTemplate = createTemplate(); - ResponseEntity response = restTemplate.exchange(url, HttpMethod.GET, entity, String.class); - - return response.getBody(); - } - - private static RestTemplate createTemplate() - throws KeyStoreException, NoSuchAlgorithmException, KeyManagementException { - TrustStrategy acceptingTrustStrategy = new TrustStrategy() { - @Override - public boolean isTrusted(X509Certificate[] x509Certificates, String s) - throws CertificateException { - return true; - } - }; - SSLContext sslContext = org.apache.http.ssl.SSLContexts.custom() - .loadTrustMaterial(null, acceptingTrustStrategy).build(); - SSLConnectionSocketFactory csf = new SSLConnectionSocketFactory(sslContext, new NoopHostnameVerifier()); - CloseableHttpClient httpClient = HttpClients.custom().setSSLSocketFactory(csf).build(); - HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(); - requestFactory.setHttpClient(httpClient); - RestTemplate restTemplate = new RestTemplate(requestFactory); - - return restTemplate; - } +public final class OrganizationUtil { + + private static final String TOTAL_RESULTS = "true"; + private static final String RESULTS_FROM = "0"; + private static final String REGISTRATION_FROM = "1970-01-01"; + private static final String WITH_BUSINESS_CODE = "with businessCode "; + private static final String DESCRIPTION = "description"; + private static final String LANGUAGE = "language"; + private static final String VALUE = "value"; + private static final String REGISTRATION_DATE = "registrationDate"; + private static final String END_DATE = "endDate"; + private static final String SOURCE = "source"; + private static final String VERSION = "version"; + private static final String ORDER = "order"; + + private OrganizationUtil() { + + } + + public static JSONObject getCompanies(ClientType clientType, + Integer fetchCompaniesLimit, + String url, + CatalogService catalogService) { + final String fetchCompaniesUrl = new StringBuilder() + .append(url) + .append("?totalResults=").append(TOTAL_RESULTS) + .append("&maxResults=").append(String.valueOf(fetchCompaniesLimit)) + .append("&resultsFrom=").append(RESULTS_FROM) + .append("&companyRegistrationFrom=").append(REGISTRATION_FROM) + .toString(); + JSONObject jsonObject = new JSONObject(); + try { + String ret = getResponseBody(fetchCompaniesUrl); + jsonObject = new JSONObject(ret); + return jsonObject; + } catch (KeyStoreException e) { + ErrorLog errorLog = MethodListUtil.createErrorLog(clientType, + "KeyStoreException occurred when fetching list of companies from url " + url, + "500"); + catalogService.saveErrorLog(errorLog); + log.error("KeyStoreException occurred when fetching companies from url {}", url); + } catch (NoSuchAlgorithmException e) { + ErrorLog errorLog = MethodListUtil.createErrorLog(clientType, + "NoSuchAlgorithmException occurred when fetching companies from url " + url, + "500"); + catalogService.saveErrorLog(errorLog); + log.error("NoSuchAlgorithmException occurred when fetching companies from url", url); + } catch (KeyManagementException e) { + ErrorLog errorLog = MethodListUtil.createErrorLog(clientType, + "KeyManagementException occurred when fetching companies from url " + url, + "500"); + catalogService.saveErrorLog(errorLog); + log.error("KeyManagementException occurred when fetching companies from url {}", url); + } catch (Exception e) { + ErrorLog errorLog = MethodListUtil.createErrorLog(clientType, + "Exception occurred when fetching companies from url " + url, + "500"); + catalogService.saveErrorLog(errorLog); + log.error("Exception occurred when fetching companies from url {}", url); + } + return jsonObject; + } + + public static JSONObject getCompany(ClientType clientType, String url, String businessCode, + CatalogService catalogService) { + final String fetchCompaniesUrl = new StringBuilder().append(url) + .append("/").append(businessCode).toString(); + JSONObject jsonObject = new JSONObject(); + try { + String ret = getResponseBody(fetchCompaniesUrl); + jsonObject = new JSONObject(ret); + return jsonObject; + } catch (KeyStoreException e) { + ErrorLog errorLog = MethodListUtil.createErrorLog(clientType, + "KeyStoreException occurred when fetching companies from url " + url + + WITH_BUSINESS_CODE + businessCode, + "500"); + catalogService.saveErrorLog(errorLog); + log.error("KeyStoreException occurred when fetching companies from url {} with businessCode {}", + url, businessCode); + } catch (NoSuchAlgorithmException e) { + ErrorLog errorLog = MethodListUtil.createErrorLog(clientType, + "NoSuchAlgorithmException occurred when fetching companies from url " + url + + WITH_BUSINESS_CODE + businessCode, + "500"); + catalogService.saveErrorLog(errorLog); + log.error("NoSuchAlgorithmException occurred when fetching companies from url {} with businessCode {}", + url, businessCode); + } catch (KeyManagementException e) { + ErrorLog errorLog = MethodListUtil.createErrorLog(clientType, + "KeyManagementException occurred when fetching companies from url " + url + + WITH_BUSINESS_CODE + businessCode, + "500"); + catalogService.saveErrorLog(errorLog); + log.error("KeyManagementException occurred when fetching companies from url {} with businessCode {}", + url, businessCode); + } catch (Exception e) { + ErrorLog errorLog = MethodListUtil.createErrorLog(clientType, + "Exception occurred when fetching companies from url " + url + + WITH_BUSINESS_CODE + businessCode, + "500"); + catalogService.saveErrorLog(errorLog); + log.error("Exception occurred when fetching companies from url {} with businessCode {}", url, + businessCode); + } + return jsonObject; + } + + public static List getOrganizationIdsList(ClientType clientType, String url, + Integer fetchOrganizationsLimit, CatalogService catalogService) + throws KeyStoreException, NoSuchAlgorithmException, KeyManagementException { + List idsList = new ArrayList<>(); + try { + String response = getResponseBody(url); + JSONObject json = new JSONObject(response); + JSONArray itemList = json.optJSONArray("itemList"); + int totalFetchAmount = itemList.length() > fetchOrganizationsLimit ? fetchOrganizationsLimit + : itemList.length(); + for (int i = 0; i < totalFetchAmount; i++) { + String id = itemList.optJSONObject(i).optString("id"); + idsList.add(id); + } + return idsList; + } catch (KeyStoreException e) { + ErrorLog errorLog = MethodListUtil.createErrorLog(clientType, + "KeyStoreException occurred when fetching organization ids with from url " + + url, + "500"); + catalogService.saveErrorLog(errorLog); + log.error("KeyStoreException occurred when fetching organization ids with from url {}", url); + } catch (NoSuchAlgorithmException e) { + ErrorLog errorLog = MethodListUtil.createErrorLog(clientType, + "NoSuchAlgorithmException occurred when fetching organization ids with from url " + + url, + "500"); + catalogService.saveErrorLog(errorLog); + log.error("NoSuchAlgorithmException occurred when fetching organization ids with from url {}", + url); + } catch (KeyManagementException e) { + ErrorLog errorLog = MethodListUtil.createErrorLog(clientType, + "KeyManagementException occurred when fetching organization ids with from url " + + url, + "500"); + catalogService.saveErrorLog(errorLog); + log.error("KeyManagementException occurred when fetching organizations with from url {}", url); + } catch (Exception e) { + log.error("Exception occurred when fetching organization ids: " + e.getMessage()); + ErrorLog errorLog = ErrorLog.builder() + .created(LocalDateTime.now()) + .message("Exception occurred when fetching organization ids: " + e.getMessage()) + .code("500") + .xRoadInstance(clientType.getId().getXRoadInstance()) + .memberClass(clientType.getId().getMemberClass()) + .memberCode(clientType.getId().getMemberCode()) + .groupCode(clientType.getId().getGroupCode()) + .securityCategoryCode(clientType.getId().getSecurityCategoryCode()) + .serverCode(clientType.getId().getServerCode()) + .serviceCode(clientType.getId().getServiceCode()) + .serviceVersion(clientType.getId().getServiceVersion()) + .subsystemCode(clientType.getId().getSubsystemCode()) + .build(); + catalogService.saveErrorLog(errorLog); + } + return idsList; + } + + public static Organization createOrganization(JSONObject jsonObject) { + return Organization.builder().businessCode(jsonObject.optString("businessCode")) + .guid(jsonObject.optString("id")) + .organizationType(jsonObject.optString("organizationType")) + .publishingStatus(jsonObject.optString("publishingStatus")) + .build(); + } + + public static List createEmails(JSONArray jsonArray) { + List emails = new ArrayList<>(); + for (int i = 0; i < jsonArray.length(); i++) { + emails.add(Email.builder() + .description(replaceUnicodeControlCharacters( + jsonArray.optJSONObject(i).optString(DESCRIPTION))) + .language(jsonArray.optJSONObject(i).optString(LANGUAGE)) + .value(replaceUnicodeControlCharacters( + jsonArray.optJSONObject(i).optString(VALUE))) + .build()); + } + return emails; + } + + public static List createWebPages(JSONArray jsonArray) { + List webPages = new ArrayList<>(); + for (int i = 0; i < jsonArray.length(); i++) { + webPages.add(WebPage.builder() + .url(replaceUnicodeControlCharacters( + jsonArray.optJSONObject(i).optString("url"))) + .language(jsonArray.optJSONObject(i).optString(LANGUAGE)) + .value(replaceUnicodeControlCharacters( + jsonArray.optJSONObject(i).optString(VALUE))) + .build()); + } + return webPages; + } + + public static List createDescriptions(JSONArray jsonArray) { + List organizationDescriptions = new ArrayList<>(); + for (int i = 0; i < jsonArray.length(); i++) { + organizationDescriptions.add(OrganizationDescription.builder() + .type(jsonArray.optJSONObject(i).optString("type")) + .language(jsonArray.optJSONObject(i).optString(LANGUAGE)) + .value(replaceUnicodeControlCharacters( + jsonArray.optJSONObject(i).optString(VALUE))) + .build()); + } + return organizationDescriptions; + } + + private static String replaceUnicodeControlCharacters(String input) { + return input.replaceAll( + "[\\x{0000}-\\x{0009}]|[\\x{000b}-\\x{000c}]|[\\x{000e}-\\x{000f}]|[\\x{0010}-\\x{001f}]", + ""); + } + + public static List createNames(JSONArray jsonArray) { + List organizationNames = new ArrayList<>(); + for (int i = 0; i < jsonArray.length(); i++) { + organizationNames.add(OrganizationName.builder() + .type(jsonArray.optJSONObject(i).optString("type")) + .language(jsonArray.optJSONObject(i).optString(LANGUAGE)) + .value(replaceUnicodeControlCharacters( + jsonArray.optJSONObject(i).optString(VALUE))) + .build()); + } + return organizationNames; + } + + public static List
createAddresses(JSONArray jsonArray) { + List
addresses = new ArrayList<>(); + for (int i = 0; i < jsonArray.length(); i++) { + addresses.add(Address.builder() + .type(jsonArray.optJSONObject(i).optString("type")) + .subType(jsonArray.optJSONObject(i).optString("subType")) + .country(jsonArray.optJSONObject(i).optString("country")).build()); + } + return addresses; + } + + public static StreetAddress createStreetAddress(JSONObject jsonObject) { + return StreetAddress.builder() + .streetNumber(jsonObject.optString("streetNumber")) + .postalCode(jsonObject.optString("postalCode")) + .latitude(jsonObject.optString("latitude")) + .longitude(jsonObject.optString("longitude")) + .coordinateState(jsonObject.optString("coordinateState")).build(); + } + + public static StreetAddressMunicipality createStreetAddressMunicipality(JSONObject jsonObject) { + return StreetAddressMunicipality.builder() + .code(jsonObject.optString("code")).build(); + } + + public static List createStreetAddressMunicipalityNames(JSONArray jsonArray) { + List streetAddressMunicipalityNames = new ArrayList<>(); + for (int i = 0; i < jsonArray.length(); i++) { + streetAddressMunicipalityNames.add(StreetAddressMunicipalityName.builder() + .language(jsonArray.optJSONObject(i).optString(LANGUAGE)) + .value(jsonArray.optJSONObject(i).optString(VALUE)).build()); + } + return streetAddressMunicipalityNames; + } + + public static List createStreetAddressAdditionalInformation( + JSONArray jsonArray) { + List additionalInformationList = new ArrayList<>(); + for (int i = 0; i < jsonArray.length(); i++) { + additionalInformationList.add(StreetAddressAdditionalInformation.builder() + .language(jsonArray.optJSONObject(i).optString(LANGUAGE)) + .value(replaceUnicodeControlCharacters( + jsonArray.optJSONObject(i).optString(VALUE))) + .build()); + } + return additionalInformationList; + } + + public static List createStreetAddressPostOffices(JSONArray jsonArray) { + List postOffices = new ArrayList<>(); + for (int i = 0; i < jsonArray.length(); i++) { + postOffices.add(StreetAddressPostOffice.builder() + .language(jsonArray.optJSONObject(i).optString(LANGUAGE)) + .value(jsonArray.optJSONObject(i).optString(VALUE)).build()); + } + return postOffices; + } + + public static List createStreets(JSONArray jsonArray) { + List streets = new ArrayList<>(); + for (int i = 0; i < jsonArray.length(); i++) { + streets.add(Street.builder() + .language(jsonArray.optJSONObject(i).optString(LANGUAGE)) + .value(jsonArray.optJSONObject(i).optString(VALUE)).build()); + } + return streets; + } + + public static PostOfficeBoxAddress createPostOfficeBoxAddress(JSONObject jsonObject) { + return PostOfficeBoxAddress.builder() + .postalCode(jsonObject.optString("postalCode")).build(); + } + + public static List createPostOfficeBoxAddressAdditionalInformation( + JSONArray jsonArray) { + List additionalInformationList = new ArrayList<>(); + for (int i = 0; i < jsonArray.length(); i++) { + additionalInformationList.add(PostOfficeBoxAddressAdditionalInformation.builder() + .language(jsonArray.optJSONObject(i).optString(LANGUAGE)) + .value(replaceUnicodeControlCharacters( + jsonArray.optJSONObject(i).optString(VALUE))) + .build()); + } + return additionalInformationList; + } + + public static List createPostOfficeBoxes(JSONArray jsonArray) { + List postOfficeBoxes = new ArrayList<>(); + for (int i = 0; i < jsonArray.length(); i++) { + postOfficeBoxes.add(PostOfficeBox.builder() + .language(jsonArray.optJSONObject(i).optString(LANGUAGE)) + .value(jsonArray.optJSONObject(i).optString(VALUE)).build()); + } + return postOfficeBoxes; + } + + public static List createPostOffice(JSONArray jsonArray) { + List postOffices = new ArrayList<>(); + for (int i = 0; i < jsonArray.length(); i++) { + postOffices.add(PostOffice.builder() + .language(jsonArray.optJSONObject(i).optString(LANGUAGE)) + .value(jsonArray.optJSONObject(i).optString(VALUE)).build()); + } + return postOffices; + } + + public static PostOfficeBoxAddressMunicipality createPostOfficeBoxAddressMunicipality(JSONObject jsonObject) { + return PostOfficeBoxAddressMunicipality.builder() + .code(jsonObject.optString("code")).build(); + } + + public static List createPostOfficeBoxAddressMunicipalityNames( + JSONArray jsonArray) { + List streetAddressMunicipalityNames = new ArrayList<>(); + for (int i = 0; i < jsonArray.length(); i++) { + streetAddressMunicipalityNames.add(PostOfficeBoxAddressMunicipalityName.builder() + .language(jsonArray.optJSONObject(i).optString(LANGUAGE)) + .value(jsonArray.optJSONObject(i).optString(VALUE)).build()); + } + return streetAddressMunicipalityNames; + } + + public static List createPhoneNumbers(JSONArray jsonArray) { + List phoneNumbers = new ArrayList<>(); + for (int i = 0; i < jsonArray.length(); i++) { + phoneNumbers.add(PhoneNumber.builder() + .additionalInformation(replaceUnicodeControlCharacters( + jsonArray.optJSONObject(i).optString("additionalInformation"))) + .number(jsonArray.optJSONObject(i).optString("number")) + .isFinnishServiceNumber( + jsonArray.optJSONObject(i).getBoolean("isFinnishServiceNumber")) + .prefixNumber(jsonArray.optJSONObject(i).optString("prefixNumber")) + .language(jsonArray.optJSONObject(i).optString(LANGUAGE)) + .chargeDescription(replaceUnicodeControlCharacters( + jsonArray.optJSONObject(i).optString("chargeDescription"))) + .serviceChargeType(jsonArray.optJSONObject(i).optString("serviceChargeType")) + .build()); + } + return phoneNumbers; + } + + public static Company createCompany(JSONObject jsonObject) { + return Company.builder().businessId(jsonObject.optString("businessId")) + .companyForm(jsonObject.optString("companyForm")) + .detailsUri(jsonObject.optString("detailsUri")) + .name(jsonObject.optString("name")) + .registrationDate(parseDateFromString(jsonObject.optString(REGISTRATION_DATE))) + .build(); + } + + public static List createBusinessAddresses(JSONArray jsonArray) { + List businessAddresses = new ArrayList<>(); + for (int i = 0; i < jsonArray.length(); i++) { + businessAddresses.add(BusinessAddress.builder() + .careOf(jsonArray.optJSONObject(i).optString("careOf")) + .city(jsonArray.optJSONObject(i).optString("city")) + .country(jsonArray.optJSONObject(i).optString("country")) + .language(jsonArray.optJSONObject(i).optString(LANGUAGE)) + .postCode(jsonArray.optJSONObject(i).optString("postCode")) + .source(jsonArray.optJSONObject(i).optLong(SOURCE)) + .type(jsonArray.optJSONObject(i).optLong("type")) + .version(jsonArray.optJSONObject(i).optLong(VERSION)) + .street(jsonArray.optJSONObject(i).optString("street")) + .registrationDate(parseDateFromString( + jsonArray.optJSONObject(i).optString(REGISTRATION_DATE))) + .endDate(parseDateFromString(jsonArray.optJSONObject(i).optString(END_DATE))) + .build()); + } + return businessAddresses; + } + + public static List createBusinessAuxiliaryNames(JSONArray jsonArray) { + List businessAuxiliaryNames = new ArrayList<>(); + for (int i = 0; i < jsonArray.length(); i++) { + businessAuxiliaryNames.add(BusinessAuxiliaryName.builder() + .language(jsonArray.optJSONObject(i).optString(LANGUAGE)) + .name(jsonArray.optJSONObject(i).optString("name")) + .ordering(jsonArray.optJSONObject(i).optLong(ORDER)) + .source(jsonArray.optJSONObject(i).optLong(SOURCE)) + .version(jsonArray.optJSONObject(i).optLong(VERSION)) + .registrationDate(parseDateFromString( + jsonArray.optJSONObject(i).optString(REGISTRATION_DATE))) + .endDate(parseDateFromString(jsonArray.optJSONObject(i).optString(END_DATE))) + .build()); + } + return businessAuxiliaryNames; + } + + public static List createBusinessIdChanges(JSONArray jsonArray) { + List businessIdChanges = new ArrayList<>(); + for (int i = 0; i < jsonArray.length(); i++) { + businessIdChanges.add(BusinessIdChange.builder() + .language(jsonArray.optJSONObject(i).optString(LANGUAGE)) + .change(jsonArray.optJSONObject(i).optString("change")) + .changeDate(jsonArray.optJSONObject(i).optString("changeDate")) + .description(jsonArray.optJSONObject(i).optString(DESCRIPTION)) + .reason(jsonArray.optJSONObject(i).optString("reason")) + .oldBusinessId(jsonArray.optJSONObject(i).optString("oldBusinessId")) + .newBusinessId(jsonArray.optJSONObject(i).optString("newBusinessId")) + .source(jsonArray.optJSONObject(i).optLong(SOURCE)) + .build()); + } + return businessIdChanges; + } + + public static List createBusinessLines(JSONArray jsonArray) { + List businessLines = new ArrayList<>(); + for (int i = 0; i < jsonArray.length(); i++) { + businessLines.add(BusinessLine.builder() + .language(jsonArray.optJSONObject(i).optString(LANGUAGE)) + .name(jsonArray.optJSONObject(i).optString("name")) + .ordering(jsonArray.optJSONObject(i).optLong(ORDER)) + .source(jsonArray.optJSONObject(i).optLong(SOURCE)) + .version(jsonArray.optJSONObject(i).optLong(VERSION)) + .registrationDate(parseDateFromString( + jsonArray.optJSONObject(i).optString(REGISTRATION_DATE))) + .endDate(parseDateFromString(jsonArray.optJSONObject(i).optString(END_DATE))) + .build()); + } + return businessLines; + } + + public static List createBusinessNames(JSONArray jsonArray) { + List businessNames = new ArrayList<>(); + for (int i = 0; i < jsonArray.length(); i++) { + businessNames.add(BusinessName.builder() + .language(jsonArray.optJSONObject(i).optString(LANGUAGE)) + .name(jsonArray.optJSONObject(i).optString("name")) + .ordering(jsonArray.optJSONObject(i).optLong(ORDER)) + .source(jsonArray.optJSONObject(i).optLong(SOURCE)) + .version(jsonArray.optJSONObject(i).optLong(VERSION)) + .registrationDate(parseDateFromString( + jsonArray.optJSONObject(i).optString(REGISTRATION_DATE))) + .endDate(parseDateFromString(jsonArray.optJSONObject(i).optString(END_DATE))) + .build()); + } + return businessNames; + } + + public static List createCompanyForms(JSONArray jsonArray) { + List companyForms = new ArrayList<>(); + for (int i = 0; i < jsonArray.length(); i++) { + companyForms.add(CompanyForm.builder() + .language(jsonArray.optJSONObject(i).optString(LANGUAGE)) + .name(jsonArray.optJSONObject(i).optString("name")) + .source(jsonArray.optJSONObject(i).optLong(SOURCE)) + .type(jsonArray.optJSONObject(i).optLong("type")) + .version(jsonArray.optJSONObject(i).optLong(VERSION)) + .registrationDate(parseDateFromString( + jsonArray.optJSONObject(i).optString(REGISTRATION_DATE))) + .endDate(parseDateFromString(jsonArray.optJSONObject(i).optString(END_DATE))) + .build()); + } + return companyForms; + } + + public static List createContactDetails(JSONArray jsonArray) { + List contactDetails = new ArrayList<>(); + for (int i = 0; i < jsonArray.length(); i++) { + contactDetails.add(ContactDetail.builder() + .version(jsonArray.optJSONObject(i).optLong(VERSION)) + .type(jsonArray.optJSONObject(i).optString("type")) + .source(jsonArray.optJSONObject(i).optLong(SOURCE)) + .language(jsonArray.optJSONObject(i).optString(LANGUAGE)) + .value(jsonArray.optJSONObject(i).optString(VALUE)) + .registrationDate(parseDateFromString( + jsonArray.optJSONObject(i).optString(REGISTRATION_DATE))) + .endDate(parseDateFromString(jsonArray.optJSONObject(i).optString(END_DATE))) + .build()); + } + return contactDetails; + } + + public static List createLanguages(JSONArray jsonArray) { + List languages = new ArrayList<>(); + for (int i = 0; i < jsonArray.length(); i++) { + languages.add(Language.builder() + .version(jsonArray.optJSONObject(i).optLong(VERSION)) + .source(jsonArray.optJSONObject(i).optLong(SOURCE)) + .language(jsonArray.optJSONObject(i).optString(LANGUAGE)) + .name(jsonArray.optJSONObject(i).optString("name")) + .registrationDate(parseDateFromString( + jsonArray.optJSONObject(i).optString(REGISTRATION_DATE))) + .endDate(parseDateFromString(jsonArray.optJSONObject(i).optString(END_DATE))) + .build()); + } + return languages; + } + + public static List createLiquidations(JSONArray jsonArray) { + List liquidations = new ArrayList<>(); + for (int i = 0; i < jsonArray.length(); i++) { + liquidations.add(Liquidation.builder() + .version(jsonArray.optJSONObject(i).optLong(VERSION)) + .source(jsonArray.optJSONObject(i).optLong(SOURCE)) + .language(jsonArray.optJSONObject(i).optString(LANGUAGE)) + .name(jsonArray.optJSONObject(i).optString("name")) + .type(jsonArray.optJSONObject(i).optLong("type")) + .registrationDate(LocalDateTime.now()) + .endDate(LocalDateTime.now()) + .build()); + } + return liquidations; + } + + public static List createRegisteredEntries(JSONArray jsonArray) { + List registeredEntries = new ArrayList<>(); + for (int i = 0; i < jsonArray.length(); i++) { + registeredEntries.add(RegisteredEntry.builder() + .language(jsonArray.optJSONObject(i).optString(LANGUAGE)) + .description(jsonArray.optJSONObject(i).optString(DESCRIPTION)) + .register(jsonArray.optJSONObject(i).optLong("register")) + .status(jsonArray.optJSONObject(i).optLong("status")) + .authority(jsonArray.optJSONObject(i).optLong("authority")) + .registrationDate(parseDateFromString( + jsonArray.optJSONObject(i).optString(REGISTRATION_DATE))) + .endDate(parseDateFromString(jsonArray.optJSONObject(i).optString(END_DATE))) + .build()); + } + return registeredEntries; + } + + public static List createRegisteredOffices(JSONArray jsonArray) { + List registeredOffices = new ArrayList<>(); + for (int i = 0; i < jsonArray.length(); i++) { + registeredOffices.add(RegisteredOffice.builder() + .source(jsonArray.optJSONObject(i).optLong(SOURCE)) + .language(jsonArray.optJSONObject(i).optString(LANGUAGE)) + .name(jsonArray.optJSONObject(i).optString("name")) + .ordering(jsonArray.optJSONObject(i).optLong(ORDER)) + .version(jsonArray.optJSONObject(i).optLong(VERSION)) + .registrationDate(parseDateFromString( + jsonArray.optJSONObject(i).optString(REGISTRATION_DATE))) + .endDate(parseDateFromString(jsonArray.optJSONObject(i).optString(END_DATE))) + .build()); + } + return registeredOffices; + } + + private static LocalDateTime parseDateFromString(String dateValue) { + if (dateValue != null && !dateValue.isEmpty()) { + return LocalDate.parse(dateValue).atStartOfDay(); + } + return null; + } + + public static JSONArray getDataByIds(ClientType clientType, List guids, String url, + CatalogService catalogService) { + String requestGuids = ""; + for (int i = 0; i < guids.size(); i++) { + requestGuids += guids.get(i); + if (i < (guids.size() - 1)) { + requestGuids += ","; + } + } + + final String listOrganizationsUrl = new StringBuilder().append(url) + .append("/list?guids=").append(requestGuids).toString(); + + JSONArray itemList = new JSONArray(); + try { + String ret = getResponseBody(listOrganizationsUrl); + JSONObject json = new JSONObject("{\"items\":" + ret + "}"); + itemList = json.optJSONArray("items"); + return itemList; + } catch (KeyStoreException e) { + ErrorLog errorLog = MethodListUtil.createErrorLog(clientType, + "KeyStoreException occurred when fetching organizations with from url " + url, + "500"); + catalogService.saveErrorLog(errorLog); + log.error("KeyStoreException occurred when fetching organizations with from url {}", url); + } catch (NoSuchAlgorithmException e) { + ErrorLog errorLog = MethodListUtil.createErrorLog(clientType, + "NoSuchAlgorithmException occurred when fetching organizations with from url " + + url, + "500"); + catalogService.saveErrorLog(errorLog); + log.error("NoSuchAlgorithmException occurred when fetching organizations with from url {}", + url); + } catch (KeyManagementException e) { + ErrorLog errorLog = MethodListUtil.createErrorLog(clientType, + "KeyManagementException occurred when fetching organizations with from url " + + url, + "500"); + catalogService.saveErrorLog(errorLog); + log.error("KeyManagementException occurred when fetching organizations with from url {}", url); + } catch (Exception e) { + log.error("Exception occurred when fetching organization data: " + e.getMessage()); + ErrorLog errorLog = ErrorLog.builder() + .created(LocalDateTime.now()) + .message("Exception occurred when fetching organization data: " + + e.getMessage()) + .code("500") + .xRoadInstance(clientType.getId().getXRoadInstance()) + .memberClass(clientType.getId().getMemberClass()) + .memberCode(clientType.getId().getMemberCode()) + .groupCode(clientType.getId().getGroupCode()) + .securityCategoryCode(clientType.getId().getSecurityCategoryCode()) + .serverCode(clientType.getId().getServerCode()) + .serviceCode(clientType.getId().getServiceCode()) + .serviceVersion(clientType.getId().getServiceVersion()) + .subsystemCode(clientType.getId().getSubsystemCode()) + .build(); + catalogService.saveErrorLog(errorLog); + } + return itemList; + } + + public static String getResponseBody(String url) + throws KeyStoreException, NoSuchAlgorithmException, + KeyManagementException { + HttpHeaders headers = new HttpHeaders(); + List mediaTypes = new ArrayList<>(); + mediaTypes.add(MediaType.APPLICATION_JSON); + headers.setAccept(mediaTypes); + final HttpEntity entity = new HttpEntity<>(headers); + RestTemplate restTemplate = createTemplate(); + ResponseEntity response = restTemplate.exchange(url, HttpMethod.GET, entity, String.class); + + return response.getBody(); + } + + private static RestTemplate createTemplate() + throws KeyStoreException, NoSuchAlgorithmException, KeyManagementException { + TrustStrategy acceptingTrustStrategy = new TrustStrategy() { + @Override + public boolean isTrusted(X509Certificate[] x509Certificates, String s) + throws CertificateException { + return true; + } + }; + SSLContext sslContext = SSLContexts.custom() + .loadTrustMaterial(null, acceptingTrustStrategy) + .build(); + SSLConnectionSocketFactory csf = new SSLConnectionSocketFactory(sslContext, + new NoopHostnameVerifier()); + PoolingHttpClientConnectionManager cm = PoolingHttpClientConnectionManagerBuilder + .create() + .setSSLSocketFactory(csf) + .build(); + CloseableHttpClient httpClient = HttpClients.custom().setConnectionManager(cm).build(); + HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(); + requestFactory.setHttpClient(httpClient); + RestTemplate restTemplate = new RestTemplate(requestFactory); + + return restTemplate; + } } diff --git a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/ServiceEndpointImpl.java b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/ServiceEndpointImpl.java index 1b92767f..a271cb88 100644 --- a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/ServiceEndpointImpl.java +++ b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/ServiceEndpointImpl.java @@ -13,11 +13,27 @@ package fi.vrk.xroad.catalog.lister; import com.google.common.collect.Lists; + +import fi.vrk.xroad.catalog.lister.generated.ErrorLog; +import fi.vrk.xroad.catalog.lister.generated.ErrorLogList; +import fi.vrk.xroad.catalog.lister.generated.GetErrors; +import fi.vrk.xroad.catalog.lister.generated.GetErrorsResponse; +import fi.vrk.xroad.catalog.lister.generated.GetOpenAPI; +import fi.vrk.xroad.catalog.lister.generated.GetOpenAPIResponse; +import fi.vrk.xroad.catalog.lister.generated.GetServiceType; +import fi.vrk.xroad.catalog.lister.generated.GetServiceTypeResponse; +import fi.vrk.xroad.catalog.lister.generated.GetWsdl; +import fi.vrk.xroad.catalog.lister.generated.GetWsdlResponse; +import fi.vrk.xroad.catalog.lister.generated.IsProvider; +import fi.vrk.xroad.catalog.lister.generated.IsProviderResponse; +import fi.vrk.xroad.catalog.lister.generated.ListMembers; +import fi.vrk.xroad.catalog.lister.generated.ListMembersResponse; +import fi.vrk.xroad.catalog.lister.generated.Member; +import fi.vrk.xroad.catalog.lister.generated.MemberList; import fi.vrk.xroad.catalog.persistence.CatalogService; import fi.vrk.xroad.catalog.persistence.entity.OpenApi; import fi.vrk.xroad.catalog.persistence.entity.Wsdl; import fi.vrk.xroad.catalog.persistence.entity.Service; -import fi.vrk.xroad.xroad_catalog_lister.*; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Profile; From 9a1d21a906315df08d0cc7ca909d719d9a05944c Mon Sep 17 00:00:00 2001 From: Raido Kaju Date: Tue, 28 May 2024 12:32:38 +0300 Subject: [PATCH 10/10] chore: fix review comment REF: XRDCAT-19 --- .../fi/vrk/xroad/catalog/collector/util/OrganizationUtil.java | 1 - 1 file changed, 1 deletion(-) diff --git a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/util/OrganizationUtil.java b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/util/OrganizationUtil.java index 0b225dd4..2dc97a04 100644 --- a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/util/OrganizationUtil.java +++ b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/util/OrganizationUtil.java @@ -708,7 +708,6 @@ public static JSONArray getDataByIds(ClientType clientType, List guids, .memberClass(clientType.getId().getMemberClass()) .memberCode(clientType.getId().getMemberCode()) .groupCode(clientType.getId().getGroupCode()) - .securityCategoryCode(clientType.getId().getSecurityCategoryCode()) .serverCode(clientType.getId().getServerCode()) .serviceCode(clientType.getId().getServiceCode()) .serviceVersion(clientType.getId().getServiceVersion())

vZyfAyM{jR8WbjjzN`Bwsz-{q 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 z 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 V{?Ios-UB~pEbT1FUwZ!Ye*t2e%gX=& literal 0 HcmV?d00001 diff --git a/img/xroad_catalog_production.png b/img/xroad_catalog_production.png new file mode 100644 index 0000000000000000000000000000000000000000..8d0c16fdd5a411096b62ff15d523db8dfb15602f GIT binary patch literal 51291 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 Hlehl|n6iQj literal 0 HcmV?d00001 diff --git a/xroad-catalog-collector/LICENSE.txt b/xroad-catalog-collector/LICENSE.txt index 662ff71c..13901a52 100644 --- a/xroad-catalog-collector/LICENSE.txt +++ b/xroad-catalog-collector/LICENSE.txt @@ -1,9 +1,22 @@ The MIT License -Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency +Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) +Copyright (c) 2016-2023 Finnish Digital Agency -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/xroad-catalog-collector/README.md b/xroad-catalog-collector/README.md index 812a6441..e9dd601a 100644 --- a/xroad-catalog-collector/README.md +++ b/xroad-catalog-collector/README.md @@ -1,58 +1,72 @@ # Introduction to X-Road Catalog Collector -The purpose of this piece of software is to collect members, subsystems and services from the X-Road instance and store them to a database. +The purpose of this module is to collect members, subsystems and services from the X-Road ecosystem and store them to +a database. -The software is implemented using concurrent Akka actors: -* FetchWsdlActor - fetches WSDL descriptions of SOAP services from the X-Road instance and stores them to the db -* FetchOpenApiActor - fetches OpenAPI descriptions of Rest services from the XRoad instance and stores them to the db -* ListClientsActor - fetches a list of clients from the XRoad instance and stores them to the db -* ListMethodsActor - fetches a list of services from the XRoad instance and stores them to the db -* FetchOrganizationsActor - fetches a list of public organizations from an external API and stores them to the db -* FetchCompaniesActor - fetches a list of private companies from an external API and stores them to the db +The module is implemented using concurrent Akka actors: -See also the [User Guide](../xroad_catalog_user_guide.md#license) +* `FetchWsdlActor` - fetches WSDL descriptions of SOAP services from the X-Road instance and stores them to the db. +* `FetchOpenApiActor` - fetches OpenAPI descriptions of Rest services from the X-Road instance and stores them to the db. +* `ListClientsActor` - fetches a list of clients from the X-Road instance and stores them to the db. +* `ListMethodsActor` - fetches a list of services from the X-Road instance and stores them to the db. +* `FetchOrganizationsActor` - fetches a list of public organizations from an external API and stores them to the db. +* `FetchCompaniesActor` - fetches a list of private companies from an external API and stores them to the db. + +See also the [Installation Guide](../doc/xroad_catalog_installation_guide.md) and +[User Guide](../doc/xroad_catalog_user_guide.md). ## Build X-Road Catalog Collector can be built by running: -``` $ ../gradlew clean build ``` +```bash +$ ../gradlew clean build +``` -## Profiles +## Build RPM Packages on Non-RedHat Platform -There are four spring boot profiles. +First make sure that `xroad-catalog-persistence` is located next to `xroad-catalog-collector`. The RPM build uses sql +files from `xroad-catalog-persistence/src/main/sql`. If the `default` profile is used, the `CATALOG_PROFILE` argument +can be omitted. More information about profiles is available in the [build instructions](../BUILD.md#profiles). -* default (a profile used for default operation of X-Road Catalog, without any country-specific features) -* FI (an extra profile used in addition to the default profile, which has country specific features) -* production (a profile used in the production) -* sshtest (a profile used to test SSH tunneling with X-Road Catalog) +```bash +../gradlew clean build +docker build -t collector-rpm packages/xroad-catalog-collector/docker --build-arg CATALOG_PROFILE= +docker run -v $PWD/..:/workspace collector-rpm +``` ## Run X-Road Catalog Collector can be run by using Gradle: -``` $ ../gradlew bootRun ``` +```bash +../gradlew bootRun +``` or by running it from a JAR file: -``` $ java -jar target/xroad-catalog-collector-1.0-SNAPSHOT.jar ``` - -## Run against remote security server +```bash +java -jar target/xroad-catalog-collector-1.0-SNAPSHOT.jar +``` -First create an ssh tunnel to local port 9000, for example +## Run against a remote Security Server over an SSH tunnel -``` $ ssh -nNT -L 9000:gdev-rh1.i.palveluvayla.com:80 dev-is.palveluvayla.com ``` +First create an ssh tunnel to a local port: -Then run the collector with profile sshtest: +```bash +ssh -nNT -L :: [USER@]SSH_SERVER +``` -``` $ java -Dspring.profiles.active=sshtest -jar build/libs/xroad-catalog-collector.jar --spring.config.name=collector,catalogdb ``` +For example, there's a Security Server running on a machine `my-security-server.com` on an internal private network on +port `80`. The Security Server is accessible from the machine `my-ssh-server.com`. To connect to the Security Server from +the local machine using the local port `9000`, forward the connection using the following command: -## Build RPM Packages on Non-RedHat Platform +```bash +ssh -nNT -L 9000:my-security-server.com:80 my-user@my-ssh-server.com +``` -First make sure that xroad-catalog-persistence is located next to xroad-catalog-collector. The RPM build uses sql files from xroad-catalog-persistence/src/main/sql. +Then run the collector with profile `sshtest`: +```bash +java -Dspring.profiles.active=sshtest -jar build/libs/xroad-catalog-collector.jar --spring.config.name=collector,catalogdb ``` - $ ../gradlew clean build - $ docker build -t collector-rpm packages/xroad-catalog-collector/docker - $ docker run -v $PWD/..:/workspace collector-rpm -``` \ No newline at end of file diff --git a/xroad-catalog-collector/packages/xroad-catalog-collector/docker/Dockerfile b/xroad-catalog-collector/packages/xroad-catalog-collector/docker/Dockerfile index 3f24c7e7..e4555230 100644 --- a/xroad-catalog-collector/packages/xroad-catalog-collector/docker/Dockerfile +++ b/xroad-catalog-collector/packages/xroad-catalog-collector/docker/Dockerfile @@ -1,5 +1,5 @@ FROM centos:7 -MAINTAINER "Sami Kallio" +MAINTAINER "Nordic Institute for Interoperability Solutions (NIIS)" RUN yum -y install sudo git rpm-build java-11-openjdk-headless RUN yum clean all diff --git a/xroad-catalog-collector/packages/xroad-catalog-collector/redhat/SPECS/xroad-catalog-collector.spec b/xroad-catalog-collector/packages/xroad-catalog-collector/redhat/SPECS/xroad-catalog-collector.spec index a7e27b17..8b7f7926 100644 --- a/xroad-catalog-collector/packages/xroad-catalog-collector/redhat/SPECS/xroad-catalog-collector.spec +++ b/xroad-catalog-collector/packages/xroad-catalog-collector/redhat/SPECS/xroad-catalog-collector.spec @@ -32,6 +32,8 @@ mkdir -p %{buildroot}%{_unitdir} mkdir -p %{buildroot}/usr/share/xroad/bin mkdir -p %{buildroot}/usr/share/xroad/sql mkdir -p %{buildroot}/var/log/xroad/ +mkdir -p %{buildroot}/usr/share/doc/%{name} + cp -p %{src}/../../../build/libs/xroad-catalog-collector-%{version}.jar %{buildroot}%{jlib}/%{name}.jar cp -p %{src}/../../../build/resources/main/collector-production.properties %{buildroot}%{conf} cp -p %{src}/../../../build/resources/main/catalogdb-production.properties %{buildroot}%{conf} @@ -41,6 +43,8 @@ cp -p ../../../../../xroad-catalog-persistence/src/main/sql/init_database.sql % cp -p ../../../../../xroad-catalog-persistence/src/main/sql/create_tables_%{profile}.sql %{buildroot}/usr/share/xroad/sql cp -p %{src}/SOURCES/%{name} %{buildroot}/usr/share/xroad/bin cp -p %{src}/SOURCES/%{name}.service %{buildroot}%{_unitdir} +cp -p %{src}/../../../../LICENSE.txt %{buildroot}/usr/share/doc/%{name}/LICENSE.txt +cp -p %{src}/../../../../3RD-PARTY-NOTICES.txt %{buildroot}/usr/share/doc/%{name}/3RD-PARTY-NOTICES.txt %clean rm -rf %{buildroot} @@ -59,6 +63,9 @@ rm -rf %{buildroot} %attr(755,xroad-catalog,xroad-catalog) %{jlib}/%{name}.jar %attr(744,xroad-catalog,xroad-catalog) /usr/share/xroad/bin/%{name} +%doc /usr/share/doc/%{name}/LICENSE.txt +%doc /usr/share/doc/%{name}/3RD-PARTY-NOTICES.txt + %pre if ! id xroad-catalog > /dev/null 2>&1 ; then diff --git a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/XRoadCatalogCollector.java b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/XRoadCatalogCollector.java index ea89aa34..5c11232a 100644 --- a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/XRoadCatalogCollector.java +++ b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/XRoadCatalogCollector.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/CatalogSupervisor.java b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/CatalogSupervisor.java index d933ec8e..2ed1fdb5 100644 --- a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/CatalogSupervisor.java +++ b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/CatalogSupervisor.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/FetchCompaniesActor.java b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/FetchCompaniesActor.java index 7226d1fd..81faf748 100644 --- a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/FetchCompaniesActor.java +++ b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/FetchCompaniesActor.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/FetchOpenApiActor.java b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/FetchOpenApiActor.java index c65d0c78..980c115a 100644 --- a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/FetchOpenApiActor.java +++ b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/FetchOpenApiActor.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/FetchOrganizationsActor.java b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/FetchOrganizationsActor.java index fb370289..a7852406 100644 --- a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/FetchOrganizationsActor.java +++ b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/FetchOrganizationsActor.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/FetchRestActor.java b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/FetchRestActor.java index e8aacf2b..490ce267 100644 --- a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/FetchRestActor.java +++ b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/FetchRestActor.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/FetchWsdlActor.java b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/FetchWsdlActor.java index 6f386523..6324de38 100644 --- a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/FetchWsdlActor.java +++ b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/FetchWsdlActor.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/ListClientsActor.java b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/ListClientsActor.java index 44f0a603..b7be15d6 100644 --- a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/ListClientsActor.java +++ b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/ListClientsActor.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/ListMethodsActor.java b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/ListMethodsActor.java index 254c0e7a..ce5cb1e8 100644 --- a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/ListMethodsActor.java +++ b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/ListMethodsActor.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/OrganizationsActor.java b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/OrganizationsActor.java index aa8dd405..03c833ed 100644 --- a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/OrganizationsActor.java +++ b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/OrganizationsActor.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/OrganizationsSupervisor.java b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/OrganizationsSupervisor.java index c686293d..37622edc 100644 --- a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/OrganizationsSupervisor.java +++ b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/OrganizationsSupervisor.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/XRoadCatalogActor.java b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/XRoadCatalogActor.java index b9ace431..6d3d0507 100644 --- a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/XRoadCatalogActor.java +++ b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/actors/XRoadCatalogActor.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/configuration/ApplicationConfiguration.java b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/configuration/ApplicationConfiguration.java index b96812ba..e4c483ce 100644 --- a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/configuration/ApplicationConfiguration.java +++ b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/configuration/ApplicationConfiguration.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/configuration/ProductionConfiguration.java b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/configuration/ProductionConfiguration.java index 7fefba91..c48bc0bd 100644 --- a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/configuration/ProductionConfiguration.java +++ b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/configuration/ProductionConfiguration.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/extension/SpringActorProducer.java b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/extension/SpringActorProducer.java index 79b60d3d..208a938a 100644 --- a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/extension/SpringActorProducer.java +++ b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/extension/SpringActorProducer.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/extension/SpringExtension.java b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/extension/SpringExtension.java index c09bc581..216f5db1 100644 --- a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/extension/SpringExtension.java +++ b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/extension/SpringExtension.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/util/CatalogCollectorRuntimeException.java b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/util/CatalogCollectorRuntimeException.java index aee00051..daa02584 100644 --- a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/util/CatalogCollectorRuntimeException.java +++ b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/util/CatalogCollectorRuntimeException.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/util/ClientListUtil.java b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/util/ClientListUtil.java index 6de0202a..3e48f14a 100644 --- a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/util/ClientListUtil.java +++ b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/util/ClientListUtil.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/util/ClientTypeUtil.java b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/util/ClientTypeUtil.java index e4ccc40c..1e0f5e51 100644 --- a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/util/ClientTypeUtil.java +++ b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/util/ClientTypeUtil.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/util/Endpoint.java b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/util/Endpoint.java index 1d1747b1..95429082 100644 --- a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/util/Endpoint.java +++ b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/util/Endpoint.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/util/MethodListUtil.java b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/util/MethodListUtil.java index c464bbea..5e17ec06 100644 --- a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/util/MethodListUtil.java +++ b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/util/MethodListUtil.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/util/OrganizationUtil.java b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/util/OrganizationUtil.java index 8bdc754d..afde8c33 100644 --- a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/util/OrganizationUtil.java +++ b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/util/OrganizationUtil.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/util/SecurityServerMetadata.java b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/util/SecurityServerMetadata.java index 28a78d88..206907bd 100644 --- a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/util/SecurityServerMetadata.java +++ b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/util/SecurityServerMetadata.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/util/XRoadClient.java b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/util/XRoadClient.java index 345a3f0e..5bfe2921 100644 --- a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/util/XRoadClient.java +++ b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/util/XRoadClient.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/util/XRoadRestServiceIdentifierType.java b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/util/XRoadRestServiceIdentifierType.java index d9eb5aef..9989a176 100644 --- a/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/util/XRoadRestServiceIdentifierType.java +++ b/xroad-catalog-collector/src/main/java/fi/vrk/xroad/catalog/collector/util/XRoadRestServiceIdentifierType.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-collector/src/main/resources/collector-production.properties b/xroad-catalog-collector/src/main/resources/collector-production.properties index 50ef3e3e..0bfdde0f 100644 --- a/xroad-catalog-collector/src/main/resources/collector-production.properties +++ b/xroad-catalog-collector/src/main/resources/collector-production.properties @@ -1,15 +1,17 @@ # X-Road instance parameters -xroad-catalog.xroad-instance=FI -xroad-catalog.member-class=GOV -xroad-catalog.member-code=1945065-0 -xroad-catalog.subsystem-code=VAAKKO1 +xroad-catalog.xroad-instance= +xroad-catalog.member-class= +xroad-catalog.member-code= +xroad-catalog.subsystem-code= -#Security server URLs -xroad-catalog.security-server-host=http://localhost:8080 +# Security server URLs +xroad-catalog.security-server-host=http://:8080 xroad-catalog.webservices-endpoint=${xroad-catalog.security-server-host} xroad-catalog.list-clients-host=${xroad-catalog.security-server-host} xroad-catalog.fetch-wsdl-host=${xroad-catalog.security-server-host} xroad-catalog.fetch-openapi-host=${xroad-catalog.security-server-host} + +# Parameters related to the "fi" profile xroad-catalog.fetch-organizations-url=https://api.palvelutietovaranto.suomi.fi/api/v11/Organization xroad-catalog.fetch-companies-url=https://avoindata.prh.fi/bis/v1 diff --git a/xroad-catalog-collector/src/main/resources/collector-sshtest.properties b/xroad-catalog-collector/src/main/resources/collector-sshtest.properties index 43e38417..26608054 100644 --- a/xroad-catalog-collector/src/main/resources/collector-sshtest.properties +++ b/xroad-catalog-collector/src/main/resources/collector-sshtest.properties @@ -1,20 +1,22 @@ # production PostgreSQL settings -xroad-catalog.xroad-instance=FI -xroad-catalog.member-class=GOV -xroad-catalog.member-code=1945065-0 -xroad-catalog.subsystem-code=VAAKKO1 +xroad-catalog.xroad-instance= +xroad-catalog.member-class= +xroad-catalog.member-code= +xroad-catalog.subsystem-code= xroad-catalog.collector-interval-min=20 spring.main.web_environment=false -# Create an ssh tunnel to trough port 9000 the server you are testing -# For example: ssh -L 9000:gdev-rh1.i.palveluvayla.com:80 dev-is.palveluvayla.com +# Create an ssh tunnel trough port 9000 to the server you are testing +# For example: ssh -nNT -L 9000::80 xroad-catalog.security-server-host=http://localhost:9000 xroad-catalog.webservices-endpoint=${xroad-catalog.security-server-host} xroad-catalog.list-clients-host=${xroad-catalog.security-server-host} xroad-catalog.fetch-wsdl-host=${xroad-catalog.security-server-host} xroad-catalog.fetch-openapi-host=${xroad-catalog.security-server-host} + +# Parameters related to the "fi" profile xroad-catalog.fetch-organizations-url=https://api.palvelutietovaranto.suomi.fi/api/v11/Organization xroad-catalog.fetch-companies-url=https://avoindata.prh.fi/bis/v1 diff --git a/xroad-catalog-collector/src/main/resources/collector.properties b/xroad-catalog-collector/src/main/resources/collector.properties index 7ef37cec..70bd4a4f 100644 --- a/xroad-catalog-collector/src/main/resources/collector.properties +++ b/xroad-catalog-collector/src/main/resources/collector.properties @@ -7,11 +7,14 @@ xroad-catalog.subsystem-code=dummy-group xroad-catalog.collector-interval-min=20 spring.main.web_environment=true +# Security server URLs xroad-catalog.security-server-host=http://localhost xroad-catalog.webservices-endpoint=http://localhost:8080/metaservices xroad-catalog.list-clients-host=http://localhost:8932 xroad-catalog.fetch-wsdl-host=http://localhost:8933 xroad-catalog.fetch-openapi-host=http://localhost:8934 + +# Parameters related to the "fi" profile xroad-catalog.fetch-organizations-url=https://api.palvelutietovaranto.suomi.fi/api/v11/Organization xroad-catalog.fetch-companies-url=https://avoindata.prh.fi/bis/v1 diff --git a/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/actors/CatalogSupervisorTest.java b/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/actors/CatalogSupervisorTest.java index 59be7585..cf301065 100644 --- a/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/actors/CatalogSupervisorTest.java +++ b/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/actors/CatalogSupervisorTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/actors/FetchCompanyActorTest.java b/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/actors/FetchCompanyActorTest.java index 5878365a..aeb21923 100644 --- a/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/actors/FetchCompanyActorTest.java +++ b/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/actors/FetchCompanyActorTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/actors/FetchOpenApiActorTest.java b/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/actors/FetchOpenApiActorTest.java index c15ca4bb..4e475297 100644 --- a/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/actors/FetchOpenApiActorTest.java +++ b/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/actors/FetchOpenApiActorTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/actors/FetchOrganizationActorTest.java b/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/actors/FetchOrganizationActorTest.java index 98c54ecc..599d6455 100644 --- a/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/actors/FetchOrganizationActorTest.java +++ b/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/actors/FetchOrganizationActorTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/actors/FetchRestActorTest.java b/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/actors/FetchRestActorTest.java index 49c2248d..fe1668fc 100644 --- a/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/actors/FetchRestActorTest.java +++ b/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/actors/FetchRestActorTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/actors/FetchWsdlActorTest.java b/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/actors/FetchWsdlActorTest.java index 0e2c8034..2400df06 100644 --- a/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/actors/FetchWsdlActorTest.java +++ b/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/actors/FetchWsdlActorTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/actors/ListClientsActorTest.java b/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/actors/ListClientsActorTest.java index 7fc4b2b9..47777876 100644 --- a/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/actors/ListClientsActorTest.java +++ b/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/actors/ListClientsActorTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/actors/ListClientsRestTest.java b/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/actors/ListClientsRestTest.java index 9a2683dc..533ebc10 100644 --- a/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/actors/ListClientsRestTest.java +++ b/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/actors/ListClientsRestTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/actors/ListMethodsActorTest.java b/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/actors/ListMethodsActorTest.java index 17936868..5f9e5aab 100644 --- a/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/actors/ListMethodsActorTest.java +++ b/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/actors/ListMethodsActorTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/actors/OrganizationsActorTest.java b/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/actors/OrganizationsActorTest.java index 8650fdd6..5c1d0c48 100644 --- a/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/actors/OrganizationsActorTest.java +++ b/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/actors/OrganizationsActorTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/actors/OrganizationsSupervisorTest.java b/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/actors/OrganizationsSupervisorTest.java index fc414a89..f4ee8fae 100644 --- a/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/actors/OrganizationsSupervisorTest.java +++ b/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/actors/OrganizationsSupervisorTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/configuration/DevelopmentConfiguration.java b/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/configuration/DevelopmentConfiguration.java index 98760dd0..6c16bf8e 100644 --- a/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/configuration/DevelopmentConfiguration.java +++ b/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/configuration/DevelopmentConfiguration.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/mock/MockHttpServer.java b/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/mock/MockHttpServer.java index c2ab6b3a..a74db185 100644 --- a/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/mock/MockHttpServer.java +++ b/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/mock/MockHttpServer.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/mock/MockMetaServicesImpl.java b/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/mock/MockMetaServicesImpl.java index e3b45162..eb765ef3 100644 --- a/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/mock/MockMetaServicesImpl.java +++ b/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/mock/MockMetaServicesImpl.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/mock/MockRestTemplate.java b/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/mock/MockRestTemplate.java index 7859f59c..e21d8982 100644 --- a/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/mock/MockRestTemplate.java +++ b/xroad-catalog-collector/src/test/java/fi/vrk/xroad/catalog/collector/mock/MockRestTemplate.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-lister/LICENSE.txt b/xroad-catalog-lister/LICENSE.txt index 662ff71c..13901a52 100644 --- a/xroad-catalog-lister/LICENSE.txt +++ b/xroad-catalog-lister/LICENSE.txt @@ -1,9 +1,22 @@ The MIT License -Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency +Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) +Copyright (c) 2016-2023 Finnish Digital Agency -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/xroad-catalog-lister/README.md b/xroad-catalog-lister/README.md index c400be71..6004b83e 100644 --- a/xroad-catalog-lister/README.md +++ b/xroad-catalog-lister/README.md @@ -1,40 +1,44 @@ # Introduction to X-Road Catalog Lister -The purpose of this piece of software is to provide a webservice which lists all the XRoad members and the services they provide together with services descriptions +The purpose of this module is to provide a web service which lists all the X-Road members and the services they provide +together with services descriptions. -A class diagram illustrating X-Road Catalog Lister implementation with ```default``` and ```FI``` profiles +A class diagram illustrating X-Road Catalog Lister implementation with the `default` and `FI` profiles: -![Catalog Service class diagram](class_diagram.png) +![Catalog Service class diagram](img/class_diagram.png) -See also the [User Guide](../xroad_catalog_user_guide.md#license) +See also the [Installation Guide](../doc/xroad_catalog_installation_guide.md) and +[User Guide](../doc/xroad_catalog_user_guide.md). ## Build X-Road Catalog Lister can be built by running: -``` $ ../gradlew clean build ``` +```bash +../gradlew clean build +``` -## Profiles +## Build RPM Packages on Non-RedHat Platform -There are four spring boot profiles. +If the `default` profile is used, the `CATALOG_PROFILE` argument can be omitted. More information about profiles is +available in the [build instructions](../BUILD.md#profiles). -* default (a profile used for default operation of X-Road Catalog, without any country-specific features) -* FI (an extra profile used in addition to the default profile, which has country specific features) -* production (a profile used in the production) -* sshtest (a profile used to test SSH tunneling with X-Road Catalog) +```bash +../gradlew clean build +docker build -t lister-rpm packages/xroad-catalog-lister/docker --build-arg CATALOG_PROFILE= +docker run -v $PWD/..:/workspace lister-rpm +``` ## Run X-Road Catalog Lister can be run using Gradle: -``` $ ../gradlew bootRun ``` +```bash +../gradlew bootRun +``` or running it from a JAR file: -``` $ java -jar build/libs/xroad-catalog-lister.jar --spring.config.name=lister,catalogdb ``` - -## Build RPM Packages on Non-RedHat Platform - - $ ../gradlew clean build - $ docker build -t lister-rpm packages/xroad-catalog-lister/docker - $ docker run -v $PWD/..:/workspace lister-rpm \ No newline at end of file +```bash +java -jar build/libs/xroad-catalog-lister.jar --spring.config.name=lister,catalogdb +``` diff --git a/xroad-catalog-lister/class_diagram.png b/xroad-catalog-lister/img/class_diagram.png similarity index 100% rename from xroad-catalog-lister/class_diagram.png rename to xroad-catalog-lister/img/class_diagram.png diff --git a/xroad-catalog-lister/packages/xroad-catalog-lister/debian/control b/xroad-catalog-lister/packages/xroad-catalog-lister/debian/control index 7f866325..c7056718 100644 --- a/xroad-catalog-lister/packages/xroad-catalog-lister/debian/control +++ b/xroad-catalog-lister/packages/xroad-catalog-lister/debian/control @@ -1,7 +1,7 @@ Source: xroad-catalog-lister Section: X-Road Priority: extra -Maintainer: Sami Kallio +Maintainer: Nordic Institute for Interoperability Solutions (NIIS) Build-Depends: debhelper (>= 7) Standards-Version: 3.8.3 diff --git a/xroad-catalog-lister/packages/xroad-catalog-lister/docker/Dockerfile b/xroad-catalog-lister/packages/xroad-catalog-lister/docker/Dockerfile index f8f23307..7d5531fa 100644 --- a/xroad-catalog-lister/packages/xroad-catalog-lister/docker/Dockerfile +++ b/xroad-catalog-lister/packages/xroad-catalog-lister/docker/Dockerfile @@ -1,5 +1,5 @@ FROM centos:7 -MAINTAINER "Sami Kallio" +MAINTAINER "Nordic Institute for Interoperability Solutions (NIIS)" RUN yum -y install sudo git rpm-build java-11-openjdk-headless RUN yum clean all diff --git a/xroad-catalog-lister/packages/xroad-catalog-lister/redhat/SPECS/xroad-catalog-lister.spec b/xroad-catalog-lister/packages/xroad-catalog-lister/redhat/SPECS/xroad-catalog-lister.spec index e26ea8e1..35ecda17 100644 --- a/xroad-catalog-lister/packages/xroad-catalog-lister/redhat/SPECS/xroad-catalog-lister.spec +++ b/xroad-catalog-lister/packages/xroad-catalog-lister/redhat/SPECS/xroad-catalog-lister.spec @@ -8,7 +8,7 @@ Release: %{rel}%{?snapshot}%{?dist} Summary: X-Road Service Listing Group: Applications/Internet License: MIT -Requires: systemd, java-11-openjdk +Requires: systemd, java-11-openjdk, xroad-confclient Requires(post): systemd Requires(preun): systemd Requires(postun): systemd @@ -31,12 +31,16 @@ mkdir -p %{buildroot}%{_unitdir} mkdir -p %{buildroot}%{conf} mkdir -p %{buildroot}/usr/share/xroad/bin mkdir -p %{buildroot}/var/log/xroad/ +mkdir -p %{buildroot}/usr/share/doc/%{name} + cp -p %{src}/../../../build/libs/xroad-catalog-lister-%{version}.jar %{buildroot}%{jlib}/%{name}.jar cp -p %{src}/SOURCES/%{name}.service %{buildroot}%{_unitdir} cp -p %{src}/SOURCES/%{name} %{buildroot}/usr/share/xroad/bin cp -p %{src}/../../../build/resources/main/lister-production.properties %{buildroot}%{conf} cp -p catalog-profile.properties %{buildroot}%{conf} cp -p %{src}/../../../build/resources/main/version.properties %{buildroot}%{conf} +cp -p %{src}/../../../../LICENSE.txt %{buildroot}/usr/share/doc/%{name}/LICENSE.txt +cp -p %{src}/../../../../3RD-PARTY-NOTICES.txt %{buildroot}/usr/share/doc/%{name}/3RD-PARTY-NOTICES.txt %clean rm -rf %{buildroot} @@ -49,14 +53,21 @@ rm -rf %{buildroot} %attr(644,root,root) %{conf}/version.properties %attr(644, xroad-catalog, xroad-catalog) %{conf}/catalog-profile.properties +%doc /usr/share/doc/%{name}/LICENSE.txt +%doc /usr/share/doc/%{name}/3RD-PARTY-NOTICES.txt + %pre if ! id xroad-catalog > /dev/null 2>&1 ; then adduser --system --no-create-home --shell /bin/false xroad-catalog fi -%post +%post -p /bin/bash %systemd_post %{name}.service +if ! id -nG "xroad-catalog" | grep -qw "^xroad$"; then + usermod -a -G xroad xroad-catalog +fi + %preun %systemd_preun %{name}.service diff --git a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/CatalogListerRuntimeException.java b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/CatalogListerRuntimeException.java index 957387d8..78c6533a 100644 --- a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/CatalogListerRuntimeException.java +++ b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/CatalogListerRuntimeException.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/Heartbeat.java b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/Heartbeat.java index 9cea9c0d..76d153a3 100644 --- a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/Heartbeat.java +++ b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/Heartbeat.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/HeartbeatController.java b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/HeartbeatController.java index e3a5af79..45162823 100644 --- a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/HeartbeatController.java +++ b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/HeartbeatController.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/JaxbCatalogService.java b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/JaxbCatalogService.java index 2a271cef..a92fc4d9 100644 --- a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/JaxbCatalogService.java +++ b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/JaxbCatalogService.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/JaxbCatalogServiceImpl.java b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/JaxbCatalogServiceImpl.java index 7c337f1b..c8d7d57a 100644 --- a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/JaxbCatalogServiceImpl.java +++ b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/JaxbCatalogServiceImpl.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/JaxbCompanyService.java b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/JaxbCompanyService.java index 12a385a7..1526b637 100644 --- a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/JaxbCompanyService.java +++ b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/JaxbCompanyService.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/JaxbCompanyServiceImpl.java b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/JaxbCompanyServiceImpl.java index 70db60bb..fadbc30c 100644 --- a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/JaxbCompanyServiceImpl.java +++ b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/JaxbCompanyServiceImpl.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/JaxbOrganizationConversion.java b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/JaxbOrganizationConversion.java index 09bbb0f5..4734c5e5 100644 --- a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/JaxbOrganizationConversion.java +++ b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/JaxbOrganizationConversion.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/JaxbOrganizationConverter.java b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/JaxbOrganizationConverter.java index 55b6a4c2..0a6c2c07 100644 --- a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/JaxbOrganizationConverter.java +++ b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/JaxbOrganizationConverter.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/JaxbOrganizationService.java b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/JaxbOrganizationService.java index 7a3066f5..a662ef99 100644 --- a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/JaxbOrganizationService.java +++ b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/JaxbOrganizationService.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/JaxbOrganizationServiceImpl.java b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/JaxbOrganizationServiceImpl.java index e7f5037b..1f8f7eb7 100644 --- a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/JaxbOrganizationServiceImpl.java +++ b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/JaxbOrganizationServiceImpl.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/JaxbServiceConversion.java b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/JaxbServiceConversion.java index 109f6009..0d4fcaa7 100644 --- a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/JaxbServiceConversion.java +++ b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/JaxbServiceConversion.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/JaxbServiceConverter.java b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/JaxbServiceConverter.java index be459cf6..db37966c 100644 --- a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/JaxbServiceConverter.java +++ b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/JaxbServiceConverter.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/ListerApplication.java b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/ListerApplication.java index 87a071f8..f966be6b 100644 --- a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/ListerApplication.java +++ b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/ListerApplication.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/OrganizationController.java b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/OrganizationController.java index cefaee58..63aca70c 100644 --- a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/OrganizationController.java +++ b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/OrganizationController.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/OrganizationEndpoint.java b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/OrganizationEndpoint.java index 269217be..17db2ea1 100644 --- a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/OrganizationEndpoint.java +++ b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/OrganizationEndpoint.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/OrganizationEndpointImpl.java b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/OrganizationEndpointImpl.java index 956a66d4..964792ef 100644 --- a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/OrganizationEndpointImpl.java +++ b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/OrganizationEndpointImpl.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/OrganizationHeartbeat.java b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/OrganizationHeartbeat.java index 6674e831..e296d664 100644 --- a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/OrganizationHeartbeat.java +++ b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/OrganizationHeartbeat.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/OrganizationHeartbeatController.java b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/OrganizationHeartbeatController.java index 71c3bc12..d2c43910 100644 --- a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/OrganizationHeartbeatController.java +++ b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/OrganizationHeartbeatController.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/OrganizationOperations.java b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/OrganizationOperations.java index 23d961a8..b291f895 100644 --- a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/OrganizationOperations.java +++ b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/OrganizationOperations.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/ServiceController.java b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/ServiceController.java index 28b1145a..954a52a8 100644 --- a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/ServiceController.java +++ b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/ServiceController.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/ServiceEndpoint.java b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/ServiceEndpoint.java index a905794f..c7957899 100644 --- a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/ServiceEndpoint.java +++ b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/ServiceEndpoint.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/ServiceEndpointImpl.java b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/ServiceEndpointImpl.java index 0e5d8889..0ff6fb51 100644 --- a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/ServiceEndpointImpl.java +++ b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/ServiceEndpointImpl.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/ServiceEndpointInterceptor.java b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/ServiceEndpointInterceptor.java index e9ded64d..38d3950b 100644 --- a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/ServiceEndpointInterceptor.java +++ b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/ServiceEndpointInterceptor.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/ServiceOperations.java b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/ServiceOperations.java index 208d2540..c4c517fb 100644 --- a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/ServiceOperations.java +++ b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/ServiceOperations.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/SharedParamsParser.java b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/SharedParamsParser.java index 64690a05..8319d6c3 100644 --- a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/SharedParamsParser.java +++ b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/SharedParamsParser.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * @@ -210,29 +211,15 @@ private List getSecurityServerDataList(NodeList securityServ private SecurityServerData getSecurityServerData(Node securityServer, NodeList members) { Element securityServerElement = (Element) securityServer; - String owner = securityServerElement.getElementsByTagName(OWNER).item(0).getTextContent(); + String ownerId = securityServerElement.getElementsByTagName(OWNER).item(0).getTextContent(); String serverCode = securityServerElement.getElementsByTagName(SERVER_CODE).item(0).getTextContent(); String address = securityServerElement.getElementsByTagName(ADDRESS).item(0).getTextContent(); - MemberInfo ownerData = MemberInfo.builder().build(); - NodeList clientNames = securityServerElement.getElementsByTagName(CLIENT); - List clients = new ArrayList<>(); - List clientNamesList = new ArrayList<>(); - for (int j = 0; j < clientNames.getLength(); j++) { - Node member = clientNames.item(j); - clientNamesList.add(member.getFirstChild().getNodeValue()); - } - for (int j = 0; j < members.getLength(); j++) { - Node member = members.item(j); - if (member.getNodeType() == Node.ELEMENT_NODE) { - Element memberElement = (Element) member; - Element memberClassElement = (Element) memberElement.getElementsByTagName(MEMBER_CLASS).item(0); - String memberClass = memberClassElement.getElementsByTagName(CODE).item(0).getTextContent(); - String memberCode = memberElement.getElementsByTagName(MEMBER_CODE).item(0).getTextContent(); - String name = memberElement.getElementsByTagName(NAME).item(0).getTextContent(); - clients = getClients(memberElement, member, clientNamesList, memberClass, memberCode, name); - ownerData = getOwnerData(memberElement, owner, memberClass, memberCode, name); - } - } + NodeList clientIds = securityServerElement.getElementsByTagName(CLIENT); + + List clientIdList = getClientIdList(clientIds); + MemberInfo ownerData = getOwnerData(members, ownerId); + List clients = getClients(members, clientIdList); + return SecurityServerData.builder() .owner(ownerData) .serverCode(serverCode) @@ -240,52 +227,94 @@ private SecurityServerData getSecurityServerData(Node securityServer, NodeList m .clients(clients).build(); } - private MemberInfo getOwnerData(Element memberElement, - String owner, - String memberClass, - String memberCode, - String name) { - MemberInfo ownerData = MemberInfo.builder().build(); - if (memberElement.getAttribute(ID).equals(owner)) { - ownerData = MemberInfo.builder() - .memberClass(memberClass) - .memberCode(memberCode) - .subsystemCode(null) - .name(name).build(); + private List getClientIdList(NodeList clientIds) { + List clientIdList = new ArrayList<>(); + for (int j = 0; j < clientIds.getLength(); j++) { + Node member = clientIds.item(j); + clientIdList.add(member.getFirstChild().getNodeValue()); } - return ownerData; + return clientIdList; } - private List getClients(Element memberElement, - Node member, - List clientNamesList, - String memberClass, - String memberCode, - String name) { - List clients = new ArrayList<>(); - NodeList subsystems = memberElement.getElementsByTagName(SUBSYSTEM); - for (int k = 0; k < subsystems.getLength(); k++) { - Node subsystem = subsystems.item(k); + private MemberInfo getOwnerData(NodeList members, String ownerId) { + for (int j = 0; j < members.getLength(); j++) { + Node member = members.item(j); if (member.getNodeType() == Node.ELEMENT_NODE) { - Element subsystemElement = (Element) subsystem; - if (clientNamesList.contains(subsystemElement.getAttribute(ID))) { - String subsystemCode = - subsystemElement.getElementsByTagName(SUBSYSTEM_CODE).item(0).getTextContent(); - clients.add(MemberInfo.builder() - .memberClass(memberClass) - .memberCode(memberCode) - .subsystemCode(subsystemCode) - .name(name).build()); + Element memberElement = (Element) member; + if (memberElement.getAttribute(ID).equals(ownerId)) { + Element memberClassElement = (Element) memberElement.getElementsByTagName(MEMBER_CLASS).item(0); + String memberClass = memberClassElement.getElementsByTagName(CODE).item(0).getTextContent(); + String memberCode = memberElement.getElementsByTagName(MEMBER_CODE).item(0).getTextContent(); + String name = memberElement.getElementsByTagName(NAME).item(0).getTextContent(); + return buildMemberInfo(memberClass, memberCode, name); } } } - if (clientNamesList.contains(memberElement.getAttribute(ID))) { - clients.add(MemberInfo.builder() - .memberClass(memberClass) - .memberCode(memberCode) - .subsystemCode(null) - .name(name).build()); + return MemberInfo.builder().build(); + } + + + private MemberInfo buildMemberInfo(Element memberElement) { + return buildSubsystemInfo(memberElement, null); + } + + private MemberInfo buildSubsystemInfo(Element memberElement, Element subsystemElement) { + Element memberClassElement = (Element) memberElement.getElementsByTagName(MEMBER_CLASS).item(0); + String memberClass = memberClassElement.getElementsByTagName(CODE).item(0).getTextContent(); + String memberCode = memberElement.getElementsByTagName(MEMBER_CODE).item(0).getTextContent(); + String name = memberElement.getElementsByTagName(NAME).item(0).getTextContent(); + if (subsystemElement == null) { + return buildMemberInfo(memberClass, memberCode, name); } + String subsystemCode = subsystemElement.getElementsByTagName(SUBSYSTEM_CODE).item(0).getTextContent(); + return buildSubsystemInfo(memberClass, memberCode, subsystemCode, name); + } + + private MemberInfo buildMemberInfo( + String memberClass, + String memberCode, + String name) { + return buildSubsystemInfo(memberClass, memberCode, null, name); + } + + private MemberInfo buildSubsystemInfo( + String memberClass, + String memberCode, + String subsystemCode, + String name) { + return MemberInfo.builder() + .memberClass(memberClass) + .memberCode(memberCode) + .subsystemCode(subsystemCode) + .name(name).build(); + } + + private List getClients(NodeList members, List clientIdList) { + List clients = new ArrayList<>(); + clientIdList.forEach(clientId -> { + for (int j = 0; j < members.getLength(); j++) { + Node member = members.item(j); + if (member.getNodeType() == Node.ELEMENT_NODE) { + Element memberElement = (Element) member; + if (memberElement.getAttribute(ID).equals(clientId)) { + clients.add(buildMemberInfo(memberElement)); + break; + } + + NodeList subsystems = memberElement.getElementsByTagName(SUBSYSTEM); + for (int k = 0; k < subsystems.getLength(); k++) { + Node subsystem = subsystems.item(k); + if (member.getNodeType() == Node.ELEMENT_NODE) { + Element subsystemElement = (Element) subsystem; + if (subsystemElement.getAttribute(ID).equals(clientId)) { + clients.add(buildSubsystemInfo(memberElement, subsystemElement)); + break; + } + } + } + } + } + }); return clients; } -} +} \ No newline at end of file diff --git a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/WebServiceConfig.java b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/WebServiceConfig.java index 4c87f0c8..b10c2205 100644 --- a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/WebServiceConfig.java +++ b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/WebServiceConfig.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/WsdlCdataInterceptor.java b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/WsdlCdataInterceptor.java index cbbc56b8..69e2be7c 100644 --- a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/WsdlCdataInterceptor.java +++ b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/WsdlCdataInterceptor.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/util/JaxbOrganizationUtil.java b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/util/JaxbOrganizationUtil.java index b385e76f..30423cef 100644 --- a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/util/JaxbOrganizationUtil.java +++ b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/util/JaxbOrganizationUtil.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/util/JaxbServiceUtil.java b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/util/JaxbServiceUtil.java index 3a201f00..445d3609 100644 --- a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/util/JaxbServiceUtil.java +++ b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/util/JaxbServiceUtil.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/util/OrganizationUtil.java b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/util/OrganizationUtil.java index ef3c2df0..225160d3 100644 --- a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/util/OrganizationUtil.java +++ b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/util/OrganizationUtil.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/util/ServiceUtil.java b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/util/ServiceUtil.java index a18288c3..d1d076de 100644 --- a/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/util/ServiceUtil.java +++ b/xroad-catalog-lister/src/main/java/fi/vrk/xroad/catalog/lister/util/ServiceUtil.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-lister/src/main/resources/lister-production.properties b/xroad-catalog-lister/src/main/resources/lister-production.properties index 7865f3c9..a878c482 100644 --- a/xroad-catalog-lister/src/main/resources/lister-production.properties +++ b/xroad-catalog-lister/src/main/resources/lister-production.properties @@ -2,7 +2,7 @@ logging.level.org.springframework.web=DEBUG logging.level.org.springframework.ws=DEBUG logging.level.org.hibernate=ERROR -xroad-catalog.shared-params-file=/etc/xroad/globalconf/DEV/shared-params.xml +xroad-catalog.shared-params-file=/etc/xroad/globalconf//shared-params.xml springdoc.api-docs.enabled=true springdoc.swagger-ui.enabled=true diff --git a/xroad-catalog-lister/src/main/resources/lister.properties b/xroad-catalog-lister/src/main/resources/lister.properties index 7d90821a..94e0c6d3 100644 --- a/xroad-catalog-lister/src/main/resources/lister.properties +++ b/xroad-catalog-lister/src/main/resources/lister.properties @@ -2,7 +2,7 @@ logging.level.org.springframework.web=DEBUG logging.level.org.springframework.ws=DEBUG logging.level.org.hibernate=ERROR -xroad-catalog.shared-params-file=/etc/xroad/globalconf/DEV/shared-params.xml +xroad-catalog.shared-params-file=/etc/xroad/globalconf//shared-params.xml springdoc.api-docs.enabled=true springdoc.swagger-ui.enabled=true diff --git a/xroad-catalog-lister/src/test/java/fi/vrk/xroad/catalog/lister/ApplicationTests.java b/xroad-catalog-lister/src/test/java/fi/vrk/xroad/catalog/lister/ApplicationTests.java index 4017031c..8f8bf33d 100644 --- a/xroad-catalog-lister/src/test/java/fi/vrk/xroad/catalog/lister/ApplicationTests.java +++ b/xroad-catalog-lister/src/test/java/fi/vrk/xroad/catalog/lister/ApplicationTests.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-lister/src/test/java/fi/vrk/xroad/catalog/lister/HeartbeatControllerTests.java b/xroad-catalog-lister/src/test/java/fi/vrk/xroad/catalog/lister/HeartbeatControllerTests.java index 289e898c..a9656e70 100644 --- a/xroad-catalog-lister/src/test/java/fi/vrk/xroad/catalog/lister/HeartbeatControllerTests.java +++ b/xroad-catalog-lister/src/test/java/fi/vrk/xroad/catalog/lister/HeartbeatControllerTests.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-lister/src/test/java/fi/vrk/xroad/catalog/lister/JaxbCatalogServiceTest.java b/xroad-catalog-lister/src/test/java/fi/vrk/xroad/catalog/lister/JaxbCatalogServiceTest.java index a7ad4322..3106365e 100644 --- a/xroad-catalog-lister/src/test/java/fi/vrk/xroad/catalog/lister/JaxbCatalogServiceTest.java +++ b/xroad-catalog-lister/src/test/java/fi/vrk/xroad/catalog/lister/JaxbCatalogServiceTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-lister/src/test/java/fi/vrk/xroad/catalog/lister/JaxbCompanyServiceTest.java b/xroad-catalog-lister/src/test/java/fi/vrk/xroad/catalog/lister/JaxbCompanyServiceTest.java index 625c8f4a..c57b74f1 100644 --- a/xroad-catalog-lister/src/test/java/fi/vrk/xroad/catalog/lister/JaxbCompanyServiceTest.java +++ b/xroad-catalog-lister/src/test/java/fi/vrk/xroad/catalog/lister/JaxbCompanyServiceTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-lister/src/test/java/fi/vrk/xroad/catalog/lister/JaxbOrganizationServiceTest.java b/xroad-catalog-lister/src/test/java/fi/vrk/xroad/catalog/lister/JaxbOrganizationServiceTest.java index 40277b91..8a3fcee9 100644 --- a/xroad-catalog-lister/src/test/java/fi/vrk/xroad/catalog/lister/JaxbOrganizationServiceTest.java +++ b/xroad-catalog-lister/src/test/java/fi/vrk/xroad/catalog/lister/JaxbOrganizationServiceTest.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-lister/src/test/java/fi/vrk/xroad/catalog/lister/OrganizationControllerTests.java b/xroad-catalog-lister/src/test/java/fi/vrk/xroad/catalog/lister/OrganizationControllerTests.java index b9e446c2..b29ab3e4 100644 --- a/xroad-catalog-lister/src/test/java/fi/vrk/xroad/catalog/lister/OrganizationControllerTests.java +++ b/xroad-catalog-lister/src/test/java/fi/vrk/xroad/catalog/lister/OrganizationControllerTests.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-lister/src/test/java/fi/vrk/xroad/catalog/lister/OrganizationHeartbeatControllerTests.java b/xroad-catalog-lister/src/test/java/fi/vrk/xroad/catalog/lister/OrganizationHeartbeatControllerTests.java index 0fbdd8c2..d3560fc0 100644 --- a/xroad-catalog-lister/src/test/java/fi/vrk/xroad/catalog/lister/OrganizationHeartbeatControllerTests.java +++ b/xroad-catalog-lister/src/test/java/fi/vrk/xroad/catalog/lister/OrganizationHeartbeatControllerTests.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-lister/src/test/java/fi/vrk/xroad/catalog/lister/ServiceControllerTests.java b/xroad-catalog-lister/src/test/java/fi/vrk/xroad/catalog/lister/ServiceControllerTests.java index 1c8f2efa..b92aeec7 100644 --- a/xroad-catalog-lister/src/test/java/fi/vrk/xroad/catalog/lister/ServiceControllerTests.java +++ b/xroad-catalog-lister/src/test/java/fi/vrk/xroad/catalog/lister/ServiceControllerTests.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-lister/src/test/java/fi/vrk/xroad/catalog/lister/SharedParamsParserTests.java b/xroad-catalog-lister/src/test/java/fi/vrk/xroad/catalog/lister/SharedParamsParserTests.java new file mode 100644 index 00000000..df35742b --- /dev/null +++ b/xroad-catalog-lister/src/test/java/fi/vrk/xroad/catalog/lister/SharedParamsParserTests.java @@ -0,0 +1,95 @@ +/** + * The MIT License + * + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +package fi.vrk.xroad.catalog.lister; + +import fi.vrk.xroad.catalog.persistence.dto.SecurityServerDataList; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class SharedParamsParserTests { + + @Test + public void testParseDetails() throws Exception { + SharedParamsParser sharedParamsParser = new SharedParamsParser(); + SecurityServerDataList list = sharedParamsParser.parseDetails("src/test/resources/shared-params-2.xml"); + assertEquals(4, list.getSecurityServerDataList().size()); + + // Security Server 1 + assertEquals("niisss01", list.getSecurityServerDataList().get(0).getServerCode()); + assertEquals("10.0.0.1", list.getSecurityServerDataList().get(0).getAddress()); + assertEquals("NIIS", list.getSecurityServerDataList().get(0).getOwner().getName()); + assertEquals("ORG", list.getSecurityServerDataList().get(0).getOwner().getMemberClass()); + assertEquals("2908758-4", list.getSecurityServerDataList().get(0).getOwner().getMemberCode()); + assertEquals(null, list.getSecurityServerDataList().get(0).getOwner().getSubsystemCode()); + + assertEquals(2, list.getSecurityServerDataList().get(0).getClients().size()); + assertEquals("NIIS", list.getSecurityServerDataList().get(0).getClients().get(0).getName()); + assertEquals("ORG", list.getSecurityServerDataList().get(0).getClients().get(0).getMemberClass()); + assertEquals("2908758-4", list.getSecurityServerDataList().get(0).getClients().get(0).getMemberCode()); + assertEquals("Management", list.getSecurityServerDataList().get(0).getClients().get(0).getSubsystemCode()); + + assertEquals("NIIS", list.getSecurityServerDataList().get(0).getClients().get(1).getName()); + assertEquals("ORG", list.getSecurityServerDataList().get(0).getClients().get(1).getMemberClass()); + assertEquals("2908758-4", list.getSecurityServerDataList().get(0).getClients().get(1).getMemberCode()); + assertEquals("MonitoringClient", list.getSecurityServerDataList().get(0).getClients().get(1).getSubsystemCode()); + + // Security Server 2 + assertEquals("testcomss01", list.getSecurityServerDataList().get(1).getServerCode()); + assertEquals("10.0.0.2", list.getSecurityServerDataList().get(1).getAddress()); + assertEquals("Test Company", list.getSecurityServerDataList().get(1).getOwner().getName()); + assertEquals("COM", list.getSecurityServerDataList().get(1).getOwner().getMemberClass()); + assertEquals("1234567-8", list.getSecurityServerDataList().get(1).getOwner().getMemberCode()); + assertEquals(null, list.getSecurityServerDataList().get(1).getOwner().getSubsystemCode()); + + assertEquals(3, list.getSecurityServerDataList().get(1).getClients().size()); + assertEquals("NIIS", list.getSecurityServerDataList().get(1).getClients().get(0).getName()); + assertEquals("ORG", list.getSecurityServerDataList().get(1).getClients().get(0).getMemberClass()); + assertEquals("2908758-4", list.getSecurityServerDataList().get(1).getClients().get(0).getMemberCode()); + assertEquals("MonitoringClient", list.getSecurityServerDataList().get(1).getClients().get(0).getSubsystemCode()); + + assertEquals("Test Company", list.getSecurityServerDataList().get(1).getClients().get(1).getName()); + assertEquals("COM", list.getSecurityServerDataList().get(1).getClients().get(1).getMemberClass()); + assertEquals("1234567-8", list.getSecurityServerDataList().get(1).getClients().get(1).getMemberCode()); + assertEquals("TestClient", list.getSecurityServerDataList().get(1).getClients().get(1).getSubsystemCode()); + + assertEquals("Test Agency", list.getSecurityServerDataList().get(1).getClients().get(2).getName()); + assertEquals("GOV", list.getSecurityServerDataList().get(1).getClients().get(2).getMemberClass()); + assertEquals("8765432-1", list.getSecurityServerDataList().get(1).getClients().get(2).getMemberCode()); + assertEquals("TestService", list.getSecurityServerDataList().get(1).getClients().get(2).getSubsystemCode()); + + // Security Server 3 + assertEquals("testagess01", list.getSecurityServerDataList().get(2).getServerCode()); + assertEquals("10.0.0.3", list.getSecurityServerDataList().get(2).getAddress()); + assertEquals("Test Agency", list.getSecurityServerDataList().get(2).getOwner().getName()); + assertEquals("GOV", list.getSecurityServerDataList().get(2).getOwner().getMemberClass()); + assertEquals("8765432-1", list.getSecurityServerDataList().get(2).getOwner().getMemberCode()); + assertEquals(null, list.getSecurityServerDataList().get(2).getOwner().getSubsystemCode()); + + assertEquals(1, list.getSecurityServerDataList().get(2).getClients().size()); + assertEquals("Test Company", list.getSecurityServerDataList().get(2).getClients().get(0).getName()); + assertEquals("COM", list.getSecurityServerDataList().get(2).getClients().get(0).getMemberClass()); + assertEquals("1234567-8", list.getSecurityServerDataList().get(2).getClients().get(0).getMemberCode()); + assertEquals(null, list.getSecurityServerDataList().get(2).getClients().get(0).getSubsystemCode()); + + // Security Server 4 + assertEquals("niisss02", list.getSecurityServerDataList().get(3).getServerCode()); + assertEquals("10.0.0.4", list.getSecurityServerDataList().get(3).getAddress()); + assertEquals("NIIS", list.getSecurityServerDataList().get(3).getOwner().getName()); + assertEquals("ORG", list.getSecurityServerDataList().get(3).getOwner().getMemberClass()); + assertEquals("2908758-4", list.getSecurityServerDataList().get(3).getOwner().getMemberCode()); + assertEquals(null, list.getSecurityServerDataList().get(3).getOwner().getSubsystemCode()); + + assertEquals(0, list.getSecurityServerDataList().get(3).getClients().size()); + } +} \ No newline at end of file diff --git a/xroad-catalog-lister/src/test/java/fi/vrk/xroad/catalog/lister/TestUtil.java b/xroad-catalog-lister/src/test/java/fi/vrk/xroad/catalog/lister/TestUtil.java index 65513de5..37e8c071 100644 --- a/xroad-catalog-lister/src/test/java/fi/vrk/xroad/catalog/lister/TestUtil.java +++ b/xroad-catalog-lister/src/test/java/fi/vrk/xroad/catalog/lister/TestUtil.java @@ -1,7 +1,8 @@ /** * The MIT License * - * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) Copyright (c) 2016-2022 Finnish Digital Agency + * Copyright (c) 2023- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2016-2023 Finnish Digital Agency * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/xroad-catalog-lister/src/test/resources/shared-params-2.xml b/xroad-catalog-lister/src/test/resources/shared-params-2.xml new file mode 100644 index 00000000..aa46f532 --- /dev/null +++ b/xroad-catalog-lister/src/test/resources/shared-params-2.xml @@ -0,0 +1,145 @@ + + + PLAYGROUND + + Test CA + + MIIFRzCCAy+gAwIBAgIULidVXDUQT2Lhjo3TmW0a9zNhf8MwDQYJKoZIhvcNAQELBQAwKzEXMBUGA1UECgwOWC1Sb2FkIFRlc3QgQ0ExEDAOBgNVBAMMB1Rlc3QgQ0EwHhcNMjAwMTE0MTIxODExWhcNNDAwMTA5MTIxODExWjArMRcwFQYDVQQKDA5YLVJvYWQgVGVzdCBDQTEQMA4GA1UEAwwHVGVzdCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMNdU89mhOyYzveF17r2n5DKJd2QSC5FkjcTrVWD6/XiWpISavGEmGRlxLQk4f8eq+HsfaHc5z+XLTDF9AHpF1wALPeibU1DpxrGTxdyMar9l/5f5klGGjA1xRkyPGB9wEEVb1M3M9OSvmI/AYdOROZnlPGSNmn2Hk+DOML82T+LqYb85LzG1/Yfr1bcWbO9PFi2iB8i4A1oHc2AkOctuEiFY2Rj+Jx1nGTcT154EMNH0t5HtyuMsu+yqWDAdU8D7AhMYs2C0AR0DG3FlMfWWICmrOIADF0876YIdlJE6i00wnqtZcCCEOT3WFxshkW7e7ZuIc7frkZ+pC145hOJLho9xeOHExiFkc+Ys7JxOUsKYleD6/MMTum8qDXr66W6D7s7z0blw2JSsSRztwHc3+0LjnidlTz8mobaC6LENaglEzTky6WyO4aybL5smAnNmynvbTmfNyVEhPxyovuhiZNRjndSV7xtXSx76PuzyQtROE4Qw43/1hYNcahl1ILYqJ9ICiZqYYL7xtqoiBqX+BtPbiaLENKmXdf2lUP6v3Rx1XmplKwa4fnd69KljtFFuhbp1Kj1BDcAJpSZs/vRSLsbuuXhPMSXY3PqOSWtCKcSJ+Ut42wtBuQSJDhu90qeRh0EVoQnSpxRwCx5xXKt0K+5HimrzRdoFSDIuRZPppMLAgMBAAGjYzBhMB0GA1UdDgQWBBSE/IsM1N/N5Y964wjs1duaEW/3SzAfBgNVHSMEGDAWgBSE/IsM1N/N5Y964wjs1duaEW/3SzAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAdhTrS4Ll43LlSaJFRDevQ/0c2A+Y6+yjYEIGJ0MIWm3Mw4MOSiIWsLhBfQ+d7Bu/qjsGTgoEwp+cztENUxJkYfUd8nl4ruQaiDYAOMgRU5fGA0vMY6KMhD1XJcm7pDCQfkTzYubroVG+IyWlScCb4To4wDEM+XpdjbBPF8EqoiNnNmtaDukz+Yo6imjdSNwWinxIfAjiytB53Pu9SeuTIaCfmHEL27/Jg+pjHbwInmd5Cy3TPemebQmrARBKKC9PPSrv4zddATRSqBkRP5WUUG/hIsX+JWGqDMhY+zsofJPeF8tfMemfaw3ZMepXmAYA7uK9ZywuhdIyOF0dF8pkANbAlJoudKtI/hLC+VxXOezkKh33V51/ViIdENtJUgYJ+kJsxLTONMBGbAs6BGRcbvVaMVp1HlKX3N3Bg7lvNBZ3jswMUy0NoWdUAgRXHv2rjHg/sTz4oJj2BuCqvWH3uw02PoJ+EX83YiNMEUHheH9V8eCnkyVwDEs04y/KRRCt2YwbB4jO5it4Jy4cXnSIt5rZZNamSHr/R6Nm00GRt0F++toVIzIazdPqRTCtna/awiqacib85dlphcVXwVb+5g6aNgNs7b/L57n9YB6aYL54WsqVEg0JMRqtojFPiRh5Egz3zBlg1faYqmp6rDGsIBLR/Da54qJhoZJEMKK73BU= + + http://10.18.150.217:8888 + + + ee.ria.xroad.common.certificateprofile.impl.FiVRKCertificateProfileInfoProvider + + + Test TSA + http://10.18.150.217:8899 + MIIE/DCCAuSgAwIBAgIBAjANBgkqhkiG9w0BAQsFADArMRcwFQYDVQQKDA5YLVJvYWQgVGVzdCBDQTEQMA4GA1UEAwwHVGVzdCBDQTAeFw0yMDAxMTQxMjE4MTJaFw00MDAxMDkxMjE4MTJaMCwxFzAVBgNVBAoMDlgtUm9hZCBUZXN0IENBMREwDwYDVQQDDAhUZXN0IFRTQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAJpmrnmsYi0dihh++aK2PtRY4Zw68/4kRhY3US52Acs9iEzrSJ0FfaqeFEPIwEaQHZ4l9sbSTu5P74BtyMugGmqa2KoZHMuO+b2Ki+cfZeDRxZLWJ7AxQ0z21W2QTFpdLX8259epLN6D0qwXWE9iIIiTrWOVuCVxCCP07RGosIA/SkfTk29hvxyl2GumbNwypKSJu/xMskCBGuXAHlFNPZ0GzOhX6IEtvglHh1B64Jd6h6JdlN8aqSdHYrm823f2lB+38RRDsaelw7e4C0ge1wFCUjw+sMtK2OOCGiy/RXR2iWMAMymK9tkCsUaboT2Ca7bbZicWi+UT/MFR+osG7Sy3us7FTgpFmPSOzqt8l3FCwLij2FUZ7+NP2UAKenvEgGEFPuBLp3TpX7vVARj2KX6KFsMyJRWj76xh6TcSdlpxbfPECKMUu05iKRtA0ZksiXGLe4SIpwj9Ev5HLS3HFhmTVFaGeI69AhhSCiF21i82S1FP0tpEKvCTugAXydq+h8ez5VZ1zFtBuVTTBoR/+Dj8NYOGt5uRObNgF668FDgw6dAI6GA5/IHSAvWbhn9MI/cbNK4zqvYvB0y+U2plm46N7XNVukqbJmAOcrBhsTyqxL38jO211fDFrwBuUI/uaA6dKD8iVF71blxBBrgPRmYm93/P1iPy/jnKGYKAlFHbAgMBAAGjKjAoMBYGA1UdJQEB/wQMMAoGCCsGAQUFBwMIMA4GA1UdDwEB/wQEAwIGQDANBgkqhkiG9w0BAQsFAAOCAgEAkbN/+yiOqWtjXeXnyc9WHSxK0O8MTWseUrt75TMkBaxIS0nVmTjuztSm9UsYit2AOa6rKicckrrvTSpf/YQbRrFfG5THydJ/FcI99rCIU7thCS2XpPeF+5sM0zQ7CRoVJp/iqbGX+2hsklg9YvOn37vk2q0PeTk+hxXg9JOpfDFAa6MA1xuRGubjIgipf5UfyYUtQIXrpGDzQLFt608niXiGp/v+E5rmhOSayYeGQZybH1j5uK7vcLWINPMUk7LNm0BIc5bj4S+gFUQG632SDB2eS+fE4fUpTh41gB1YXMe+2kI+1p1/+2wXFnEEa3/QaHa2K8O5z4UnFJ/6AqUsD3FJDNKm8geqwQ6nre/6NYwf3bxMkSfJBBe0Hr/lnH8LX5aIvxk3gjLXYqZYflr5lAnxhlSiZxDZEHE9AcsIEjhD3eX2NRBEcCklH4L0MhHlIO1lNrLaOYhLX/VG/I1keUoY25+rMk+oNyaMe55QQsXRS5p8z2I0540LE0dfZWSIelywZgDjnSXsE7LxSLJ4vPyGVjJT7pDbRT6woTSlea1EezljKrPWzHkMWojj394rThopV8cBfBJQS1SZ8C3XArW72zjD9UtyQn6SirY6zwwDzeTN0vwICDJHSiEzrzBMo730GpGbEKZDaTk712F2Fb2oa18wJttktCp6Tk8I3+I= + + + + ORG + Non-profit organizations, associations, institutes + + 2908758-4 + NIIS + + TestTopic + + + MonitoringClient + + + Management + + + NotTopic + + + DeathOfAPerson + + + + + COM + Commercial + + 1234567-8 + Test Company + + hsmtest + + + TestClient2 + + + TestClient + + + + + GOV + Governmental + + 8765432-1 + Test Agency + + DeathOfAPersonListener1 + + + TestService + + + Subscriber + + + + id0 + niisss01 +

Xnuio}4KfJJ@osGnsTlQP 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