# Notices for Eclipse MDM|BL

This content is produced and maintained by the Eclipse MDM|BL project,
it is a project of the openMDM(R) Eclipse Working Group.

* Project home: https://projects.eclipse.org/projects/technology.mdmbl

## Trademarks

Eclipse MDM|BL, MDM|BL and Eclipse openMDM(R) logo are registered trademarks
of the Eclipse Foundation.

## Copyright

All content is the property of the following respective authors or their employers.
For more information regarding authorship of content, please consult the listed
source code repository logs.

Copyright (c) 2016-2018 Gigatronik Ingolstadt GmbH
Copyright (c) 2016-2018 Peak Solution GmbH
Copyright (c) 2017-2018 science + computing AG Tuebingen (ATOS SE)
Copyright (c) 2017-2018 Canoo Engineering AG
Copyright (c) 2017 Florian Schmitt
Copyright (c) 2017-2018 Angelika Wittek
Copyright (c) 2018 Elektronische Fahrwerksysteme GMBH
Copyright (c) 2018 Karakun AG

## Declared Project Licenses

This program and the accompanying materials are made available under the
terms of the Eclipse Public License v. 2.0 which is available at
http://www.eclipse.org/legal/epl-2.0.

SPDX-License-Identifier: EPL-2.0

## Source Code

The project maintains the following source code repositories:

org.eclipse.mdm.api.base.git	      - The openMDM(R) API.
org.eclipse.mdm.api.default.git	    - Extension of the openMDM(R) API containing default elements.
org.eclipse.mdm.api.odsadapter.git	- ODS implementation of persistence adapter.
org.eclipse.mdm.nucleus.git	        - Core building blocks for the openMDM Business Logic and Web Frontend.

## Third-party Content

The Content includes items that have been sourced from third parties as set out below.
If you did not receive this Content directly from the Eclipse Foundation, the following
is provided for informational purposes only, and you should look to
the Redistributor's license for terms and conditions of use.

antlr4-4.5.3.jar(2.5.3)
    * License: New BSD license

aopalliance-repackaged-2.5.0-b05.jar (2.5.0-b05)
    * License: CDDL

commons-codec-1.2.jar (1.2)
    * License: Apache License, 2.0

commons-httpclient-3.1.jar  (3.1)
    * License: Apache License, 2.0

commons-lang3-3.4.jar (3.4)
    * License: Apache License, 2.0

gson-2.7.jar (2.7)
    * License: Apache License, 2.0

Google Guava Version: 25.0-jre  (25.0)
    * License: Apache License, 2.0
    
Gradle Wrapper (4.10.2)
    * License: Apache License, 2.0    

hk2-api-2.5.0-b05.jar (2.5.0-b05)
    * License: CDDL-1.1

hk2-locator-2.5.0-b05.jar(2.5.0-b05)
    * License: CDDL

hk2-utils-2.5.0-b05.jar  (2.5.0-b05)
    * License: CDDL

jackson-annotations-2.9.0.jar  (2.9.0)
    * License: Apache License, 2.0

jackson-core-2.9.2.jar(2.9.2)
    * License: Apache License, 2.0

jackson-databind-2.9.2.jar  (2.9.2)
    * License: Apache License, 2.0

jackson-jaxrs-base-2.9.2.jar(2.9.2)
    * License: Apache License, 2.0

jackson-jaxrs-json-provider-2.9.2.jar(2.9.2)
    * License: Apache License, 2.0

jackson-module-jaxb-annotations-2.9.2.jar  (2.9.2)
    * License: Apache License, 2.0

javassist-3.20.0-GA.jar  (2.20.0-GA)
    * License: Apache 2.0

jcl-over-slf4j-1.7.25.jar(1.7.25)
    * License: MIT License
    * Licence Path: https://www.slf4j.org/license.html
    * Project URL:  https://www.slf4j.org
    * Source URL:   https://github.com/qos-ch/slf4j

jersey-client-2.23.2.jar (2.23.2)
     * License: CDDL

jersey-common-2.23.2.jar (2.23.2)
    * License: CDDL

jersey-container-servlet-2.23.2.jar  (2.23.2)
    * License: CDDL

jersey-container-servlet-core-2.23.3.jar(2.23.2)
    * License: CDDL

jersey-guava-2.23.2.jar  (2.23.2)
    * License: Apache License, 2.0

