                                 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.



============================================================================
   APACHE HUGEGRAPH (Incubating) SUBCOMPONENTS:

   The Apache HugeGraph(Incubating) project contains subcomponents with separate copyright
   notices and license terms. Your use of the source code for the these
   subcomponents is subject to the terms and conditions of the following
   licenses.

========================================================================
Apache 2.0 licenses
========================================================================

The following components are provided under the Apache License. See project link for details.
The text of each license is the standard Apache 2.0 license.

hugegraph-core/src/main/java/org/apache/hugegraph/type/Nameable.java from https://github.com/JanusGraph/janusgraph
hugegraph-core/src/main/java/org/apache/hugegraph/type/define/Cardinality.java from https://github.com/JanusGraph/janusgraph
hugegraph-core/src/main/java/org/apache/hugegraph/util/StringEncoding.java from https://github.com/JanusGraph/janusgraph
hugegraph-dist/src/assembly/static/bin/wait-storage.sh from https://github.com/JanusGraph/janusgraph
hugegraph-core/src/main/java/org/apache/hugegraph/traversal/optimize/HugeScriptTraversal.java from https://github.com/apache/tinkerpop
hugegraph-test/src/main/java/org/apache/hugegraph/tinkerpop/ProcessBasicSuite.java from https://github.com/apache/tinkerpop
hugegraph-test/src/main/java/org/apache/hugegraph/tinkerpop/StructureBasicSuite.java from https://github.com/apache/tinkerpop
hugegraph-core/src/main/java/org/apache/hugegraph/backend/id/SnowflakeIdGenerator.java from https://github.com/twitter-archive/snowflake
hugegraph-api/src/main/java/org/apache/hugegraph/opencypher/CypherOpProcessor.java from https://github.com/opencypher/cypher-for-gremlin
hugegraph-api/src/main/java/org/apache/hugegraph/opencypher/CypherPlugin.java from https://github.com/opencypher/cypher-for-gremlin


========================================================================
Third party Apache 2.0 licenses
========================================================================

