- - - - - - - - - - - - - - - - - - - - - - -

This product bundles "Simple Logging Facade for Java (SLF4J)", which is available under an
MIT license (MIT).  See https://www.slf4j.org/license.html

- - - - - - - - - - - - - - - - - - - - - - -

This product bundles "jsonld-java" , which is available under a
BSD license (BSD-3-Clause). See 
https://github.com/jsonld-java/jsonld-java/blob/master/LICENCE

- - - - - - - - - - - - - - - - - - - - - - -

This product bundles "Dexx Collections", which is available under an
MIT license (MIT).  See https://github.com/andrewoma/dexx/blob/master/LICENSE.txt
  
"Dexx Collections" includes following NOTICE
----------
Portions based on code from the Scala standard library.
Copyright (c) 2002-2014 EPFL
Copyright (c) 2011-2014 Typesafe, Inc.
Licensed under BSD-style license (see licenses/LICENSE_Scala.txt)
----------

- - - - - - - - - - - - - - - - - - - - - - -

This product bundles "LatencyUtils"
which is available under a "BSD 2-Clause License" (BSD-2-Clause).
See https://github.com/LatencyUtils/LatencyUtils/blob/master/LICENSE

This product bundles "HdrHistogram"
which is available under a "BSD 2-Clause License" (BSD-2-Clause).
See https://github.com/HdrHistogram/HdrHistogram/blob/master/LICENSE.txt

This product bundles "Bootstrap", which is available under an
MIT license.  See: https://github.com/twbs/bootstrap/blob/master/LICENSE

This product bundles "codemirror", which is available under an
MIT license.  See http://codemirror.net/LICENSE

This product bundles "jquery", which is available under an
MIT license.  See https://jquery.org/license/

This product bundles "jquery.form", which is available under an
MIT license.  See http://malsup.github.io/mit-license.txt

This product bundles "jquery.xdomainrequest", which is available under an
MIT license.  See https://github.com/MoonScript/jQuery-ajaxTransport-XDomainRequest/blob/master/LICENSE.txt

This product bundles "backbone.js", which is available under an
MIT license.  See https://github.com/jashkenas/backbone/blob/master/LICENSE

This product bundles "backbone.marionette", which is available under an
MIT license. See http://mutedsolutions.mit-license.org/
   "backbone.marionette" includes "Backbone.BabySitter" and 
   "Backbone.Wreqr" also available under the same MIT license.

This product bundles "html5shiv", which is available under an
MIT license.  See https://code.google.com/p/html5shiv/

This product bundles "RequireJS", which is available under an
MIT license. 
https://github.com/jrburke/requirejs/blob/master/LICENSE
  "RequireJS" is also available with a "30clause BSD license"

This product bundles "Respond", which is available under an
MIT license. See https://github.com/scottjehl/Respond/blob/master/LICENSE-MIT

This product bundles "sprintf.js", which is available under a
"3 clause BSD" license. 
  https://github.com/alexei/sprintf.js/blob/master/LICENSE

This product bundles "underscore", which is available under an
MIT license.  See https://github.com/jashkenas/underscore/blob/master/LICENSE

This product bundles "FontAwesome"
  "Font Awesome by Dave Gandy - http://fontawesome.io"
The font is available under an SIL Open Font License 1.1
and the CSS files under an MIT License.
See http://fontawesome.io/license/

This product bundles "jQuery File Upload Plugin" 
which is available under an MIT License.
See https://github.com/blueimp/jQuery-File-Upload

This product bundles "Bootstrap-select"
which is available under an MIT License.
See https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE

This product bundles "pivot.js"
which is available under a BSD 3-clause style license.
https://github.com/rwjblue/pivot.js/blob/master/LICENSE

This product bundles "YASEQE - Yet Another Sparql Query Editor"
which is available under an MIT License.
See http://yasqe.yasgui.org/license.txt
from https://github.com/YASGUI/YASQE

This product bundles "YASR - Yet Another Sparql Resultset GUI"
which is available under an MIT License.
See http://yasr.yasgui.org/license.txt
from https://github.com/YASGUI/YASR

- - - - - - - - - - - - - - - - - - - - - - -

==============================================================
 Jetty Web Container
 Copyright 1995-2019 Mort Bay Consulting Pty Ltd.
==============================================================

The Jetty Web Container is Copyright Mort Bay Consulting Pty Ltd
unless otherwise noted.

Jetty is dual licensed under both

  * The Apache 2.0 License
    http://www.apache.org/licenses/LICENSE-2.0.html

      and

  * The Eclipse Public 1.0 License
    http://www.eclipse.org/legal/epl-v10.html

Jetty may be distributed under either license.

------
Eclipse

The following artifacts are EPL.
 * org.eclipse.jetty.orbit:org.eclipse.jdt.core

The following artifacts are EPL and ASL2.
 * org.eclipse.jetty.orbit:javax.security.auth.message


The following artifacts are EPL and CDDL 1.0.
 * org.eclipse.jetty.orbit:javax.mail.glassfish


------
Oracle

The following artifacts are CDDL + GPLv2 with classpath exception.
https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html

 * javax.servlet:javax.servlet-api
 * javax.annotation:javax.annotation-api
 * javax.transaction:javax.transaction-api
 * javax.websocket:javax.websocket-api

------
Oracle OpenJDK

If ALPN is used to negotiate HTTP/2 connections, then the following
artifacts may be included in the distribution or downloaded when ALPN 
module is selected. 

 * java.sun.security.ssl

These artifacts replace/modify OpenJDK classes.  The modififications
are hosted at github and both modified and original are under GPL v2 with 
classpath exceptions.
http://openjdk.java.net/legal/gplv2+ce.html


------
OW2

The following artifacts are licensed by the OW2 Foundation according to the
terms of http://asm.ow2.org/license.html

org.ow2.asm:asm-commons
org.ow2.asm:asm


------
Apache

The following artifacts are ASL2 licensed.

org.apache.taglibs:taglibs-standard-spec
org.apache.taglibs:taglibs-standard-impl


------
MortBay

The following artifacts are ASL2 licensed.  Based on selected classes from 
following Apache Tomcat jars, all ASL2 licensed.

org.mortbay.jasper:apache-jsp
  org.apache.tomcat:tomcat-jasper
  org.apache.tomcat:tomcat-juli
  org.apache.tomcat:tomcat-jsp-api
  org.apache.tomcat:tomcat-el-api
  org.apache.tomcat:tomcat-jasper-el
  org.apache.tomcat:tomcat-api
  org.apache.tomcat:tomcat-util-scan
  org.apache.tomcat:tomcat-util

org.mortbay.jasper:apache-el
  org.apache.tomcat:tomcat-jasper-el
  org.apache.tomcat:tomcat-el-api


------
Mortbay

The following artifacts are CDDL + GPLv2 with classpath exception.

https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html

org.eclipse.jetty.toolchain:jetty-schemas

------
Assorted

The UnixCrypt.java code implements the one way cryptography used by
Unix systems for simple password protection.  Copyright 1996 Aki Yoshida,
modified April 2001  by Iris Van den Broeke, Daniel Deville.
Permission to use, copy, modify and distribute UnixCrypt
for non-commercial or commercial purposes and without fee is
granted provided that the copyright notice appears in all copies.
