# Notices for EMF Client

This content is produced and maintained by the Eclipse EMF Client project.

* Project home: https://projects.eclipse.org/projects/modeling.ecp

## Trademarks

Eclipse EMF Client, and EMF Client are trademarks of the Eclipse Foundation.

## Copyright

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

## Declared Project Licenses

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

SPDX-License-Identifier: EPL-1.0

## Source Code

The project maintains the following source code repositories:

* http://git.eclipse.org/c/emfclient/org.eclipse.emf.ecp.core.git
* http://git.eclipse.org/c/emfclient/org.eclipse.emf.ecp.other.git
* http://git.eclipse.org/c/emfclient/org.eclipse.emf.ecp.releng.git

## Third-party Content

Google Gson (2.2.4)

* License: Apache License 2.0

h2 Database (1.3.168)

* License: Eclipse Public License

## 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.