jersey-media-jaxb-2.23.2.jar(2.23.2)
    * License: CDDL

jersey-media-sse-2.23.2.jar (2.23.2)
    * License: CDDL

jersey-server-2.23.2.jar (2.23.2)
    * License: Apache-2.0

logback-classic-1.2.3.jar(1.2.3)
    * License: Eclipse Public License 1.0

logback-core-1.2.3.jar(1.2.3)
    * License: Eclipse Public License 1.0

osgi-resource-locator-1.0.1.jar(1.0.1)
    * License: CDDL

protobuf-java-3.2.0.jar (3.2.0)
    * License: New BSD license

protobuf-java-util-3.2.0.jar  (3.2.0)
    * License: New BSD license

slf4j-api-1.7.25.jar  (1.7.25)
    * License: MIT license
    * Licence Path: https://www.slf4j.org/license.html
    * Project URL: https://github.com/qos-ch/slf4j
    * Source URL:  https://github.com/qos-ch/slf4j/releases/tag/v_1.7.25

validation-api-1.1.0.Final.jar (1.1.0.Final)
* License: Apache License, 2.0

vavr-0.9.1-sources.jar (0.9.1)
* License: Apache License, 2.0

@angular/common@2.4.8
    * License: MIT
    * Licence Path: https://github.com/angular/angular/blob/master/LICENSE
    * Project: https://github.com/angular/angular
    * Source:  https://github.com/angular/angular

@angular/compiler@2.4.8
    * License: MIT
    * Licence Path: https://github.com/angular/angular/blob/master/LICENSE
    * Licence Path: https://github.com/angular/angular/blob/master/LICENSE
    * Project: https://github.com/angular/angular
    * Source:  https://github.com/angular/angular

@angular/core@2.4.8
    * License: MIT
    * Licence Path: https://github.com/angular/angular/blob/master/LICENSE
    * Project: https://github.com/angular/angular
    * Source:  https://github.com/angular/angular

@angular/forms@2.4.8
    * License: MIT
    * Licence Path: https://github.com/angular/angular/blob/master/LICENSE
    * Project: https://github.com/angular/angular
    * Source:  https://github.com/angular/angular

@angular/http@2.4.8
    * License: MIT
    * Licence Path: https://github.com/angular/angular/blob/master/LICENSE
    * Project: https://github.com/angular/angular
    * Source:  https://github.com/angular/angular

@angular/platform-browser-dynamic@2.4.8
    * License: MIT
    * Licence Path: https://github.com/angular/angular/blob/master/LICENSE
    * Project: https://github.com/angular/angular
    * Source:  https://github.com/angular/angular

@angular/platform-browser@2.4.8
    * License: MIT
    * Licence Path: https://github.com/angular/angular/blob/master/LICENSE
    * Project: https://github.com/angular/angular
    * Source:  https://github.com/angular/angular

@angular/router@3.4.8
    * License: MIT
    * Licence Path: https://github.com/angular/angular/blob/master/LICENSE
    * Project: https://github.com/angular/angular
    * Source:  https://github.com/angular/angular

@types/file-saver@0.0.0
    * License: MIT
    * Licence Path: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/LICENSE
    * Project: https://github.com/DefinitelyTyped/DefinitelyTyped
    * Source:  https://github.com/DefinitelyTyped/DefinitelyTyped

bootstrap@3.3.7
    * License: MIT
    * Licence Path: https://github.com/twbs/bootstrap/raw/master/LICENSE
    * Project: https://github.com/twbs/bootstrap
    * Source:  https://github.com/twbs/bootstrap

class-transformer@0.1.6
    * License: MIT
    * Licence Path: https://github.com/typestack/class-transformer/blob/master/LICENSE
    * Project: https://github.com/pleerock/class-transformer
    * Source:  https://github.com/pleerock/class-transformer

core-js@2.4.1
    * License: MIT
    * Licence Path: https://github.com/zloirock/core-js/raw/master/LICENSE
    * Project: https://github.com/zloirock/core-js
    * Source:  https://github.com/zloirock/core-js

file-saver@1.3.3
    * License: MIT
    * Licence Path: https://github.com/eligrey/FileSaver.js/raw/master/LICENSE.md
    * Project: https://github.com/eligrey/FileSaver.js
    * Source:  https://github.com/eligrey/FileSaver.js