The following components are provided under the Apache 2.0 License.
See licenses/ for text of these licenses.
	(Apache License, Version 2.0) * Java Native Access (net.java.dev.jna:jna:5.5.0 - https://github.com/java-native-access/jna)
	(Apache License, Version 2.0) * jersey-connectors-apache (org.glassfish.jersey.connectors:jersey-apache-connector:3.0.3 - https://projects.eclipse.org/projects/ee4j.jersey/project/jersey-apache-connector)
	(Apache License, Version 2.0) * jersey-container-grizzly2-http (org.glassfish.jersey.containers:jersey-container-grizzly2-http:3.0.3 - https://projects.eclipse.org/projects/ee4j.jersey/project/jersey-container-grizzly2-http)
	(Apache License, Version 2.0) * jersey-container-grizzly2-servlet (org.glassfish.jersey.containers:jersey-container-grizzly2-servlet:3.0.3 - https://projects.eclipse.org/projects/ee4j.jersey/project/jersey-container-grizzly2-servlet)
	(Apache License, Version 2.0) * jersey-container-servlet (org.glassfish.jersey.containers:jersey-container-servlet:3.0.3 - https://projects.eclipse.org/projects/ee4j.jersey/project/jersey-container-servlet)
	(Apache License, Version 2.0) * jersey-container-servlet-core (org.glassfish.jersey.containers:jersey-container-servlet-core:3.0.3 - https://projects.eclipse.org/projects/ee4j.jersey/project/jersey-container-servlet-core)
	(Apache License, Version 2.0) * jersey-core-client (org.glassfish.jersey.core:jersey-client:3.0.3 - https://projects.eclipse.org/projects/ee4j.jersey/jersey-client)
	(Apache License, Version 2.0) * jersey-ext-entity-filtering (org.glassfish.jersey.ext:jersey-entity-filtering:3.0.3 - https://projects.eclipse.org/projects/ee4j.jersey/project/jersey-entity-filtering)
	(Apache License, Version 2.0) * jersey-inject-hk2 (org.glassfish.jersey.inject:jersey-hk2:3.0.3 - https://projects.eclipse.org/projects/ee4j.jersey/project/jersey-hk2)
	(Apache License, Version 2.0) * jersey-media-jaxb (org.glassfish.jersey.media:jersey-media-jaxb:3.0.3 - https://projects.eclipse.org/projects/ee4j.jersey/project/jersey-media-jaxb)
	(Apache License, Version 2.0) * jersey-test-framework-core (org.glassfish.jersey.test-framework:jersey-test-framework-core:3.0.3 - https://projects.eclipse.org/projects/ee4j.jersey/project/jersey-test-framework-core)
	(Apache License, Version 2.0) * jersey-test-framework-provider-grizzly2 (org.glassfish.jersey.test-framework.providers:jersey-test-framework-provider-grizzly2:3.0.3 - https://projects.eclipse.org/projects/ee4j.jersey/project/project/jersey-test-framework-provider-grizzly2)
	(Apache License, Version 2.0) * jersey-core-server (org.glassfish.jersey.core:jersey-server:3.0.3 - https://projects.eclipse.org/projects/ee4j.jersey/jersey-server)
	(Apache License, Version 2.0) * jersey-core-common (org.glassfish.jersey.core:jersey-common:3.0.3 - https://projects.eclipse.org/projects/ee4j.jersey/jersey-common)
	(Apache License, Version 2.0) * jersey-media-json-jackson (org.glassfish.jersey.media:jersey-media-json-jackson:3.0.3 - https://projects.eclipse.org/projects/ee4j.jersey/project/jersey-media-json-jackson)
	(Apache License, Version 2.0) * ASM based accessors helper used by json-smart (net.minidev:accessors-smart:1.2 - http://www.minidev.net/)
	(Apache License, Version 2.0) * Annotations for Metrics (io.dropwizard.metrics:metrics-annotation:4.2.4 - https://metrics.dropwizard.io/metrics-annotation)
	(Apache License, Version 2.0) * Apache Cassandra (org.apache.cassandra:cassandra-all:4.0.10 - https://cassandra.apache.org)
	(Apache License, Version 2.0) * Apache Commons BeanUtils (commons-beanutils:commons-beanutils:1.9.4 - https://commons.apache.org/proper/commons-beanutils/)
	(Apache License, Version 2.0) * Apache Commons Codec (commons-codec:commons-codec:1.11 - http://commons.apache.org/proper/commons-codec/)
	(Apache License, Version 2.0) * Apache Commons Codec (commons-codec:commons-codec:1.15 - https://commons.apache.org/proper/commons-codec/)
	(Apache License, Version 2.0) * Apache Commons Codec (commons-codec:commons-codec:1.9 - http://commons.apache.org/proper/commons-codec/)
	(Apache License, Version 2.0) * Apache Commons Collections (commons-collections:commons-collections:3.2.2 - http://commons.apache.org/collections/)
	(Apache License, Version 2.0) * Apache Commons Compress (org.apache.commons:commons-compress:1.21 - https://commons.apache.org/proper/commons-compress/)
	(Apache License, Version 2.0) * Apache Commons Configuration (commons-configuration:commons-configuration:1.10 - http://commons.apache.org/configuration/)
	(Apache License, Version 2.0) * Apache Commons Configuration (org.apache.commons:commons-configuration2:2.3 - http://commons.apache.org/proper/commons-configuration/)
	(Apache License, Version 2.0) * Apache Commons IO (commons-io:commons-io:2.7 - https://commons.apache.org/proper/commons-io/)
	(Apache License, Version 2.0) * Apache Commons Lang (org.apache.commons:commons-lang3:3.11 - https://commons.apache.org/proper/commons-lang/)
	(Apache License, Version 2.0) * Apache Commons Logging (commons-logging:commons-logging:1.2 - http://commons.apache.org/proper/commons-logging/)
	(Apache License, Version 2.0) * Apache Commons Text (org.apache.commons:commons-text:1.9 - https://commons.apache.org/proper/commons-text)
	(Apache License, Version 2.0) * Apache Groovy (org.codehaus.groovy:groovy-cli-picocli:2.5.14 - https://groovy-lang.org)
	(Apache License, Version 2.0) * Apache Groovy (org.codehaus.groovy:groovy-console:2.5.14 - https://groovy-lang.org)
	(Apache License, Version 2.0) * Apache Groovy (org.codehaus.groovy:groovy-groovysh:2.5.14 - https://groovy-lang.org)
	(Apache License, Version 2.0) * Apache Groovy (org.codehaus.groovy:groovy-json:2.5.14 - https://groovy-lang.org)
	(Apache License, Version 2.0) * Apache Groovy (org.codehaus.groovy:groovy-jsr223:2.5.14 - https://groovy-lang.org)
	(Apache License, Version 2.0) * Apache Groovy (org.codehaus.groovy:groovy-swing:2.5.14 - https://groovy-lang.org)
	(Apache License, Version 2.0) * Apache Groovy (org.codehaus.groovy:groovy-templates:2.5.14 - https://groovy-lang.org)
	(Apache License, Version 2.0) * Apache Groovy (org.codehaus.groovy:groovy-xml:2.5.14 - https://groovy-lang.org)
	(Apache License, Version 2.0) * Apache Groovy (org.codehaus.groovy:groovy:2.5.14 - https://groovy-lang.org)
	(Apache License, Version 2.0) * Apache HttpClient (org.apache.httpcomponents:httpclient:4.5.13 - http://hc.apache.org/httpcomponents-client)
	(Apache License, Version 2.0) * Apache HttpCore (org.apache.httpcomponents:httpcore:4.4.13 - http://hc.apache.org/httpcomponents-core-ga)
	(Apache License, Version 2.0) * Apache Ivy (org.apache.ivy:ivy:2.4.0 - http://ant.apache.org/ivy/)
	(Apache License, Version 2.0) * Apache Log4j API (org.apache.logging.log4j:log4j-api:2.17.1 - https://logging.apache.org/log4j/2.x/log4j-api/)
	(Apache License, Version 2.0) * Apache Log4j Core (org.apache.logging.log4j:log4j-core:2.17.1 - https://logging.apache.org/log4j/2.x/log4j-core/)
	(Apache License, Version 2.0) * Apache Log4j SLF4J Binding (org.apache.logging.log4j:log4j-slf4j-impl:2.17.1 - https://logging.apache.org/log4j/2.x/log4j-slf4j-impl/)
	(Apache License, Version 2.0) * Apache Thrift (org.apache.thrift:libthrift:0.9.2 - http://thrift.apache.org)
	(Apache License, Version 2.0) * Apache TinkerPop :: Gremlin Console (org.apache.tinkerpop:gremlin-console:3.5.1 - http://tinkerpop.apache.org/gremlin-console/)
	(Apache License, Version 2.0) * Apache TinkerPop :: Gremlin Core (org.apache.tinkerpop:gremlin-core:3.5.1 - http://tinkerpop.apache.org/gremlin-core/)
	(Apache License, Version 2.0) * Apache TinkerPop :: Gremlin Driver (org.apache.tinkerpop:gremlin-driver:3.5.1 - http://tinkerpop.apache.org/gremlin-driver/)
	(Apache License, Version 2.0) * Apache TinkerPop :: Gremlin Groovy (org.apache.tinkerpop:gremlin-groovy:3.5.1 - http://tinkerpop.apache.org/gremlin-groovy/)
	(Apache License, Version 2.0) * Apache TinkerPop :: Gremlin Groovy Test (org.apache.tinkerpop:gremlin-groovy-test:3.2.11 - http://tinkerpop.apache.org/gremlin-groovy-test/)
	(Apache License, Version 2.0) * Apache TinkerPop :: Gremlin Server (org.apache.tinkerpop:gremlin-server:3.5.1 - http://tinkerpop.apache.org/gremlin-server/)
	(Apache License, Version 2.0) * Apache TinkerPop :: Gremlin Shaded (org.apache.tinkerpop:gremlin-shaded:3.5.1 - http://tinkerpop.apache.org/gremlin-shaded/)
	(Apache License, Version 2.0) * Apache TinkerPop :: Gremlin Test (org.apache.tinkerpop:gremlin-test:3.5.1 - http://tinkerpop.apache.org/gremlin-test/)
	(Apache License, Version 2.0) * Apache TinkerPop :: TinkerGraph Gremlin (org.apache.tinkerpop:tinkergraph-gremlin:3.5.1 - http://tinkerpop.apache.org/tinkergraph-gremlin/)
	(Apache License, Version 2.0) * Apache Yetus - Audience Annotations (org.apache.yetus:audience-annotations:0.5.0 - https://yetus.apache.org/audience-annotations)
	(Apache License, Version 2.0) * Bean Validation API (javax.validation:validation-api:1.1.0.Final - http://beanvalidation.org)
	(Apache License, Version 2.0) * Byte Buddy (without dependencies) (net.bytebuddy:byte-buddy:1.10.5 - https://bytebuddy.net/byte-buddy)
	(Apache License, Version 2.0) * Byte Buddy agent (net.bytebuddy:byte-buddy-agent:1.10.5 - https://bytebuddy.net/byte-buddy-agent)
	(Apache License, Version 2.0) * CLI (commons-cli:commons-cli:1.1 - http://jakarta.apache.org/commons/cli/)
	(Apache License, Version 2.0) * Caffeine cache (com.github.ben-manes.caffeine:caffeine:2.2.6 - https://github.com/ben-manes/caffeine)
	(Apache License, Version 2.0) * Caffeine cache (com.github.ben-manes.caffeine:caffeine:2.3.1 - https://github.com/ben-manes/caffeine)
	(Apache License, Version 2.0) * Commons Lang (commons-lang:commons-lang:2.6 - http://commons.apache.org/lang/)
	(Apache License, Version 2.0) * Commons Lang (org.apache.commons:commons-lang3:3.1 - http://commons.apache.org/lang/)
	(Apache License, Version 2.0) * Commons Logging (commons-logging:commons-logging:1.1.1 - http://commons.apache.org/logging)
	(Apache License, Version 2.0) * Commons Math (org.apache.commons:commons-math3:3.2 - http://commons.apache.org/proper/commons-math/)
	(Apache License, Version 2.0) * Concurrent-Trees (com.googlecode.concurrent-trees:concurrent-trees:2.4.0 - http://code.google.com/p/concurrent-trees/)
	(Apache License, Version 2.0) * ConcurrentLinkedHashMap (com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4 - http://code.google.com/p/concurrentlinkedhashmap)
	(Apache License, Version 2.0) * Cypher for Gremlin: Gremlin language extensions (org.opencypher.gremlin:cypher-gremlin-extensions:1.0.4 - https://github.com/opencypher/cypher-for-gremlin)
	(Apache License, Version 2.0) * Cypher for Gremlin: Translation (org.opencypher.gremlin:translation:1.0.4 - https://github.com/opencypher/cypher-for-gremlin)
	(Apache License, Version 2.0) * DataStax Java Driver for Apache Cassandra - Core (com.datastax.cassandra:cassandra-driver-core:3.6.0 - https://github.com/datastax/java-driver/cassandra-driver-core)
	(Apache License, Version 2.0) * Disruptor Framework (com.lmax:disruptor:3.3.7 - http://lmax-exchange.github.com/disruptor)
	(Apache License, Version 2.0) * FindBugs-jsr305 (com.google.code.findbugs:jsr305:3.0.1 - http://findbugs.sourceforge.net/)
	(Apache License, Version 2.0) * Findbugs Annotations under Apache License (com.github.stephenc.findbugs:findbugs-annotations:1.3.9-1 - http://stephenc.github.com/findbugs-annotations)
	(Apache License, Version 2.0) * Google Android Annotations Library (com.google.android:annotations:4.1.1.4 - http://source.android.com/)
	(Apache License, Version 2.0) * Gson (com.google.code.gson:gson:2.8.6 - https://github.com/google/gson/gson)
	(Apache License, Version 2.0) * Guava: Google Core Libraries for Java (com.google.guava:guava:25.1-jre - https://github.com/google/guava/guava)
	(Apache License, Version 2.0) * HPPC Collections (com.carrotsearch:hppc:0.7.1 - http://labs.carrotsearch.com/hppc.html/hppc)
	(Apache License, Version 2.0) * HanLP (com.hankcs:hanlp:portable-1.8.3 - https://github.com/hankcs/HanLP)
	(Apache License, Version 2.0) * J2ObjC Annotations (com.google.j2objc:j2objc-annotations:1.1 - https://github.com/google/j2objc/)
	(Apache License, Version 2.0) * JCIP Annotations under Apache License (com.github.stephenc.jcip:jcip-annotations:1.0-1 - http://stephenc.github.com/jcip-annotations)
	(Apache License, Version 2.0) * JJWT :: API (io.jsonwebtoken:jjwt-api:0.11.5 - https://github.com/jwtk/jjwt/jjwt-api)
	(Apache License, Version 2.0) * JJWT :: Extensions :: Jackson (io.jsonwebtoken:jjwt-jackson:0.11.5 - https://github.com/jwtk/jjwt/jjwt-jackson)
	(Apache License, Version 2.0) * JJWT :: Impl (io.jsonwebtoken:jjwt-impl:0.11.5 - https://github.com/jwtk/jjwt/jjwt-impl)
	(Apache License, Version 2.0) * JSON Small and Fast Parser (net.minidev:json-smart:2.3 - http://www.minidev.net/)
	(Apache License, Version 2.0) * JSON.simple (com.googlecode.json-simple:json-simple:1.1 - http://code.google.com/p/json-simple/)
	(Apache License, Version 2.0) * JVM Integration for Metrics (io.dropwizard.metrics:metrics-jvm:3.1.5 - http://metrics.codahale.com/metrics-jvm/)
	(Apache License, Version 2.0) * Jackson datatype: JSR310 (com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.12.1 - https://github.com/FasterXML/jackson-modules-java8/jackson-datatype-jsr310)
	(Apache License, Version 2.0) * Jackson module: JAXB Annotations (com.fasterxml.jackson.module:jackson-module-jaxb-annotations:2.12.1 - https://github.com/FasterXML/jackson-modules-base)
	(Apache License, Version 2.0) * Jackson-JAXRS-JSON (com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:2.12.1 - http://github.com/FasterXML/jackson-jaxrs-providers/jackson-jaxrs-json-provider)
	(Apache License, Version 2.0) * Jackson-JAXRS-base (com.fasterxml.jackson.jaxrs:jackson-jaxrs-base:2.12.1 - http://github.com/FasterXML/jackson-jaxrs-providers/jackson-jaxrs-base)
	(Apache License, Version 2.0) * Jackson-annotations (com.fasterxml.jackson.core:jackson-annotations:2.12.1 - http://github.com/FasterXML/jackson)
	(Apache License, Version 2.0) * Jackson-annotations (com.fasterxml.jackson.core:jackson-annotations:2.12.5 - http://github.com/FasterXML/jackson)
	(Apache License, Version 2.0) * Jackson-core (com.fasterxml.jackson.core:jackson-core:2.12.1 - https://github.com/FasterXML/jackson-core)
	(Apache License, Version 2.0) * Jackson-core (com.fasterxml.jackson.core:jackson-core:2.12.5 - https://github.com/FasterXML/jackson-core)
	(Apache License, Version 2.0) * Jackson-dataformat-YAML (com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.9.3 - https://github.com/FasterXML/jackson-dataformats-text)
	(Apache License, Version 2.0) * Jakarta Bean Validation API (jakarta.validation:jakarta.validation-api:3.0.0 - https://beanvalidation.org)
	(Apache License, Version 2.0) * Jakarta Dependency Injection (jakarta.inject:jakarta.inject-api:2.0.0 - https://github.com/eclipse-ee4j/injection-api)
	(Apache License, Version 2.0) * Java Agent for Memory Measurements (com.github.jbellis:jamm:0.3.0 - https://github.com/jbellis/jamm/)
	(Apache License, Version 2.0) * Java Concurrency Tools Core Library (org.jctools:jctools-core:1.2.1 - https://github.com/JCTools)
	(Apache License, Version 2.0) * Java Concurrency Tools Core Library (org.jctools:jctools-core:2.1.1 - https://github.com/JCTools)
	(Apache License, Version 2.0) * JavaPoet (com.squareup:javapoet:1.8.0 - http://github.com/square/javapoet/)
	(Apache License, Version 2.0) * Joda-Time (joda-time:joda-time:2.10.8 - https://www.joda.org/joda-time/)
	(Apache License, Version 2.0) * Joda-Time (joda-time:joda-time:2.4 - http://www.joda.org/joda-time/)
	(Apache License, Version 2.0) * Kerb Simple Kdc (org.apache.kerby:kerb-simplekdc:2.0.0 - http://directory.apache.org/kerby/kerby-kerb/kerb-simplekdc)
	(Apache License, Version 2.0) * Kerby ASN1 Project (org.apache.kerby:kerby-asn1:2.0.0 - http://directory.apache.org/kerby/kerby-common/kerby-asn1)
	(Apache License, Version 2.0) * Kerby Config (org.apache.kerby:kerby-config:2.0.0 - http://directory.apache.org/kerby/kerby-common/kerby-config)
	(Apache License, Version 2.0) * Kerby PKIX Project (org.apache.kerby:kerby-pkix:2.0.0 - http://directory.apache.org/kerby/kerby-pkix)
	(Apache License, Version 2.0) * Kerby Util (org.apache.kerby:kerby-util:2.0.0 - http://directory.apache.org/kerby/kerby-common/kerby-util)
	(Apache License, Version 2.0) * Kerby XDR Project (org.apache.kerby:kerby-xdr:2.0.0 - http://directory.apache.org/kerby/kerby-common/kerby-xdr)
	(Apache License, Version 2.0) * Kerby-kerb Admin (org.apache.kerby:kerb-admin:2.0.0 - http://directory.apache.org/kerby/kerby-kerb/kerb-admin)
	(Apache License, Version 2.0) * Kerby-kerb Client (org.apache.kerby:kerb-client:2.0.0 - http://directory.apache.org/kerby/kerby-kerb/kerb-client)
	(Apache License, Version 2.0) * Kerby-kerb Common (org.apache.kerby:kerb-common:2.0.0 - http://directory.apache.org/kerby/kerby-kerb/kerb-common)
	(Apache License, Version 2.0) * Kerby-kerb Crypto (org.apache.kerby:kerb-crypto:2.0.0 - http://directory.apache.org/kerby/kerby-kerb/kerb-crypto)
	(Apache License, Version 2.0) * Kerby-kerb Identity (org.apache.kerby:kerb-identity:2.0.0 - http://directory.apache.org/kerby/kerby-kerb/kerb-identity)
	(Apache License, Version 2.0) * Kerby-kerb Server (org.apache.kerby:kerb-server:2.0.0 - http://directory.apache.org/kerby/kerby-kerb/kerb-server)
	(Apache License, Version 2.0) * Kerby-kerb Util (org.apache.kerby:kerb-util:2.0.0 - http://directory.apache.org/kerby/kerby-kerb/kerb-util)
	(Apache License, Version 2.0) * Kerby-kerb core (org.apache.kerby:kerb-core:2.0.0 - http://directory.apache.org/kerby/kerby-kerb/kerb-core)
	(Apache License, Version 2.0) * LZ4 and xxHash (net.jpountz.lz4:lz4:1.3.0 - https://github.com/jpountz/lz4-java)
	(Apache License, Version 2.0) * LZ4 and xxHash (org.lz4:lz4-java:1.8.0 - https://github.com/lz4/lz4-java)
	(Apache License, Version 2.0) * Lucene Common Analyzers (org.apache.lucene:lucene-analyzers-common:8.11.2 - https://lucene.apache.org/lucene-parent/lucene-analyzers-common)
	(Apache License, Version 2.0) * Lucene Core (org.apache.lucene:lucene-core:8.11.2 - https://lucene.apache.org/lucene-parent/lucene-core)
	(Apache License, Version 2.0) * Lucene Smart Chinese Analyzer (org.apache.lucene:lucene-analyzers-smartcn:8.11.2 - https://lucene.apache.org/lucene-parent/lucene-analyzers-smartcn)
	(Apache License, Version 2.0) * Metrics Core (com.codahale.metrics:metrics-core:3.0.2 - http://metrics.codahale.com/metrics-core/)
	(Apache License, Version 2.0) * Metrics Core (io.dropwizard.metrics:metrics-core:3.1.5 - http://metrics.codahale.com/metrics-core/)
	(Apache License, Version 2.0) * Metrics Core (io.dropwizard.metrics:metrics-core:4.0.2 - http://metrics.dropwizard.io/metrics-core)
	(Apache License, Version 2.0) * Metrics Core (io.dropwizard.metrics:metrics-core:4.2.4 - https://metrics.dropwizard.io/metrics-core)
	(Apache License, Version 2.0) * Metrics Integration for Jersey 3.x (io.dropwizard.metrics:metrics-jersey3:4.2.4 - https://metrics.dropwizard.io/metrics-jersey3)
	(Apache License, Version 2.0) * Metrics Integration for Logback (io.dropwizard.metrics:metrics-logback:3.1.5 - http://metrics.codahale.com/metrics-logback/)
	(Apache License, Version 2.0) * Netty/All-in-One (io.netty:netty-all:4.1.44.Final - https://netty.io/netty-all/)
	(Apache License, Version 2.0) * Netty/All-in-One (io.netty:netty-all:4.1.61.Final - https://netty.io/netty-all/)
	(Apache License, Version 2.0) * Nimbus JOSE+JWT (com.nimbusds:nimbus-jose-jwt:4.41.2 - https://bitbucket.org/connect2id/nimbus-jose-jwt)
	(Apache License, Version 2.0) * Ning-compress-LZF (com.ning:compress-lzf:0.8.4 - http://github.com/ning/compress)
	(Apache License, Version 2.0) * OHC core (org.caffinitas.ohc:ohc-core:0.7.4 - http://caffinitas.org/)
	(Apache License, Version 2.0) * OHC core - Java8 optimization (org.caffinitas.ohc:ohc-core-j8:0.4.4 - http://caffinitas.org/)
	(Apache License, Version 2.0) * Objenesis (org.objenesis:objenesis:2.6 - http://objenesis.org)
	(Apache License, Version 2.0) * OpenTracing API (io.opentracing:opentracing-api:0.22.0 - https://github.com/opentracing/opentracing-java/opentracing-api)
	(Apache License, Version 2.0) * OpenTracing-mock (io.opentracing:opentracing-mock:0.22.0 - https://github.com/opentracing/opentracing-java/opentracing-mock)
	(Apache License, Version 2.0) * OpenTracing-noop (io.opentracing:opentracing-noop:0.22.0 - https://github.com/opentracing/opentracing-java/opentracing-noop)
	(Apache License, Version 2.0) * OpenTracing-util (io.opentracing:opentracing-util:0.22.0 - https://github.com/opentracing/opentracing-java/opentracing-util)
	(Apache License, Version 2.0) * SnakeYAML (org.yaml:snakeyaml:1.26 - http://www.snakeyaml.org)
	(Apache License, Version 2.0) * SnakeYAML (org.yaml:snakeyaml:1.27 - http://www.snakeyaml.org)
	(Apache License, Version 2.0) * Thrift Server implementation backed by LMAX Disruptor (com.thinkaurelius.thrift:thrift-server:0.3.7 - http://github.com/xedin/disruptor_thrift_server)
	(Apache License, Version 2.0) * Token provider (org.apache.kerby:token-provider:2.0.0 - http://directory.apache.org/kerby/kerby-provider/token-provider)
	(Apache License, Version 2.0) * ansj_seg (org.ansj:ansj_seg:5.1.6 - https://github.com/NLPchina/ansj_seg)
	(Apache License, Version 2.0) * cli (io.airlift:airline:0.6 - https://github.com/airlift/airline)
	(Apache License, Version 2.0) * com.alipay.sofa.common:sofa-common-tools (com.alipay.sofa.common:sofa-common-tools:1.0.12 - https://github.com/sofastack/sofa-common-tools)
	(Apache License, Version 2.0) * com.alipay.sofa:bolt (com.alipay.sofa:bolt:1.6.4 - https://github.com/alipay/sofa-bolt)
	(Apache License, Version 2.0) * com.alipay.sofa:hessian (com.alipay.sofa:hessian:3.3.6 - http://github.com/alipay/sofa-hessian)
	(Apache License, Version 2.0) * com.alipay.sofa:sofa-rpc-all (com.alipay.sofa:sofa-rpc-all:5.7.6 - http://github.com/sofastack/sofa-rpc)
	(Apache License, Version 2.0) * error-prone annotations (com.google.errorprone:error_prone_annotations:2.1.3 - http://nexus.sonatype.org/oss-repository-hosting.html/error_prone_parent/error_prone_annotations)
	(Apache License, Version 2.0) * exp4j (net.objecthunter:exp4j:0.4.8 - http://www.objecthunter.net/exp4j)
	(Apache License, Version 2.0) * fastutil (it.unimi.dsi:fastutil:8.5.9 - http://fastutil.di.unimi.it/)
	(Apache License, Version 2.0) * htrace-core4 (org.apache.htrace:htrace-core4:4.2.0-incubating - http://incubator.apache.org/projects/htrace.html)
	(Apache License, Version 2.0) * hugegraph-api (com.baidu.hugegraph:hugegraph-api:0.13.0 - https://github.com/hugegraph/hugegraph/hugegraph-api)
	(Apache License, Version 2.0) * hugegraph-cassandra (com.baidu.hugegraph:hugegraph-cassandra:0.13.0 - https://github.com/hugegraph/hugegraph/hugegraph-cassandra)
	(Apache License, Version 2.0) * hugegraph-common (com.baidu.hugegraph:hugegraph-common:2.1.2 - https://github.com/hugegraph/hugegraph-common)
	(Apache License, Version 2.0) * hugegraph-core (com.baidu.hugegraph:hugegraph-core:0.13.0 - https://github.com/hugegraph/hugegraph/hugegraph-core)
	(Apache License, Version 2.0) * hugegraph-dist (com.baidu.hugegraph:hugegraph-dist:0.13.0 - https://github.com/hugegraph/hugegraph/hugegraph-dist)
	(Apache License, Version 2.0) * hugegraph-hbase (com.baidu.hugegraph:hugegraph-hbase:0.13.0 - https://github.com/hugegraph/hugegraph/hugegraph-hbase)
	(Apache License, Version 2.0) * hugegraph-hbase-shaded-endpoint (com.baidu.hugegraph:hbase-shaded-endpoint:2.0.6 - https://github.com/hugegraph/hbase/tree/HBASE-26097/hbase-shaded/hbase-shaded-endpoint)
	(Apache License, Version 2.0) * hugegraph-mysql (com.baidu.hugegraph:hugegraph-mysql:0.13.0 - https://github.com/hugegraph/hugegraph/hugegraph-mysql)
	(Apache License, Version 2.0) * hugegraph-palo (com.baidu.hugegraph:hugegraph-palo:0.13.0 - https://github.com/hugegraph/hugegraph/hugegraph-palo)
	(Apache License, Version 2.0) * hugegraph-postgresql (com.baidu.hugegraph:hugegraph-postgresql:0.13.0 - https://github.com/hugegraph/hugegraph/hugegraph-postgresql)
	(Apache License, Version 2.0) * hugegraph-rocksdb (com.baidu.hugegraph:hugegraph-rocksdb:0.13.0 - https://github.com/hugegraph/hugegraph/hugegraph-rocksdb)
	(Apache License, Version 2.0) * hugegraph-rpc (com.baidu.hugegraph:hugegraph-rpc:2.0.1 - https://github.com/hugegraph/hugegraph-commons/hugegraph-rpc)
	(Apache License, Version 2.0) * hugegraph-scylladb (com.baidu.hugegraph:hugegraph-scylladb:0.13.0 - https://github.com/hugegraph/hugegraph/hugegraph-scylladb)
	(Apache License, Version 2.0) * io.grpc:grpc-api (io.grpc:grpc-api:1.28.0 - https://github.com/grpc/grpc-java)
	(Apache License, Version 2.0) * io.grpc:grpc-context (io.grpc:grpc-context:1.28.0 - https://github.com/grpc/grpc-java)
	(Apache License, Version 2.0) * io.grpc:grpc-core (io.grpc:grpc-core:1.28.0 - https://github.com/grpc/grpc-java)
	(Apache License, Version 2.0) * io.grpc:grpc-netty-shaded (io.grpc:grpc-netty-shaded:1.28.0 - https://github.com/grpc/grpc-java)
	(Apache License, Version 2.0) * io.grpc:grpc-protobuf (io.grpc:grpc-protobuf:1.47.0 - https://github.com/grpc/grpc-java)
	(Apache License, Version 2.0) * io.grpc:grpc-protobuf-lite (io.grpc:grpc-protobuf-lite:1.47.0 - https://github.com/grpc/grpc-java)
	(Apache License, Version 2.0) * io.grpc:grpc-stub (io.grpc:grpc-stub:1.47.0 - https://github.com/grpc/grpc-java)
	(Apache License, Version 2.0) * ikanalyzer (com.janeluo.ikanalyzer:2012_u6 - https://mvnrepository.com/artifact/com.janeluo/ikanalyzer/2012_u6)
	(Apache License, Version 2.0) * jackson-databind (com.fasterxml.jackson.core:jackson-databind:2.12.1 - http://github.com/FasterXML/jackson)
	(Apache License, Version 2.0) * jackson-databind (com.fasterxml.jackson.core:jackson-databind:2.12.5 - http://github.com/FasterXML/jackson)
	(Apache License, Version 2.0) * javatuples (org.javatuples:javatuples:1.2 - http://www.javatuples.org)
	(Apache License, Version 2.0) * javax.inject (javax.inject:javax.inject:1 - http://code.google.com/p/atinject/)
	(Apache License, Version 2.0) * jcseg-core (org.lionsoul:jcseg-core:2.6.2 - http://github.com/lionsoul2014/jcseg)
	(Apache License, Version 2.0) * jffi (com.github.jnr:jffi:1.2.16 - http://github.com/jnr/jffi)
	(Apache License, Version 2.0) * jnr-ffi (com.github.jnr:jnr-ffi:2.1.7 - http://github.com/jnr/jnr-ffi)
	(Apache License, Version 2.0) * jraft-core 1.3.11 (com.alipay.sofa:jraft-core:1.3.11 - https://github.com/alipay/sofa-jraft/jraft-core)
	(Apache License, Version 2.0) * lookout-api (com.alipay.sofa.lookout:lookout-api:1.4.1 - https://github.com/sofastack/sofa-lookout/lookout-api)
	(Apache License, Version 2.0) * metrics reporter config 3.x (com.addthis.metrics:reporter-config3:3.0.3 - https://github.com/addthis/metrics-reporter-config/reporter-config3)
	(Apache License, Version 2.0) * metrics reporter config base (com.addthis.metrics:reporter-config-base:3.0.3 - https://github.com/addthis/metrics-reporter-config/reporter-config-base)
	(Apache License, Version 2.0) * mmseg4j-core (com.chenlb.mmseg4j:mmseg4j-core:1.10.0 - https://github.com/chenlb/mmseg4j-core)
	(Apache License, Version 2.0) * nlp-lang (org.nlpcn:nlp-lang:1.7.7 - https://github.com/NLPchina/nlp-lang)
	(Apache License, Version 2.0) * openCypher AST for the Cypher Query Language (org.opencypher:ast-9.0:9.0.20190305 - https://www.opencypher.org/ast-9.0)
	(Apache License, Version 2.0) * openCypher Expressions (org.opencypher:expressions-9.0:9.0.20190305 - https://www.opencypher.org/expressions-9.0)
	(Apache License, Version 2.0) * openCypher Front End (org.opencypher:front-end-9.0:9.0.20190305 - http://components.neo4j.org/front-end-9.0/9.0.20190305)
	(Apache License, Version 2.0) * openCypher Parser (org.opencypher:parser-9.0:9.0.20190305 - https://www.opencypher.org/parser-9.0)
	(Apache License, Version 2.0) * openCypher Rewriting (org.opencypher:rewriting-9.0:9.0.20190305 - https://www.opencypher.org/rewriting-9.0)
	(Apache License, Version 2.0) * openCypher Utils (org.opencypher:util-9.0:9.0.20190305 - http://components.neo4j.org/util-9.0/9.0.20190305)
	(Apache License, Version 2.0) * parboiled-core (org.parboiled:parboiled-core:1.2.0 - http://parboiled.org)
	(Apache License, Version 2.0) * parboiled-scala (org.parboiled:parboiled-scala_2.12:1.2.0 - http://parboiled.org)
	(Apache License, Version 2.0) * perfmark:perfmark-api (io.perfmark:perfmark-api:0.19.0 - https://github.com/perfmark/perfmark)
	(Apache License, Version 2.0) * picocli - a mighty tiny Command Line Interface (info.picocli:picocli:4.3.2 - http://picocli.info)
	(Apache License, Version 2.0) * proto-google-common-protos (com.google.api.grpc:proto-google-common-protos:2.0.1 - https://github.com/googleapis/java-iam/proto-google-common-protos)
	(Apache License, Version 2.0) * sigar (org.fusesource:sigar:1.6.4 - http://fusesource.com/sigar/)
	(Apache License, Version 2.0) * snappy-java (org.xerial.snappy:snappy-java:1.1.1.7 - https://github.comm/xerial/snappy-java)
	(Apache License, Version 2.0) * stream-lib (com.clearspring.analytics:stream:2.5.2 - https://github.com/clearspring/stream-lib)
	(Apache License, Version 2.0) * swagger-annotations (io.swagger:swagger-annotations:1.5.18 - https://github.com/swagger-api/swagger-core/modules/swagger-annotations)
	(Apache License, Version 2.0) * swagger-annotations-jakarta (io.swagger.core.v3:swagger-annotations-jakarta:2.1.9 - https://github.com/swagger-api/swagger-core/modules/swagger-annotations-jakarta)
	(Apache License, Version 2.0) * swagger-core (io.swagger:swagger-core:1.5.18 - https://github.com/swagger-api/swagger-core/modules/swagger-core)
	(Apache License, Version 2.0) * swagger-core-jakarta (io.swagger.core.v3:swagger-core-jakarta:2.1.9 - https://github.com/swagger-api/swagger-core/modules/swagger-core-jakarta)
	(Apache License, Version 2.0) * swagger-integration-jakarta (io.swagger.core.v3:swagger-integration-jakarta:2.1.9 - https://github.com/swagger-api/swagger-core/modules/swagger-integration-jakarta)
	(Apache License, Version 2.0) * swagger-jaxrs2-jakarta (io.swagger.core.v3:swagger-jaxrs2-jakarta:2.1.9 - https://github.com/swagger-api/swagger-core/modules/swagger-jaxrs2-jakarta)
	(Apache License, Version 2.0) * swagger-models (io.swagger:swagger-models:1.5.18 - https://github.com/swagger-api/swagger-core/modules/swagger-models)
	(Apache License, Version 2.0) * swagger-models-jakarta (io.swagger.core.v3:swagger-models-jakarta:2.1.9 - https://github.com/swagger-api/swagger-core/modules/swagger-models-jakarta)
	(Apache License, Version 2.0) * tracer-core (com.alipay.sofa:tracer-core:3.0.8 - https://projects.spring.io/spring-boot/#/spring-boot-starter-parent/sofaboot-dependencies/tracer-all-parent/tracer-core)
	(Apache License, Version 2.0) * 结巴分词工具(jieba for java) (com.huaban:jieba-analysis:1.0.2 - http://maven.apache.org)
	(Apache License, Version 2.0) * RocksDB JNI (org.rocksdb:rocksdbjni:7.2.2 - https://rocksdb.org)
	(Apache License, Version 2.0) * Javassist (org.javassist:javassist:3.21.0-GA - http://www.javassist.org/)

========================================================================
Third party CDDL licenses
========================================================================

The following components are provided under the CDDL License.
See licenses/ for text of these licenses.
	(CDDL) * JavaBeans Activation Framework API jar (javax.activation:javax.activation-api:1.2.0 - http://java.net/all/javax.activation-api/)
	(CDDL 1.1) * jaxb-api (javax.xml.bind:jaxb-api:2.3.1 - https://github.com/javaee/jaxb-spec/jaxb-api)
	(Dual license consisting of the CDDL v1.1) * JSR 353 (JSON Processing) Default Provider (org.glassfish:javax.json:1.0 - http://jsonp.java.net)

========================================================================
Third party EPL licenses
========================================================================

The following components are provided under the EPL License.
See licenses/ for text of these licenses.
	(Eclipse Public License - v1.0) * JUnit (junit:junit:4.12 - http://junit.org)
	(Eclipse Public License - v2.0) * HK2 API module (org.glassfish.hk2:hk2-api:3.0.1 - https://github.com/eclipse-ee4j/glassfish-hk2/hk2-api)
	(Eclipse Public License - v2.0) * HK2 Implementation Utilities (org.glassfish.hk2:hk2-utils:3.0.1 - https://github.com/eclipse-ee4j/glassfish-hk2/hk2-utils)
	(Eclipse Public License - v2.0) * Jakarta Annotations API (jakarta.annotation:jakarta.annotation-api:2.0.0 - https://projects.eclipse.org/projects/ee4j.ca)
	(Eclipse Public License - v2.0) * Jakarta Servlet (jakarta.servlet:jakarta.servlet-api:5.0.0 - https://projects.eclipse.org/projects/ee4j.servlet)
	(Eclipse Public License - v2.0) * OSGi resource locator (org.glassfish.hk2:osgi-resource-locator:1.0.3 - https://projects.eclipse.org/projects/ee4j/osgi-resource-locator)
	(Eclipse Public License - v2.0) * ServiceLocator Default Implementation (org.glassfish.hk2:hk2-locator:3.0.1 - https://github.com/eclipse-ee4j/glassfish-hk2/hk2-locator)
	(Eclipse Public License - v2.0) * aopalliance version 1.0 repackaged as a module (org.glassfish.hk2.external:aopalliance-repackaged:3.0.1 - https://github.com/eclipse-ee4j/glassfish-hk2/external/aopalliance-repackaged)
	(Eclipse Public License - v2.0) * grizzly-framework (org.glassfish.grizzly:grizzly-framework:3.0.1 - https://projects.eclipse.org/projects/ee4j.grizzly/grizzly-framework)
	(Eclipse Public License - v2.0) * grizzly-http (org.glassfish.grizzly:grizzly-http:3.0.1 - https://projects.eclipse.org/projects/ee4j.grizzly/grizzly-http)
	(Eclipse Public License - v2.0) * grizzly-http-server (org.glassfish.grizzly:grizzly-http-server:3.0.1 - https://projects.eclipse.org/projects/ee4j.grizzly/grizzly-http-server)
	(Eclipse Public License - v2.0) * grizzly-http-servlet (org.glassfish.grizzly:grizzly-http-servlet:3.0.1 - https://projects.eclipse.org/projects/ee4j.grizzly/grizzly-http-servlet)
	(Eclipse Public License - v2.0) * jakarta.ws.rs-api (jakarta.ws.rs:jakarta.ws.rs-api:3.0.0 - https://github.com/eclipse-ee4j/jaxrs-api)

========================================================================
Third party EDL licenses
========================================================================

The following components are provided under the EDL License.
See licenses/ for text of these licenses.
	(Eclipse Distribution License - v1.0) * Eclipse Collections API (org.eclipse.collections:eclipse-collections-api:11.1.0 - https://github.com/eclipse/eclipse-collections/eclipse-collections-api)
	(Eclipse Distribution License - v1.0) * Eclipse Collections Main Library (org.eclipse.collections:eclipse-collections:11.1.0 - https://github.com/eclipse/eclipse-collections/eclipse-collections)
	(Eclipse Distribution License - v1.0) * Jakarta Activation (com.sun.activation:jakarta.activation:2.0.1 - https://github.com/eclipse-ee4j/jaf/jakarta.activation)
	(Eclipse Distribution License - v1.0) * Jakarta XML Binding API (jakarta.xml.bind:jakarta.xml.bind-api:4.0.0-RC2 - https://github.com/eclipse-ee4j/jaxb-api/jakarta.xml.bind-api)
	(Eclipse Distribution License - v1.0) * JavaBeans Activation Framework API jar (jakarta.activation:jakarta.activation-api:1.2.1 - https://github.com/eclipse-ee4j/jaf/jakarta.activation-api)
	(Eclipse Distribution License - v1.0) * Old JAXB Core (com.sun.xml.bind:jaxb-core:3.0.2 - https://eclipse-ee4j.github.io/jaxb-ri/)
	(Eclipse Distribution License - v1.0) * Old JAXB Runtime (com.sun.xml.bind:jaxb-impl:3.0.2 - https://eclipse-ee4j.github.io/jaxb-ri/)


========================================================================
Third party BSD licenses
========================================================================

The following components are provided under the BSD License.
See licenses/ for text of these licenses.
	(The 2-Clause BSD License) * ANTLR 3 Runtime (org.antlr:antlr-runtime:3.5.2 - http://www.antlr.org)
	(The 2-Clause BSD License) * ASM Analysis (org.ow2.asm:asm-analysis:5.0.3 - http://asm.objectweb.org/asm-analysis/)
	(The 2-Clause BSD License) * ASM Commons (org.ow2.asm:asm-commons:5.0.3 - http://asm.objectweb.org/asm-commons/)
	(The 2-Clause BSD License) * ASM Core (org.ow2.asm:asm:5.0.4 - http://asm.objectweb.org/asm/)
	(The 2-Clause BSD License) * ASM Core (org.ow2.asm:asm:6.0 - http://asm.objectweb.org/asm/)
	(The 2-Clause BSD License) * ASM Tree (org.ow2.asm:asm-tree:5.0.3 - http://asm.objectweb.org/asm-tree/)
	(The 2-Clause BSD License) * ASM Util (org.ow2.asm:asm-util:5.0.3 - http://asm.objectweb.org/asm-util/)
	(The 2-Clause BSD License) * JFlex (de.jflex:jflex:1.6.0 - http://jflex.de/)
	(The 2-Clause BSD License) * JLine (jline:jline:2.14.6 - http://nexus.sonatype.org/oss-repository-hosting.html/jline)
	(The 2-Clause BSD License) * PostgreSQL JDBC Driver (org.postgresql:postgresql:42.4.1 - https://jdbc.postgresql.org)
	(The 2-Clause BSD License) * StringTemplate 4 (org.antlr:ST4:4.0.8 - http://www.stringtemplate.org)
	(The 2-Clause BSD License) * jcabi-log (com.jcabi:jcabi-log:0.14 - http://www.jcabi.com/jcabi-log)
	(The 2-Clause BSD License) * jcabi-manifests (com.jcabi:jcabi-manifests:1.1 - http://www.jcabi.com/jcabi-manifests)
	(The 2-Clause BSD License) * snowball-stemmer (com.github.rholder:snowball-stemmer:1.3.0.581.1 - http://snowball.tartarus.org/)
	(The 3-Clause BSD License) * Hamcrest (org.hamcrest:hamcrest:2.2 - http://hamcrest.org/JavaHamcrest/)
	(The 3-Clause BSD License) * Hamcrest Core (org.hamcrest:hamcrest-core:1.3 - https://github.com/hamcrest/JavaHamcrest/hamcrest-core)
	(The 3-Clause BSD License) * Protocol Buffers [Core] (com.google.protobuf:protobuf-java:3.21.7 - https://developers.google.com/protocol-buffers/protobuf-java/)
	(The 3-Clause BSD License) * Scala Compiler (org.scala-lang:scala-reflect:2.12.7 - http://www.scala-lang.org/)
	(The 3-Clause BSD License) * Scala Library (org.scala-lang:scala-library:2.12.7 - http://www.scala-lang.org/)
	(The 3-Clause BSD License) * scala-java8-compat (org.scala-lang.modules:scala-java8-compat_2.12:0.8.0 - http://www.scala-lang.org/)

========================================================================
Third party MIT licenses
========================================================================

The following components are provided under the MIT License.
See licenses/ for text of these licenses.
	(The MIT License) * Animal Sniffer Annotations (org.codehaus.mojo:animal-sniffer-annotations:1.14 - http://mojo.codehaus.org/animal-sniffer/animal-sniffer-annotations)
	(The MIT License) * Checker Qual (org.checkerframework:checker-qual:3.5.0 - https://checkerframework.org)
	(The MIT License) * ClassGraph (io.github.classgraph:classgraph:4.8.95 - https://github.com/classgraph/classgraph)
	(The MIT License) * JCL 1.2 implemented over SLF4J (org.slf4j:jcl-over-slf4j:1.7.25 - http://www.slf4j.org)
	(The MIT License) * SLF4J API Module (org.slf4j:slf4j-api:1.7.25 - http://www.slf4j.org)
	(The MIT License) * SLF4J API Module (org.slf4j:slf4j-api:1.7.7 - http://www.slf4j.org)
	(The MIT License) * fastparse_2.12 (com.lihaoyi:fastparse_2.12:2.0.4 - https://github.com/lihaoyi/fastparse)
	(The MIT License) * high-scale-lib (com.boundary:high-scale-lib:1.0.6 - https://github.com/boundary/high-scale-lib)
	(The MIT License) * jnr-x86asm (com.github.jnr:jnr-x86asm:1.0.2 - http://github.com/jnr/jnr-x86asm)
	(The MIT License) * mockito-core (org.mockito:mockito-core:3.3.3 - https://github.com/mockito/mockito)
	(The MIT License) * sourcecode (com.lihaoyi:sourcecode_2.12:0.1.4 - https://github.com/lihaoyi/sourcecode)
	(The MIT License) * Checker Qual (org.checkerframework:checker-qual:2.0.0 - http://checkerframework.org)
	(The MIT License) * jopt-simple (net.sf.jopt-simple:jopt-simple:5.0.4 - https://github.com/jopt-simple/jopt-simple)

========================================================================
Third party Public Domain licenses
========================================================================

The following components are provided under the Public Domain License.
	(Public Domain, per Creative Commons CC0) * HdrHistogram (org.hdrhistogram:HdrHistogram:2.1.9 - http://hdrhistogram.github.io/HdrHistogram/)


========================================================================
Third party ISC licenses
========================================================================

The following components are provided under the ISC License.
	(ISC) * jBCrypt (org.mindrot:jbcrypt:0.4 - https://github.com/djmdjm/jBCrypt)