font-awesome@4.7.0
    * License: MIT
    * Licence Path: https://github.com/FortAwesome/Font-Awesome/blob/master/LICENSE.txt
    * Project: https://fontawesome.com/
    * Source:  https://github.com/FortAwesome/Font-Awesome

moment@2.17.1
    * License: MIT
    * Licence Path: https://github.com/moment/moment/raw/master/LICENSE
    * Project: https://github.com/moment/moment
    * Source:  https://github.com/moment/moment

ngx-bootstrap@1.9.1
    * License: MIT
    * Licence Path: https://github.com/valor-software/ngx-bootstrap/blob/development/LICENSE
    * Project: https://valor-software.com/ngx-bootstrap
    * Source:  https://github.com/valor-software/ngx-bootstrap

ng2-split-pane@1.3.1
    * License: MIT
    * Licence Path: https://github.com/wannabegeek/ng2-split-pane/raw/master/LICENSE
    * Project: https://github.com/wannabegeek/ng2-split-pane
    * Source:  https://github.com/wannabegeek/ng2-split-pane

primeng@2.0.5
    * License: MIT
    * Licence Path: https://github.com/primefaces/primeng/raw/master/LICENSE.md
    * Project: https://github.com/primefaces/primeng
    * Source:  https://github.com/primefaces/primeng

reflect-metadata@0.1.3
    * License: Apache-2.0
    * Project: https://github.com/rbuckton/ReflectDecorators
    * Source:  https://github.com/rbuckton/ReflectDecorators

rxjs@5.1.0
    * License: Apache-2.0
    * Project: https://github.com/ReactiveX/RxJS
    * Source:  https://github.com/ReactiveX/RxJS

symbol-observable@1.2.0
    * License: MIT
    * Licence Path: https://github.com/blesh/symbol-observable/raw/master/license
    * Project: https://github.com/blesh/symbol-observable
    * Source:  https://github.com/blesh/symbol-observable

ts-helpers@1.1.1
    * License: MIT
    * Licence Path: https://github.com/ngParty/ts-helpers/raw/master/LICENSE
    * Project: https://github.com/ngParty/ts-helpers
    * Source:  https://github.com/ngParty/ts-helpers

zone.js@0.7.6
    * License: MIT
    * Licence Path: https://github.com/angular/zone.js/raw/master/LICENSE
    * Project: https://github.com/angular
    * Source:  https://github.com/angular/zone.js
    
FFAMFAMFAM Silk Icon, Version 1.3
    * License: Creative Commons Attribution 3.0 License 
    * Licence Path: https://creativecommons.org/licenses/by/3.0/
    * Project: http://www.famfamfam.com/lab/icons/silk/
    * Source:  http://www.famfamfam.com/lab/icons/silk/

ods530.idl
Permission of use:
From Hans-Georg Swolana, Chairman of the Board ASAM e.V.,
 Prof. Dr. Marcus Rieker, Member of the Board ASAM e.V.
Date: Hoehenkirchen, 06/01/2016
"The ASAM Board of Directors releases the IDL files for use under the EPL to the Eclipse IWG openMDM.
This is valid for all versions of ASAM ODS 5.3.x.
This permission is valid under the conditions of Eclipse will not modify the file."

AvalonEvent.idl, CorbaFileServer.idl
Permission of use:
From Dr. Ralph Noerenberg
Date: 08/15/2016
"Herewith, we release the generated Client-Source-Code generated from our CORBA IDLs, namely
* CORBANotification Service (generated from „AvalonEvent.idl”)
* CORBAFileServer (generated from „CorbaFileServer.idl“),
Under the Eclipse Public License (EPL). This agreement does not include the „AvalonEvent.idl“ and
„CorbaFileServer.idl“ itself, which remain protected property of HighQSoft. "

OMG Notification Service Specification Version: 1.1
The terms of use are defined in section "Freely Available And Available
Free" see: http://www.omg.org/gettingstarted/overview.htm

OMG Event Service Specification Version: 1.2
The terms of use are defined in section "Freely Available And Available
Free" see: http://www.omg.org/gettingstarted/overview.htm


## Cryptography

Content may contain encryption software. The country in which you are currently
may have restrictions on the import, possession, and use, and/or re-export to
another country, of encryption software. BEFORE using any encryption software,
please check the country's laws, regulations and policies concerning the import,
possession, or use, and re-export of encryption software, to see if this is
permitted.
