# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you 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. 

name: conjunctive normal form conversion code, a variance aggregator algorithm, and Bloom filter adapted from Apache Hive
version:
license_category: source
module: java-core
license_name: Apache License version 2.0
source_paths:
  - processing/src/main/java/org/apache/druid/segment/filter/cnf/HiveCnfHelper.java
  - extensions-core/stats/src/main/java/io/druid/query/aggregation/variance/VarianceAggregatorCollector.java
  - extensions-core/druid-bloom-filter/src/main/java/org/apache/druid/query/filter/BloomKFilter.java

---

name: variable length long deserialization code adapted from Apache Lucene
license_category: source
module: java-core
license_name: Apache License version 2.0
source_paths:
  - processing/src/main/java/org/apache/druid/segment/data/VSizeLongSerde.java

---

name: SQL query planning code adapted from Apache Calcite
license_category: source
module: java-core
license_name: Apache License version 2.0
source_paths:
  - sql/src/main/java/org/apache/druid/sql/calcite/
  - processing/src/main/java/org/apache/druid/segment/filter/cnf/CalciteCnfHelper.java

---

name: Kerberos authentication code adapted from Apache Hadoop
license_category: source
module: java-core
license_name: Apache License version 2.0
source_paths:
  - extensions-core/druid-kerberos/src/main/java/org/apache/druid/security/kerberos/

---

name: a modified version of the java-alphanum library
license_category: source
module: java-core
license_name: Apache License version 2.0
copyright: Andrew Duffy (https://github.com/amjjd/java-alphanum)
source_paths:
  - processing/src/main/java/org/apache/druid/query/ordering/StringComparators.java

---

name: a modified version of the Metamarkets java-util library
license_category: source
module: java-core
license_name: Apache License version 2.0
copyright: Metamarkets Group Inc. (https://github.com/metamx/java-util)
source_paths:
  - java-util/

---

name: a modified version of the Metamarkets bytebuffer-collections library
license_category: source
module: java-core
license_name: Apache License version 2.0
copyright: Metamarkets Group Inc. (https://github.com/metamx/bytebuffer-collections)
source_paths:
  - processing/src/main/java/org/apache/druid/collections/

---

name: a modified version of the Metamarkets extendedset library
license_category: source
module: java-core
license_name: Apache License version 2.0
copyright: Metamarkets Group Inc. (https://github.com/metamx/extendedset)
source_paths:
  - extendedset/

---

name: a modified version of the CONCISE (COmpressed 'N' Composable Integer SEt) library
license_category: source
module: java-core
license_name: Apache License version 2.0
copyright: Alessandro Colantonio (https://sourceforge.net/projects/concise/)
source_paths:
  - extendedset/src/main/java/org/apache/druid/extendedset/intset/

---

name: modified portions of the Guava library
license_category: source
license_name: Apache License version 2.0
module: java-core
copyright: The Guava Authors (https://github.com/google/guava)
source_paths:
  - Closer class: core/src/main/java/org/apache/druid/java/util/common/io/Closer.java
  - Splitter.splitToList() method: core/src/main/java/org/apache/druid/java/util/common/parsers/DelimitedParser.java
  - DirectExecutorService class: core/src/main/java/org/apache/druid/java/util/common/concurrent/DirectExecutorService.java

---

name: modified versions of the Dockerfile and related configuration files
license_category: source
module: java-core
license_name: Apache License version 2.0
copyright: SequenceIQ's Hadoop Docker image, copyright SequenceIQ, Inc. (https://github.com/sequenceiq/hadoop-docker/)
source_paths:
  - examples/quickstart/tutorial/hadoop/docker/

---

name: fixed bins histogram percentile computation code adapted from Netflix Spectator
license_category: source
module: java-core
license_name: Apache License version 2.0
copyright: Netflix, Inc. (https://github.com/Netflix/spectator)
source_paths:
  - extensions-core/histogram/src/main/java/org/apache/druid/query/aggregation/histogram/FixedBucketsHistogram.java

---

name: code adapted from Apache Knox KnoxSessionStore and ConfigurableEncryptor
license_category: source
module: extensions/druid-pac4j
license_name: Apache License version 2.0
source_paths:
  - extensions-core/druid-pac4j/src/main/java/org/apache/druid/security/pac4j/Pac4jSessionStore.java
  - core/src/main/java/org/apache/druid/crypto/CryptoService.java

---

name: AWS RDS SDK for Java
license_category: binary
module: extensions/druid-aws-rds-extensions
license_name: Apache License version 2.0
version: 1.11.884
libraries:
  - com.amazonaws: aws-java-sdk-rds

---

name: Code adopted from org.apache.commons.dbcp2.BasicDataSource
license_category: source
module: server
license_name: Apache License version 2.0
version: 2.0.1
source_paths:
  - server/src/main/java/org/apache/druid/metadata/BasicDataSourceExt.java
notice: |
  Apache Commons DBCP
  Copyright 2001-2020 The Apache Software Foundation

  This product includes software developed at
  The Apache Software Foundation (https://www.apache.org/).

---

name: LDAP string encoding function from OWASP ESAPI
license_category: source
module: extensions/druid-basic-security
license_name: BSD-3-Clause License
copyright: The OWASP Foundation (https://github.com/ESAPI/esapi-java-legacy)
license_file_path: licenses/src/esapi.BSD3
source_paths:
  - extensions-core/druid-basic-security/src/main/java/org/apache/druid/security/basic/authentication/validator/LDAPCredentialsValidator.java

---

name: AWS SDK for Java
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 1.11.199
libraries:
  - com.amazonaws: aws-java-sdk-core
  - com.amazonaws: aws-java-sdk-ec2
  - com.amazonaws: aws-java-sdk-kms
  - com.amazonaws: aws-java-sdk-s3
  - com.amazonaws: jmespath-java
notice: |
  AWS SDK for Java
  Copyright 2010-2014 Amazon.com, Inc. or its affiliates. All Rights Reserved.

  This product includes software developed by
  Amazon Technologies, Inc (http://www.amazon.com/).

  **********************
  THIRD PARTY COMPONENTS
  **********************
  This software includes third party software subject to the following copyrights:
  - XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty.
  - PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc.

  The licenses for these third party components are included in LICENSE.txt

---

name: Esri Geometry API for Java
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 2.2.0
libraries:
  - com.esri.geometry: esri-geometry-api

---

name: ClassMate
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 1.1.0
libraries:
  - com.fasterxml: classmate
notices:
  - classmate: |
      Java ClassMate library was originally written by Tatu Saloranta (tatu.saloranta@iki.fi)

      Other developers who have contributed code are:

      * Brian Langel

---

name: Jackson
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 2.10.5
libraries:
  - com.fasterxml.jackson.core: jackson-annotations
  - com.fasterxml.jackson.core: jackson-core
  - com.fasterxml.jackson.dataformat: jackson-dataformat-cbor
  - com.fasterxml.jackson.dataformat: jackson-dataformat-smile
  - com.fasterxml.jackson.datatype: jackson-datatype-guava
  - com.fasterxml.jackson.datatype: jackson-datatype-joda
  - com.fasterxml.jackson.jaxrs: jackson-jaxrs-base
  - com.fasterxml.jackson.jaxrs: jackson-jaxrs-json-provider
  - com.fasterxml.jackson.jaxrs: jackson-jaxrs-smile-provider
  - com.fasterxml.jackson.module: jackson-module-jaxb-annotations
  - com.fasterxml.jackson.module: jackson-module-guice
notice: |
  # Jackson JSON processor

  Jackson is a high-performance, Free/Open Source JSON processing library.
  It was originally written by Tatu Saloranta (tatu.saloranta@iki.fi), and has
  been in development since 2007.
  It is currently developed by a community of developers, as well as supported
  commercially by FasterXML.com.

  ## Licensing

  Jackson core and extension components may licensed under different licenses.
  To find the details that apply to this artifact see the accompanying LICENSE file.
  For more information, including possible other licensing options, contact
  FasterXML.com (http://fasterxml.com).

  ## Credits

  A list of contributors may be found from CREDITS file, which is included
  in some artifacts (usually source distributions); but is always available
  from the source code management (SCM) system project uses.

---

name: Jackson
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 2.10.5.1
libraries:
  - com.fasterxml.jackson.core: jackson-databind
notice: |
  # Jackson JSON processor

  Jackson is a high-performance, Free/Open Source JSON processing library.
  It was originally written by Tatu Saloranta (tatu.saloranta@iki.fi), and has
  been in development since 2007.
  It is currently developed by a community of developers, as well as supported
  commercially by FasterXML.com.

  ## Licensing

  Jackson core and extension components may licensed under different licenses.
  To find the details that apply to this artifact see the accompanying LICENSE file.
  For more information, including possible other licensing options, contact
  FasterXML.com (http://fasterxml.com).

  ## Credits

  A list of contributors may be found from CREDITS file, which is included
  in some artifacts (usually source distributions); but is always available
  from the source code management (SCM) system project uses.

---

name: JavaBeans Activation Framework API JAR
license_category: binary
module: java-core
license_name: Eclipse Distribution License 1.0
version: 1.2.1
copyright: Oracle and/or its affiliates.
license_file_path: licenses/bin/jakarta.EDL1
libraries:
  - jakarta.activation: jakarta.activation-api

---

name: Jakarta XML Bind API
license_category: binary
module: java-core
license_name: Eclipse Distribution License 1.0
version: 2.3.2
copyright: Oracle and/or its affiliates.
license_file_path: licenses/bin/jakarta.EDL1
libraries:
  - jakarta.xml.bind: jakarta.xml.bind-api

---

name: Caffeine
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 2.8.0
libraries:
  - com.github.ben-manes.caffeine: caffeine

---

name: Error Prone Annotations
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 2.7.1
libraries:
  - com.google.errorprone: error_prone_annotations

---

name: Guava
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 16.0.1
libraries:
  - com.google.guava: guava

---

name: Guice
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 4.1.0
libraries:
  - com.google.inject: guice
  - com.google.inject.extensions: guice-multibindings
  - com.google.inject.extensions: guice-servlet
  - com.google.inject.extensions: guice-assistedinject
notices:
  - guice: |
      Google Guice - Core Library
      Copyright 2006-2016 Google, Inc.
  - guice-multibindings: |
      Google Guice - Extensions - MultiBindings
      Copyright 2006-2016 Google, Inc.
  - guice-servlet: |
      Google Guice - Extensions - Servlet
      Copyright 2006-2016 Google, Inc.
  - guice-assistedinject: |
      Google Guice - Extensions - AssistedInject
      Copyright 2006-2016 Google, Inc.

---

name: JsonPath
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 2.3.0
libraries:
  - com.jayway.jsonpath: json-path

---

name: CronScheduler
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 0.1
libraries:
  - io.timeandspace: cron-scheduler

---

name: LMAX Disruptor
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 3.3.6
libraries:
  - com.lmax: disruptor

---

name: LZF Compressor
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 1.0.4
libraries:
  - com.ning: compress-lzf
notices:
  - compress-lzf: |
      # Compress LZF

      This library contains efficient implementation of LZF compression format,
      as well as additional helper classes that build on JDK-provided gzip (deflat)
      codec.

      ## Licensing

      Library is licensed under Apache License 2.0, as per accompanying LICENSE file.

      ## Credit

      Library has been written by Tatu Saloranta (tatu.saloranta@iki.fi).
      It was started at Ning, inc., as an official Open Source process used by
      platform backend, but after initial versions has been developed outside of
      Ning by supporting community.

      Other contributors include:

      * Jon Hartlaub (first versions of streaming reader/writer; unit tests)
      * Cedrik Lime: parallel LZF implementation

      Various community members have contributed bug reports, and suggested minor
      fixes; these can be found from file "VERSION.txt" in SCM.

---

name: OpenCSV
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 4.6
libraries:
  - com.opencsv: opencsv

---

name: OkHttp
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 1.0.2
libraries:
  - com.squareup.okhttp: okhttp

---

name: Netty Reactive Streams
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 2.0.0
libraries:
  - com.typesafe.netty: netty-reactive-streams

---

name: Apache Commons BeanUtils
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 1.9.4
libraries:
  - commons-beanutils: commons-beanutils
notices:
  - commons-beanutils: |
      Apache Commons BeanUtils
      Copyright 2000-2016 The Apache Software Foundation

---

name: Apache Commons Codec
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 1.13
libraries:
  - commons-codec: commons-codec
notices:
  - commons-codec: |
      Apache Commons Codec
      Copyright 2002-2017 The Apache Software Foundation


      Copyright (C) 2002 Kevin Atkinson (kevina@gnu.org)

      ===============================================================================

      The content of package org.apache.commons.codec.language.bm has been translated
      from the original php source code available at http://stevemorse.org/phoneticinfo.htm
      with permission from the original authors.
      Original source copyright:
      Copyright (c) 2008 Alexander Beider & Stephen P. Morse.

---

name: Apache Commons Collections
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 3.2.2
libraries:
  - commons-collections: commons-collections
notices:
  - commons-collections: |
      Apache Commons Collections
      Copyright 2001-2015 The Apache Software Foundation

---

name: Apache Commons IO
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 2.11.0
libraries:
  - commons-io: commons-io
notices:
  - commons-io: |
      Apache Commons IO
      Copyright 2002-2021 The Apache Software Foundation

---

name: Apache Commons Lang
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 2.6
libraries:
  - commons-lang: commons-lang
notices:
  - commons-lang: |
      Apache Commons Lang
      Copyright 2001-2011 The Apache Software Foundation

---

name: Apache Commons Logging
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 1.1.1
libraries:
  - commons-logging: commons-logging
notices:
  - commons-logging: |
      // ------------------------------------------------------------------
      // NOTICE file corresponding to the section 4d of The Apache License,
      // Version 2.0, in this case for Commons Logging
      // ------------------------------------------------------------------

      Commons Logging
      Copyright 2001-2007 The Apache Software Foundation

      This product includes/uses software(s) developed by 'an unknown organization'
        - Unnamed - avalon-framework:avalon-framework:jar:4.1.3
        - Unnamed - log4j:log4j:jar:1.2.12
        - Unnamed - logkit:logkit:jar:1.0.1

---

name: Apache Commons Net
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 3.6
libraries:
  - commons-net: commons-net

---

name: Apache Commons Collections
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 4.2
libraries:
  - org.apache.commons: commons-collections4
notices:
  - commons-collections4: |
      Apache Commons Collections
      Copyright 2001-2018 The Apache Software Foundation

---

name: Apache Commons Compress
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 1.18
libraries:
  - org.apache.commons: commons-compress
notices:
  - commons-compress: |
      Apache Commons Compress
      Copyright 2002-2018 The Apache Software Foundation

      The files in the package org.apache.commons.compress.archivers.sevenz
      were derived from the LZMA SDK, version 9.20 (C/ and CPP/7zip/),
      which has been placed in the public domain:

      "LZMA SDK is placed in the public domain." (http://www.7-zip.org/sdk.html)

---

name: Apache Commons DBCP
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 2.0.1
libraries:
  - org.apache.commons: commons-dbcp2
notices:
  - commons-dbcp2: |
      Apache Commons DBCP
      Copyright 2001-2014 The Apache Software Foundation

---

name: Apache Commons Lang
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 3.8.1
libraries:
  - org.apache.commons: commons-lang3
notices:
  - commons-lang3: |
      Apache Commons Lang
      Copyright 2001-2018 The Apache Software Foundation

---

name: Apache Commons Math
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 3.6.1
libraries:
  - org.apache.commons: commons-math3
notices:
  - commons-math3: |
      Apache Commons Math
      Copyright 2001-2016 The Apache Software Foundation

      This product includes software developed for Orekit by
      CS Systèmes d'Information (http://www.c-s.fr/)
      Copyright 2010-2012 CS Systèmes d'Information

---

name: Apache Commons Pool
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 2.2
libraries:
  - org.apache.commons: commons-pool2
notices:
  - commons-pool2: |
      Apache Commons Pool
      Copyright 2001-2014 The Apache Software Foundation

      The LinkedBlockingDeque implementation is based on an implementation written by
      Doug Lea with assistance from members of JCP JSR-166 Expert Group and released
      to the public domain, as explained at
      http://creativecommons.org/licenses/publicdomain

---

name: Apache Commons Text
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 1.3
libraries:
  - org.apache.commons: commons-text
notices:
  - commons-text: |
      Apache Commons Text
      Copyright 2001-2018 The Apache Software Foundation

---

name: Airline
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 0.7
libraries:
  - io.airlift: airline
notices:
  - airline: |
      Copyright Notices
      =================

      Copyright 2011 Dain Sundstrom <dain@iq80.com>
      Copyright 2010 Cedric Beust <cedric@beust.com>

---

name: DropWizard Metrics Core
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 4.0.0
libraries:
  - io.dropwizard.metrics: metrics-core

---

name: pac4j-oidc java security library
license_category: binary
module: extensions/druid-pac4j
license_name: Apache License version 2.0
version: 3.8.3
libraries:
  - org.pac4j: pac4j-oidc

---

name: pac4j-core java security library
license_category: binary
module: extensions/druid-pac4j
license_name: Apache License version 2.0
version: 3.8.3
libraries:
  - org.pac4j: pac4j-core

---

name: org.objenesis objenesis
license_category: binary
module: extensions/druid-pac4j
license_name: Apache License version 2.0
version: 3.0.1
libraries:
  - org.objenesis: objenesis

---

name: com.nimbusds lang-tag
license_category: binary
module: extensions/druid-pac4j
license_name: Apache License version 2.0
version: 1.5
libraries:
  - com.nimbusds: lang-tag

---

name: com.nimbusds nimbus-jose-jwt
license_category: binary
module: extensions/druid-pac4j
license_name: Apache License version 2.0
version: 7.9
libraries:
  - com.nimbusds: nimbus-jose-jwt

---

name: com.nimbusds oauth2-oidc-sdk
license_category: binary
module: extensions/druid-pac4j
license_name: Apache License version 2.0
version: 6.5
libraries:
  - com.nimbusds: oauth2-oidc-sdk

---

name: net.bytebuddy byte-buddy
license_category: binary
module: extensions/druid-pac4j
license_name: Apache License version 2.0
version: 1.9.10
libraries:
  - net.bytebuddy: byte-buddy

---

name: net.bytebuddy byte-buddy-agent
license_category: binary
module: extensions/druid-pac4j
license_name: Apache License version 2.0
version: 1.9.10
libraries:
  - net.bytebuddy: byte-buddy-agent

---

name: org.mockito mockito-core
license_category: binary
module: extensions/druid-pac4j
license_name: MIT License
version: 2.28.2
libraries:
  - org.mockito: mockito-core

---

name: javax.activation activation
license_category: binary
module: extensions/druid-pac4j
license_name: COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
version: 1.1.1
libraries:
  - javax.activation: activation

---

name: com.sun.mail javax.mail
license_category: binary
module: extensions/druid-pac4j
license_name: CDDL 1.1
version: 1.6.1
libraries:
  - com.sun.mail: javax.mail

---

name: kubernetes official java client
license_category: binary
module: extensions/druid-kubernetes-extensions
license_name: Apache License version 2.0
version: 10.0.1
libraries:
  - io.kubernetes: client-java

---

name: kubernetes official java client api
license_category: binary
module: extensions/druid-kubernetes-extensions
license_name: Apache License version 2.0
version: 10.0.1
libraries:
  - io.kubernetes: client-java-api

---

name: kubernetes official java client extended
license_category: binary
module: extensions/druid-kubernetes-extensions
license_name: Apache License version 2.0
version: 10.0.1
libraries:
  - io.kubernetes: client-java-extended

---

name: io.prometheus simpleclient_common
license_category: binary
module: extensions/druid-kubernetes-extensions
license_name: Apache License version 2.0
version: 0.9.0
libraries:
  - io.prometheus: simpleclient_common

---

name: org.apache.commons commons-collections4
license_category: binary
module: extensions/druid-kubernetes-extensions
license_name: Apache License version 2.0
version: 4.4
libraries:
  - org.apache.commons: commons-collections4

---

name: io.sundr builder-annotations
license_category: binary
module: extensions/druid-kubernetes-extensions
license_name: Apache License version 2.0
version: 0.22.0
libraries:
  - io.sundr: builder-annotations

---

name: com.squareup.okio okio
license_category: binary
module: extensions/druid-kubernetes-extensions
license_name: Apache License version 2.0
version: 1.17.2
libraries:
  - com.squareup.okio: okio

---

name: io.gsonfire gson-fire
license_category: binary
module: extensions/druid-kubernetes-extensions
license_name: Apache License version 2.0
version: 1.8.4
libraries:
  - io.gsonfire: gson-fire

---

name: io.swagger swagger-annotations
license_category: binary
module: extensions/druid-kubernetes-extensions
license_name: Apache License version 2.0
version: 1.6.2
libraries:
  - io.swagger: swagger-annotations

---

name: io.prometheus simpleclient_httpserver
license_category: binary
module: extensions/druid-kubernetes-extensions
license_name: Apache License version 2.0
version: 0.9.0
libraries:
  - io.prometheus: simpleclient_httpserver

---

name: org.bitbucket.b_c jose4j
license_category: binary
module: extensions/druid-kubernetes-extensions
license_name: Apache License version 2.0
version: 0.7.2
libraries:
  - org.bitbucket.b_c: jose4j

---

name: org.joda joda-convert
license_category: binary
module: extensions/druid-kubernetes-extensions
license_name: Apache License version 2.0
version: 2.2.1
libraries:
  - org.joda: joda-convert

---

name: com.squareup.okhttp3 okhttp
license_category: binary
module: extensions/druid-kubernetes-extensions
license_name: Apache License version 2.0
version: 3.14.9
libraries:
  - com.squareup.okhttp3: okhttp

---

name: io.prometheus simpleclient
license_category: binary
module: extensions/druid-kubernetes-extensions
license_name: Apache License version 2.0
version: 0.9.0
libraries:
  - io.prometheus: simpleclient

---

name: io.kubernetes client-java-proto
license_category: binary
module: extensions/druid-kubernetes-extensions
license_name: Apache License version 2.0
version: 10.0.1
libraries:
  - io.kubernetes: client-java-proto

---

name: org.yaml snakeyaml
license_category: binary
module: extensions/druid-kubernetes-extensions
license_name: Apache License version 2.0
version: 1.27
libraries:
  - org.yaml: snakeyaml

---

name: com.flipkart.zjsonpatch zjsonpatch
license_category: binary
module: extensions/druid-kubernetes-extensions
license_name: Apache License version 2.0
version: 0.4.11
libraries:
  - com.flipkart.zjsonpatch: zjsonpatch

---

name: org.bouncycastle bcprov-jdk15on
license_category: binary
module: extensions/druid-kubernetes-extensions
license_name: MIT License
version: 1.68
libraries:
  - org.bouncycastle: bcprov-jdk15on

---

name: io.sundr resourcecify-annotations
license_category: binary
module: extensions/druid-kubernetes-extensions
license_name: Apache License version 2.0
version: 0.22.0
libraries:
  - io.sundr: resourcecify-annotations

---

name: io.sundr sundr-codegen
license_category: binary
module: extensions/druid-kubernetes-extensions
license_name: Apache License version 2.0
version: 0.22.0
libraries:
  - io.sundr: sundr-codegen

---

name: org.bouncycastle bcprov-ext-jdk15on
license_category: binary
module: extensions/druid-kubernetes-extensions
license_name: MIT License
version: 1.68
libraries:
  - org.bouncycastle: bcprov-ext-jdk15on

---

name: io.sundr sundr-core
license_category: binary
module: extensions/druid-kubernetes-extensions
license_name: Apache License version 2.0
version: 0.22.0
libraries:
  - io.sundr: sundr-core

---

name: com.squareup.okhttp3 logging-interceptor
license_category: binary
module: extensions/druid-kubernetes-extensions
license_name: Apache License version 2.0
version: 3.14.9
libraries:
  - com.squareup.okhttp3: logging-interceptor

---

name: org.bouncycastle bcpkix-jdk15on
license_category: binary
module: extensions/druid-kubernetes-extensions
license_name: MIT License
version: 1.66
libraries:
  - org.bouncycastle: bcpkix-jdk15on

---

name: com.github.vladimir-bukhtoyarov bucket4j-core
license_category: binary
module: extensions/druid-kubernetes-extensions
license_name: Apache License version 2.0
version: 4.10.0
libraries:
  - com.github.vladimir-bukhtoyarov: bucket4j-core

---

name: Netty
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 3.10.6.Final
libraries:
  - io.netty: netty
notices:
  - netty: |
      ==
                                  The Netty Project
                                  =================

      Please visit the Netty web site for more information:

        * http://netty.io/

      Copyright 2011 The Netty Project

      The Netty Project licenses this file to you 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.

      Also, please refer to each LICENSE.<component>.txt file, which is located in
      the 'license' directory of the distribution file, for the license terms of the
      components that this product depends on.

      -------------------------------------------------------------------------------
      This product contains the extensions to Java Collections Framework which has
      been derived from the works by JSR-166 EG, Doug Lea, and Jason T. Greene:

        * LICENSE:
          * license/LICENSE.jsr166y.txt (Public Domain)
        * HOMEPAGE:
          * http://gee.cs.oswego.edu/cgi-bin/viewcvs.cgi/jsr166/
          * http://viewvc.jboss.org/cgi-bin/viewvc.cgi/jbosscache/experimental/jsr166/

      This product contains a modified version of Robert Harder's Public Domain
      Base64 Encoder and Decoder, which can be obtained at:

        * LICENSE:
          * license/LICENSE.base64.txt (Public Domain)
        * HOMEPAGE:
          * http://iharder.sourceforge.net/current/java/base64/

      This product contains a modified version of 'JZlib', a re-implementation of
      zlib in pure Java, which can be obtained at:

        * LICENSE:
          * license/LICENSE.jzlib.txt (BSD Style License)
        * HOMEPAGE:
          * http://www.jcraft.com/jzlib/

      This product contains a modified version of 'Webbit', a Java event based
      WebSocket and HTTP server:

        * LICENSE:
          * license/LICENSE.webbit.txt (BSD License)
        * HOMEPAGE:
          * https://github.com/joewalnes/webbit

      This product optionally depends on 'Protocol Buffers', Google's data
      interchange format, which can be obtained at:

        * LICENSE:
          * license/LICENSE.protobuf.txt (New BSD License)
        * HOMEPAGE:
          * http://code.google.com/p/protobuf/

      This product optionally depends on 'Bouncy Castle Crypto APIs' to generate
      a temporary self-signed X.509 certificate when the JVM does not provide the
      equivalent functionality.  It can be obtained at:

        * LICENSE:
          * license/LICENSE.bouncycastle.txt (MIT License)
        * HOMEPAGE:
          * http://www.bouncycastle.org/

      This product optionally depends on 'SLF4J', a simple logging facade for Java,
      which can be obtained at:

        * LICENSE:
          * license/LICENSE.slf4j.txt (MIT License)
        * HOMEPAGE:
          * http://www.slf4j.org/

      This product optionally depends on 'Apache Commons Logging', a logging
      framework, which can be obtained at:

        * LICENSE:
          * license/LICENSE.commons-logging.txt (Apache License 2.0)
        * HOMEPAGE:
          * http://commons.apache.org/logging/

      This product optionally depends on 'Apache Log4J', a logging framework,
      which can be obtained at:

        * LICENSE:
          * license/LICENSE.log4j.txt (Apache License 2.0)
        * HOMEPAGE:
          * http://logging.apache.org/log4j/

      This product optionally depends on 'JBoss Logging', a logging framework,
      which can be obtained at:

        * LICENSE:
          * license/LICENSE.jboss-logging.txt (GNU LGPL 2.1)
        * HOMEPAGE:
          * http://anonsvn.jboss.org/repos/common/common-logging-spi/

      This product optionally depends on 'Apache Felix', an open source OSGi
      framework implementation, which can be obtained at:

        * LICENSE:
          * license/LICENSE.felix.txt (Apache License 2.0)
        * HOMEPAGE:
          * http://felix.apache.org/

---

name: Netty
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 4.1.63.Final
libraries:
  - io.netty: netty-buffer
  - io.netty: netty-codec
  - io.netty: netty-codec-dns
  - io.netty: netty-codec-http
  - io.netty: netty-codec-socks
  - io.netty: netty-common
  - io.netty: netty-handler
  - io.netty: netty-handler-proxy
  - io.netty: netty-resolver
  - io.netty: netty-resolver-dns
  - io.netty: netty-transport
  - io.netty: netty-transport-native-epoll
  - io.netty: netty-transport-native-unix-common
notice: |
  ==
                              The Netty Project
                              =================

  Please visit the Netty web site for more information:

    * http://netty.io/

  Copyright 2014 The Netty Project

  The Netty Project licenses this file to you 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.

  Also, please refer to each LICENSE.<component>.txt file, which is located in
  the 'license' directory of the distribution file, for the license terms of the
  components that this product depends on.

  -------------------------------------------------------------------------------
  This product contains the extensions to Java Collections Framework which has
  been derived from the works by JSR-166 EG, Doug Lea, and Jason T. Greene:

    * LICENSE:
      * license/LICENSE.jsr166y.txt (Public Domain)
    * HOMEPAGE:
      * http://gee.cs.oswego.edu/cgi-bin/viewcvs.cgi/jsr166/
      * http://viewvc.jboss.org/cgi-bin/viewvc.cgi/jbosscache/experimental/jsr166/

  This product contains a modified version of Robert Harder's Public Domain
  Base64 Encoder and Decoder, which can be obtained at:

    * LICENSE:
      * license/LICENSE.base64.txt (Public Domain)
    * HOMEPAGE:
      * http://iharder.sourceforge.net/current/java/base64/

  This product contains a modified portion of 'Webbit', an event based
  WebSocket and HTTP server, which can be obtained at:

    * LICENSE:
      * license/LICENSE.webbit.txt (BSD License)
    * HOMEPAGE:
      * https://github.com/joewalnes/webbit

  This product contains a modified portion of 'SLF4J', a simple logging
  facade for Java, which can be obtained at:

    * LICENSE:
      * license/LICENSE.slf4j.txt (MIT License)
    * HOMEPAGE:
      * http://www.slf4j.org/

  This product contains a modified portion of 'Apache Harmony', an open source
  Java SE, which can be obtained at:

    * NOTICE:
      * license/NOTICE.harmony.txt
    * LICENSE:
      * license/LICENSE.harmony.txt (Apache License 2.0)
    * HOMEPAGE:
      * http://archive.apache.org/dist/harmony/

  This product contains a modified portion of 'jbzip2', a Java bzip2 compression
  and decompression library written by Matthew J. Francis. It can be obtained at:

    * LICENSE:
      * license/LICENSE.jbzip2.txt (MIT License)
    * HOMEPAGE:
      * https://code.google.com/p/jbzip2/

  This product contains a modified portion of 'libdivsufsort', a C API library to construct
  the suffix array and the Burrows-Wheeler transformed string for any input string of
  a constant-size alphabet written by Yuta Mori. It can be obtained at:

    * LICENSE:
      * license/LICENSE.libdivsufsort.txt (MIT License)
    * HOMEPAGE:
      * https://github.com/y-256/libdivsufsort

  This product contains a modified portion of Nitsan Wakart's 'JCTools', Java Concurrency Tools for the JVM,
   which can be obtained at:

    * LICENSE:
      * license/LICENSE.jctools.txt (ASL2 License)
    * HOMEPAGE:
      * https://github.com/JCTools/JCTools

  This product optionally depends on 'JZlib', a re-implementation of zlib in
  pure Java, which can be obtained at:

    * LICENSE:
      * license/LICENSE.jzlib.txt (BSD style License)
    * HOMEPAGE:
      * http://www.jcraft.com/jzlib/

  This product optionally depends on 'Compress-LZF', a Java library for encoding and
  decoding data in LZF format, written by Tatu Saloranta. It can be obtained at:

    * LICENSE:
      * license/LICENSE.compress-lzf.txt (Apache License 2.0)
    * HOMEPAGE:
      * https://github.com/ning/compress

  This product optionally depends on 'lz4', a LZ4 Java compression
  and decompression library written by Adrien Grand. It can be obtained at:

    * LICENSE:
      * license/LICENSE.lz4.txt (Apache License 2.0)
    * HOMEPAGE:
      * https://github.com/jpountz/lz4-java

  This product optionally depends on 'lzma-java', a LZMA Java compression
  and decompression library, which can be obtained at:

    * LICENSE:
      * license/LICENSE.lzma-java.txt (Apache License 2.0)
    * HOMEPAGE:
      * https://github.com/jponge/lzma-java

  This product contains a modified portion of 'jfastlz', a Java port of FastLZ compression
  and decompression library written by William Kinney. It can be obtained at:

    * LICENSE:
      * license/LICENSE.jfastlz.txt (MIT License)
    * HOMEPAGE:
      * https://code.google.com/p/jfastlz/

  This product contains a modified portion of and optionally depends on 'Protocol Buffers', Google's data
  interchange format, which can be obtained at:

    * LICENSE:
      * license/LICENSE.protobuf.txt (New BSD License)
    * HOMEPAGE:
      * https://github.com/google/protobuf

  This product optionally depends on 'Bouncy Castle Crypto APIs' to generate
  a temporary self-signed X.509 certificate when the JVM does not provide the
  equivalent functionality.  It can be obtained at:

    * LICENSE:
      * license/LICENSE.bouncycastle.txt (MIT License)
    * HOMEPAGE:
      * http://www.bouncycastle.org/

  This product optionally depends on 'Snappy', a compression library produced
  by Google Inc, which can be obtained at:

    * LICENSE:
      * license/LICENSE.snappy.txt (New BSD License)
    * HOMEPAGE:
      * https://github.com/google/snappy

  This product optionally depends on 'JBoss Marshalling', an alternative Java
  serialization API, which can be obtained at:

    * LICENSE:
      * license/LICENSE.jboss-marshalling.txt (GNU LGPL 2.1)
    * HOMEPAGE:
      * http://www.jboss.org/jbossmarshalling

  This product optionally depends on 'Caliper', Google's micro-
  benchmarking framework, which can be obtained at:

    * LICENSE:
      * license/LICENSE.caliper.txt (Apache License 2.0)
    * HOMEPAGE:
      * https://github.com/google/caliper

  This product optionally depends on 'Apache Commons Logging', a logging
  framework, which can be obtained at:

    * LICENSE:
      * license/LICENSE.commons-logging.txt (Apache License 2.0)
    * HOMEPAGE:
      * http://commons.apache.org/logging/

  This product optionally depends on 'Apache Log4J', a logging framework, which
  can be obtained at:

    * LICENSE:
      * license/LICENSE.log4j.txt (Apache License 2.0)
    * HOMEPAGE:
      * http://logging.apache.org/log4j/

  This product optionally depends on 'Aalto XML', an ultra-high performance
  non-blocking XML processor, which can be obtained at:

    * LICENSE:
      * license/LICENSE.aalto-xml.txt (Apache License 2.0)
    * HOMEPAGE:
      * http://wiki.fasterxml.com/AaltoHome

  This product contains a modified version of 'HPACK', a Java implementation of
  the HTTP/2 HPACK algorithm written by Twitter. It can be obtained at:

    * LICENSE:
      * license/LICENSE.hpack.txt (Apache License 2.0)
    * HOMEPAGE:
      * https://github.com/twitter/hpack

  This product contains a modified portion of 'Apache Commons Lang', a Java library
  provides utilities for the java.lang API, which can be obtained at:

    * LICENSE:
      * license/LICENSE.commons-lang.txt (Apache License 2.0)
    * HOMEPAGE:
      * https://commons.apache.org/proper/commons-lang/


  This product contains the Maven wrapper scripts from 'Maven Wrapper', that provides an easy way to ensure a user has everything necessary to run the Maven build.

    * LICENSE:
      * license/LICENSE.mvn-wrapper.txt (Apache License 2.0)
    * HOMEPAGE:
      * https://github.com/takari/maven-wrapper

---

name: fastutil
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 8.5.4
libraries:
  - it.unimi.dsi: fastutil
  - it.unimi.dsi: fastutil-core
  - it.unimi.dsi: fastutil-extra

---

name: Javax Inject
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 1
libraries:
  - javax.inject: javax.inject

---

name: Bean Validation API
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 1.1.0.Final
libraries:
  - javax.validation: validation-api

---

name: Joda-Time
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 2.10.5
libraries:
  - joda-time: joda-time
notices:
  - joda-time: |
      =============================================================================
      = NOTICE file corresponding to section 4d of the Apache License Version 2.0 =
      =============================================================================
      This product includes software developed by
      Joda.org (http://www.joda.org/).

---

name: Aggregate Designer Algorithm
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 6.0
libraries:
  - net.hydromatic: aggdesigner-algorithm
notices:
  - aggdesigner-algorithm: |
      Aggregate Designer

      Copyright 2006 - 2013 Pentaho Corporation.  All rights reserved.
      Copyright 2000-2005, 2014-2016 Julian Hyde

---

name: Java Native Access (JNA)
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 4.5.1
libraries:
  - net.java.dev.jna: jna

---

name: ASM Based Accessors Helper Used By JSON Smart
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 1.2
libraries:
  - net.minidev: accessors-smart

---

name: JSON Small and Fast Parser
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 2.3
libraries:
  - net.minidev: json-smart

---

name: Spymemcached
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 2.12.3
libraries:
  - net.spy: spymemcached

---

name: jackson-jq
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 0.0.10
libraries:
  - net.thisptr: jackson-jq

---

name: Apache Calcite
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 1.21.0
libraries:
  - org.apache.calcite: calcite-core
  - org.apache.calcite: calcite-linq4j
notices:
  - calcite-core: |
      Calcite Core
      Copyright 2012-2019 The Apache Software Foundation
  - calcite-linq4j: |
      Calcite Linq4j
      Copyright 2012-2019 The Apache Software Foundation

---

name: Apache Calcite Avatica
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 1.17.0
libraries:
  - org.apache.calcite.avatica: avatica-core
  - org.apache.calcite.avatica: avatica-metrics
  - org.apache.calcite.avatica: avatica-server
notices:
  - avatica-core: |
      Apache Calcite Avatica
      Copyright 2012-2020 The Apache Software Foundation
  - avatica-metrics: |
      Apache Calcite Avatica Metrics
      Copyright 2012-2020 The Apache Software Foundation
  - avatica-server: |
      Apache Calcite Avatica Server
      Copyright 2012-2020 The Apache Software Foundation
---

name: Apache Curator
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 4.3.0
libraries:
  - org.apache.curator: curator-client
  - org.apache.curator: curator-framework
  - org.apache.curator: curator-recipes
  - org.apache.curator: curator-x-discovery
notices:
  - curator-client: |
      Curator Client
      Copyright 2011-2018 The Apache Software Foundation
  - curator-framework: |
      Curator Framework
      Copyright 2011-2018 The Apache Software Foundation
  - curator-recipes: |
      Curator Recipes
      Copyright 2011-2018 The Apache Software Foundation
  - curator-x-discovery: |
      Curator Service Discovery
      Copyright 2011-2018 The Apache Software Foundation

---

name: Apache Derby
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 10.14.2.0
libraries:
  - org.apache.derby: derby
  - org.apache.derby: derbyclient
  - org.apache.derby: derbynet
notice: |
  =========================================================================
  ==  NOTICE file corresponding to section 4(d) of the Apache License,
  ==  Version 2.0, in this case for the Apache Derby distribution.
  ==
  ==  DO NOT EDIT THIS FILE DIRECTLY. IT IS GENERATED
  ==  BY THE buildnotice TARGET IN THE TOP LEVEL build.xml FILE.
  ==
  =========================================================================

  Apache Derby
  Copyright 2004-2018 The Apache Software Foundation

  This product includes software developed by
  The Apache Software Foundation (http://www.apache.org/).


  =========================================================================

  Portions of Derby were originally developed by
  International Business Machines Corporation and are
  licensed to the Apache Software Foundation under the
  "Software Grant and Corporate Contribution License Agreement",
  informally known as the "Derby CLA".
  The following copyright notice(s) were affixed to portions of the code
  with which this file is now or was at one time distributed
  and are placed here unaltered.

  (C) Copyright 1997,2004 International Business Machines Corporation.  All rights reserved.

  (C) Copyright IBM Corp. 2003.


  =========================================================================


  The portion of the functionTests under 'nist' was originally
  developed by the National Institute of Standards and Technology (NIST),
  an agency of the United States Department of Commerce, and adapted by
  International Business Machines Corporation in accordance with the NIST
  Software Acknowledgment and Redistribution document at
  http://www.itl.nist.gov/div897/ctg/sql_form.htm



  =========================================================================


  The Derby build relies on source files supplied by the Apache Felix
  project. The following notice covers the Felix files:

    Apache Felix Main
    Copyright 2008 The Apache Software Foundation


    I. Included Software

    This product includes software developed at
    The Apache Software Foundation (http://www.apache.org/).
    Licensed under the Apache License 2.0.

    This product includes software developed at
    The OSGi Alliance (http://www.osgi.org/).
    Copyright (c) OSGi Alliance (2000, 2007).
    Licensed under the Apache License 2.0.

    This product includes software from http://kxml.sourceforge.net.
    Copyright (c) 2002,2003, Stefan Haustein, Oberhausen, Rhld., Germany.
    Licensed under BSD License.

    II. Used Software

    This product uses software developed at
    The OSGi Alliance (http://www.osgi.org/).
    Copyright (c) OSGi Alliance (2000, 2007).
    Licensed under the Apache License 2.0.


    III. License Summary
    - Apache License 2.0
    - BSD License

---

name: Apache HttpClient
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 4.5.10
libraries:
  - org.apache.httpcomponents: httpclient
notices:
  - httpclient: |
      Apache HttpClient
      Copyright 1999-2017 The Apache Software Foundation

---

name: Apache HttpClient
license_category: binary
module: hadoop-client
license_name: Apache License version 2.0
version: 4.5.2
libraries:
  - org.apache.httpcomponents: httpclient
notices:
  - httpclient: |
      Apache HttpClient
      Copyright 1999-2016 The Apache Software Foundation

---

name: Apache HttpCore
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 4.4.11
libraries:
  - org.apache.httpcomponents: httpcore
notices:
  - httpcore: |
      Apache HttpCore
      Copyright 2005-2019 The Apache Software Foundation

---

name: Apache Log4j
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 2.8.2
libraries:
  - org.apache.logging.log4j: log4j-1.2-api
  - org.apache.logging.log4j: log4j-api
  - org.apache.logging.log4j: log4j-core
  - org.apache.logging.log4j: log4j-jul
  - org.apache.logging.log4j: log4j-slf4j-impl
notices:
  - log4j-1.2-api: |
      Apache Log4j 1.x Compatibility API
      Copyright 1999-2015 Apache Software Foundation
  - log4j-api: |
      Apache Log4j API
      Copyright 1999-2015 Apache Software Foundation
  - log4j-core: |
      Apache Log4j Core
      Copyright 1999-2012 Apache Software Foundation

      ResolverUtil.java
      Copyright 2005-2006 Tim Fennell

      TypeUtil.java
      Copyright 2002-2012 Ramnivas Laddad, Juergen Hoeller, Chris Beams
  - log4j-jul: |
      Apache Log4j JUL Adapter
      Copyright 1999-2015 Apache Software Foundation
  - log4j-slf4j-impl: |
      Apache Log4j SLF4J Binding
      Copyright 1999-2015 Apache Software Foundation

---

name: Apache Maven
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 3.1.1
libraries:
  - org.apache.maven: maven-aether-provider
  - org.apache.maven: maven-model
  - org.apache.maven: maven-model-builder
  - org.apache.maven: maven-repository-metadata
  - org.apache.maven: maven-settings
  - org.apache.maven: maven-settings-builder
notices:
  - maven-aether-provider: |
      Maven Aether Provider
      Copyright 2001-2013 The Apache Software Foundation
  - maven-model: |
      Maven Model
      Copyright 2001-2013 The Apache Software Foundation
  - maven-model-builder: |
      Maven Model Builder
      Copyright 2001-2013 The Apache Software Foundation
  - maven-repository-metadata: |
      Maven Repository Metadata Model
      Copyright 2001-2013 The Apache Software Foundation
  - maven-settings: |
      Maven Settings
      Copyright 2001-2013 The Apache Software Foundation
  - maven-settings-builder: |
      Maven Settings Builder
      Copyright 2001-2013 The Apache Software Foundation
---

name: Apache Maven Artifact
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 3.6.0
libraries:
  - org.apache.maven: maven-artifact
notices:
  - maven-artifact: |
      Maven Artifact
      Copyright 2001-2018 The Apache Software Foundation
---

name: Apache Maven Wagon API
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 2.4
libraries:
  - org.apache.maven.wagon: wagon-provider-api
notices:
  - wagon-provider-api: |
      Apache Maven Wagon :: API
      Copyright 2003-2013 The Apache Software Foundation
---

name: Apache Yetus Audience Annotations Component
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 0.5.0
libraries:
  - org.apache.yetus: audience-annotations
notices:
  - audience-annotations: |
      Apache Yetus - Audience Annotations
      Copyright 2015-2017 The Apache Software Foundation
---

name: Apache Zookeeper
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 3.5.9
libraries:
  - org.apache.zookeeper: zookeeper
  - org.apache.zookeeper: zookeeper-jute
notices:
  - zookeeper: |
      Apache ZooKeeper
      Copyright 2009-2019 The Apache Software Foundation

---

name: AsyncHttpClient asynchttpclient
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 2.5.3
libraries:
  - org.asynchttpclient: async-http-client
  - org.asynchttpclient: async-http-client-netty-utils

---

name: components from Jackson
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 1.9.13
libraries:
  - org.codehaus.jackson: jackson-core-asl
  - org.codehaus.jackson: jackson-mapper-asl
notice: |
  This product currently only contains code developed by authors
  of specific components, as identified by the source code files;
  if such notes are missing files have been created by
  Tatu Saloranta.

  For additional credits (generally to people who reported problems)
  see CREDITS file.

---

name: Plexus Interpolation API
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 1.19
libraries:
  - org.codehaus.plexus: plexus-interpolation

---

name: Plexus Common Utilities
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 3.0.24
libraries:
  - org.codehaus.plexus: plexus-utils
notices:
  - plexus-utils: |
      This product includes software developed by the Indiana University
        Extreme! Lab (http://www.extreme.indiana.edu/).

      This product includes software developed by
      ThoughtWorks (http://www.thoughtworks.com).

      This product includes software developed by
      javolution (http://javolution.org/).

      This product includes software developed by
      Rome (https://rome.dev.java.net/).
---

name: Jetty
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 9.4.40.v20210413
libraries:
  - org.eclipse.jetty: jetty-client
  - org.eclipse.jetty: jetty-continuation
  - org.eclipse.jetty: jetty-http
  - org.eclipse.jetty: jetty-io
  - org.eclipse.jetty: jetty-proxy
  - org.eclipse.jetty: jetty-rewrite
  - org.eclipse.jetty: jetty-security
  - org.eclipse.jetty: jetty-server
  - org.eclipse.jetty: jetty-servlet
  - org.eclipse.jetty: jetty-servlets
  - org.eclipse.jetty: jetty-util
  - org.eclipse.jetty: jetty-util-ajax
notice: |
  ==============================================================
   Jetty Web Container
   Copyright 1995-2018 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.

---

name: JVM Attach API
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 1.5
libraries:
  - org.gridkit.lab: jvm-attach-api

---

name: Hibernate Validator Engine
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 5.2.5.Final
libraries:
  - org.hibernate: hibernate-validator

---

name: SIGAR
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 1.6.5.132
libraries:
  - org.hyperic: sigar
notices:
  - sigar: |
      Copyright (c) 2004-2011 VMware, Inc.

      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.

      ADDITIONAL LICENSE INFORMATION:

      Hyperic SIGAR includes some third-party open source components
      in its distribution. The list below identifies the community or
      organization and links to their appropriate license terms.

      The Hyperic team would like to thank all the communities
      of the projects listed below for their contributions.

      ----------------------------------------------------------
      Components under the Apache License 2.0:
      ----------------------------------------------------------

      The following components are included without modification:

      - log4j -
      Information: http://logging.apache.org/
      License: http://www.apache.org/licenses/LICENSE-2.0

      The following components are included with modification:

      - cpptasks -
      Information: http://ant-contrib.sourceforge.net/
      License: http://www.apache.org/licenses/LICENSE-2.0

      - (portions of) APR -
      Information: http://apr.apache.org/
      License: http://www.apache.org/licenses/LICENSE-2.0

      ----------------------------------------------------------
      Components under BSD/MIT Style Licenses:
      ----------------------------------------------------------

      The following components are included with modification:

      - solaris get_mib2 -
      Information: ftp://vic.cc.purdue.edu/pub/tools/unix/solaris/get_mib2/
      License: within src/os/solaris/get_mib2.[ch]

      Copyright 1995 Purdue Research Foundation, West Lafayette, Indiana
      47907.  All rights reserved.

      Written by Victor A. Abell <abe@cc.purdue.edu>

      This software is not subject to any license of the American Telephone
      and Telegraph Company or the Regents of the University of California.

      Permission is granted to anyone to use this software for any purpose on
      any computer system, and to alter it and redistribute it freely, subject
      to the following restrictions:

      1. Neither Victor A  Abell nor Purdue University are responsible for
         any consequences of the use of this software.

      2. The origin of this software must not be misrepresented, either by
         explicit claim or by omission.  Credit to Victor A. Abell and Purdue
         University must appear in documentation and sources.

      3. Altered versions must be plainly marked as such, and must not be
         misrepresented as being the original software.

      4. This notice may not be removed or altered.

      - getline by Chris Thewalt -
      Information: http://tinyurl.com/r438r
      License: within src/sigar_getline.c

      Copyright (C) 1991, 1992 by Chris Thewalt (thewalt@ce.berkeley.edu)

      Permission to use, copy, modify, and distribute this software
      for any purpose and without fee is hereby granted, provided
      that the above copyright notices appear in all copies and that both the
      copyright notice and this permission notice appear in supporting
      documentation.  This software is provided "as is" without express or
      implied warranty.

      - PrintfFormat.java -
      Information: http://java.sun.com/developer/technicalArticles/Programming/sprintf/PrintfFormat.java
      License: within bindings/java/src/org/hyperic/sigar/util/PrintfFormat.java

      (c) 2000 Sun Microsystems, Inc.
      ALL RIGHTS RESERVED

      License Grant-

      Permission to use, copy, modify, and distribute this Software and its
      documentation for NON-COMMERCIAL or COMMERCIAL purposes and without fee is
      hereby granted.

      This Software is provided "AS IS".  All express warranties, including any
      implied warranty of merchantability, satisfactory quality, fitness for a
      particular purpose, or non-infringement, are disclaimed, except to the extent
      that such disclaimers are held to be legally invalid.

      You acknowledge that Software is not designed, licensed or intended for use in
      the design, construction, operation or maintenance of any nuclear facility
      ("High Risk Activities").  Sun disclaims any express or implied warranty of
      fitness for such uses.

      Please refer to the file http://www.sun.com/policies/trademarks/ for further
      important trademark information and to
      http://java.sun.com/nav/business/index.html for further important licensing
      information for the Java Technology.

---

name: JBoss Logging 3
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 3.2.1.Final
libraries:
  - org.jboss.logging: jboss-logging

---

name: JDBI
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 2.63.1
libraries:
  - org.jdbi: jdbi
notices:
  - jdbi: |
      Java ClassMate library was originally written by Tatu Saloranta (tatu.saloranta@iki.fi)

      Other developers who have contributed code are:

      * Brian Langel
---

name: LZ4 Java
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 1.7.1
libraries:
  - org.lz4: lz4-java

---

name: MapDB
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 1.0.8
libraries:
  - org.mapdb: mapdb

---

name: Objenesis
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 2.6
libraries:
  - org.objenesis: objenesis

---

name: Resilience4j
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 1.3.1
libraries:
  - io.github.resilience4j: resilience4j-core
  - io.github.resilience4j: resilience4j-bulkhead

---

name: RoaringBitmap
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 0.9.0
libraries:
  - org.roaringbitmap: RoaringBitmap
  - org.roaringbitmap: shims

---

name: vavr
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 0.10.2
libraries:
  - io.vavr: vavr
  - io.vavr: vavr-match

---

name: Config Magic
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 0.9
libraries:
  - org.skife.config: config-magic

---

name: Ion Java
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 1.0.2
libraries:
  - software.amazon.ion: ion-java
notices:
  - ion-java: |
      Amazon Ion Java
      Copyright 2007-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved.

---

name: Apache Hadoop
license_category: binary
module: hadoop-client
license_name: Apache License version 2.0
version: 2.8.5
libraries:
  - org.apache.hadoop: hadoop-annotations
  - org.apache.hadoop: hadoop-auth
  - org.apache.hadoop: hadoop-client
  - org.apache.hadoop: hadoop-common
  - org.apache.hadoop: hadoop-hdfs-client
  - org.apache.hadoop: hadoop-mapreduce-client-app
  - org.apache.hadoop: hadoop-mapreduce-client-common
  - org.apache.hadoop: hadoop-mapreduce-client-core
  - org.apache.hadoop: hadoop-mapreduce-client-jobclient
  - org.apache.hadoop: hadoop-mapreduce-client-shuffle
  - org.apache.hadoop: hadoop-yarn-api
  - org.apache.hadoop: hadoop-yarn-client
  - org.apache.hadoop: hadoop-yarn-common
  - org.apache.hadoop: hadoop-yarn-server-common
notice: |
  The binary distribution of this product bundles binaries of
  org.iq80.leveldb:leveldb-api (https://github.com/dain/leveldb), which has the
  following notices:
  * Copyright 2011 Dain Sundstrom <dain@iq80.com>
  * Copyright 2011 FuseSource Corp. http://fusesource.com

  The binary distribution of this product bundles binaries of
  org.fusesource.hawtjni:hawtjni-runtime (https://github.com/fusesource/hawtjni),
  which has the following notices:
  * This product includes software developed by FuseSource Corp.
    http://fusesource.com
  * This product includes software developed at
    Progress Software Corporation and/or its  subsidiaries or affiliates.
  * This product includes software developed by IBM Corporation and others.

  The binary distribution of this product bundles binaries of
  AWS Java SDK 1.10.6,
  which has the following notices:
   * This software includes third party software subject to the following
   copyrights: - XML parsing and utility functions from JetS3t - Copyright
   2006-2009 James Murty. - JSON parsing and utility functions from JSON.org -
   Copyright 2002 JSON.org. - PKCS#1 PEM encoded private key parsing and utility
   functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc.

  The binary distribution of this product bundles binaries of
  Gson 2.2.4,
  which has the following notices:

                              The Netty Project
                              =================

  Please visit the Netty web site for more information:

    * http://netty.io/

  Copyright 2014 The Netty Project

  The Netty Project licenses this file to you 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.

  Also, please refer to each LICENSE.<component>.txt file, which is located in
  the 'license' directory of the distribution file, for the license terms of the
  components that this product depends on.

  -------------------------------------------------------------------------------
  This product contains the extensions to Java Collections Framework which has
  been derived from the works by JSR-166 EG, Doug Lea, and Jason T. Greene:

    * LICENSE:
      * license/LICENSE.jsr166y.txt (Public Domain)
    * HOMEPAGE:
      * http://gee.cs.oswego.edu/cgi-bin/viewcvs.cgi/jsr166/
      * http://viewvc.jboss.org/cgi-bin/viewvc.cgi/jbosscache/experimental/jsr166/

  This product contains a modified version of Robert Harder's Public Domain
  Base64 Encoder and Decoder, which can be obtained at:

    * LICENSE:
      * license/LICENSE.base64.txt (Public Domain)
    * HOMEPAGE:
      * http://iharder.sourceforge.net/current/java/base64/

  This product contains a modified portion of 'Webbit', an event based
  WebSocket and HTTP server, which can be obtained at:

    * LICENSE:
      * license/LICENSE.webbit.txt (BSD License)
    * HOMEPAGE:
      * https://github.com/joewalnes/webbit

  This product contains a modified portion of 'SLF4J', a simple logging
  facade for Java, which can be obtained at:

    * LICENSE:
      * license/LICENSE.slf4j.txt (MIT License)
    * HOMEPAGE:
      * http://www.slf4j.org/

  This product contains a modified portion of 'ArrayDeque', written by Josh
  Bloch of Google, Inc:

    * LICENSE:
      * license/LICENSE.deque.txt (Public Domain)

  This product contains a modified portion of 'Apache Harmony', an open source
  Java SE, which can be obtained at:

    * LICENSE:
      * license/LICENSE.harmony.txt (Apache License 2.0)
    * HOMEPAGE:
      * http://archive.apache.org/dist/harmony/

  This product contains a modified version of Roland Kuhn's ASL2
  AbstractNodeQueue, which is based on Dmitriy Vyukov's non-intrusive MPSC queue.
  It can be obtained at:

    * LICENSE:
      * license/LICENSE.abstractnodequeue.txt (Public Domain)
    * HOMEPAGE:
      * https://github.com/akka/akka/blob/wip-2.2.3-for-scala-2.11/akka-actor/src/main/java/akka/dispatch/AbstractNodeQueue.java

  This product contains a modified portion of 'jbzip2', a Java bzip2 compression
  and decompression library written by Matthew J. Francis. It can be obtained at:

    * LICENSE:
      * license/LICENSE.jbzip2.txt (MIT License)
    * HOMEPAGE:
      * https://code.google.com/p/jbzip2/

  This product contains a modified portion of 'libdivsufsort', a C API library to construct
  the suffix array and the Burrows-Wheeler transformed string for any input string of
  a constant-size alphabet written by Yuta Mori. It can be obtained at:

    * LICENSE:
      * license/LICENSE.libdivsufsort.txt (MIT License)
    * HOMEPAGE:
      * https://code.google.com/p/libdivsufsort/

  This product contains a modified portion of Nitsan Wakart's 'JCTools', Java Concurrency Tools for the JVM,
   which can be obtained at:

    * LICENSE:
      * license/LICENSE.jctools.txt (ASL2 License)
    * HOMEPAGE:
      * https://github.com/JCTools/JCTools

  This product optionally depends on 'JZlib', a re-implementation of zlib in
  pure Java, which can be obtained at:

    * LICENSE:
      * license/LICENSE.jzlib.txt (BSD style License)
    * HOMEPAGE:
      * http://www.jcraft.com/jzlib/

  This product optionally depends on 'Compress-LZF', a Java library for encoding and
  decoding data in LZF format, written by Tatu Saloranta. It can be obtained at:

    * LICENSE:
      * license/LICENSE.compress-lzf.txt (Apache License 2.0)
    * HOMEPAGE:
      * https://github.com/ning/compress

  This product optionally depends on 'lz4', a LZ4 Java compression
  and decompression library written by Adrien Grand. It can be obtained at:

    * LICENSE:
      * license/LICENSE.lz4.txt (Apache License 2.0)
    * HOMEPAGE:
      * https://github.com/jpountz/lz4-java

  This product optionally depends on 'lzma-java', a LZMA Java compression
  and decompression library, which can be obtained at:

    * LICENSE:
      * license/LICENSE.lzma-java.txt (Apache License 2.0)
    * HOMEPAGE:
      * https://github.com/jponge/lzma-java

  This product contains a modified portion of 'jfastlz', a Java port of FastLZ compression
  and decompression library written by William Kinney. It can be obtained at:

    * LICENSE:
      * license/LICENSE.jfastlz.txt (MIT License)
    * HOMEPAGE:
      * https://code.google.com/p/jfastlz/

  This product contains a modified portion of and optionally depends on 'Protocol Buffers', Google's data
  interchange format, which can be obtained at:

    * LICENSE:
      * license/LICENSE.protobuf.txt (New BSD License)
    * HOMEPAGE:
      * http://code.google.com/p/protobuf/

  This product optionally depends on 'Bouncy Castle Crypto APIs' to generate
  a temporary self-signed X.509 certificate when the JVM does not provide the
  equivalent functionality.  It can be obtained at:

    * LICENSE:
      * license/LICENSE.bouncycastle.txt (MIT License)
    * HOMEPAGE:
      * http://www.bouncycastle.org/

  This product optionally depends on 'Snappy', a compression library produced
  by Google Inc, which can be obtained at:

    * LICENSE:
      * license/LICENSE.snappy.txt (New BSD License)
    * HOMEPAGE:
      * http://code.google.com/p/snappy/

  This product optionally depends on 'JBoss Marshalling', an alternative Java
  serialization API, which can be obtained at:

    * LICENSE:
      * license/LICENSE.jboss-marshalling.txt (GNU LGPL 2.1)
    * HOMEPAGE:
      * http://www.jboss.org/jbossmarshalling

  This product optionally depends on 'Caliper', Google's micro-
  benchmarking framework, which can be obtained at:

    * LICENSE:
      * license/LICENSE.caliper.txt (Apache License 2.0)
    * HOMEPAGE:
      * http://code.google.com/p/caliper/

  This product optionally depends on 'Apache Commons Logging', a logging
  framework, which can be obtained at:

    * LICENSE:
      * license/LICENSE.commons-logging.txt (Apache License 2.0)
    * HOMEPAGE:
      * http://commons.apache.org/logging/

  This product optionally depends on 'Apache Log4J', a logging framework, which
  can be obtained at:

    * LICENSE:
      * license/LICENSE.log4j.txt (Apache License 2.0)
    * HOMEPAGE:
      * http://logging.apache.org/log4j/

  This product optionally depends on 'Aalto XML', an ultra-high performance
  non-blocking XML processor, which can be obtained at:

    * LICENSE:
      * license/LICENSE.aalto-xml.txt (Apache License 2.0)
    * HOMEPAGE:
      * http://wiki.fasterxml.com/AaltoHome

  This product contains a modified version of 'HPACK', a Java implementation of
  the HTTP/2 HPACK algorithm written by Twitter. It can be obtained at:

    * LICENSE:
      * license/LICENSE.hpack.txt (Apache License 2.0)
    * HOMEPAGE:
      * https://github.com/twitter/hpack

  This product contains a modified portion of 'Apache Commons Lang', a Java library
  provides utilities for the java.lang API, which can be obtained at:

    * LICENSE:
      * license/LICENSE.commons-lang.txt (Apache License 2.0)
    * HOMEPAGE:
      * https://commons.apache.org/proper/commons-lang/

  The binary distribution of this product bundles binaries of
  Commons Codec 1.4,
  which has the following notices:
   * src/test/org/apache/commons/codec/language/DoubleMetaphoneTest.javacontains test data from http://aspell.net/test/orig/batch0.tab.Copyright (C) 2002 Kevin Atkinson (kevina@gnu.org)
    ===============================================================================
    The content of package org.apache.commons.codec.language.bm has been translated
    from the original php source code available at http://stevemorse.org/phoneticinfo.htm
    with permission from the original authors.
    Original source copyright:Copyright (c) 2008 Alexander Beider & Stephen P. Morse.

  The binary distribution of this product bundles binaries of
  Commons Lang 2.6,
  which has the following notices:
   * This product includes software from the Spring Framework,under the Apache License 2.0 (see: StringUtils.containsWhitespace())

  The binary distribution of this product bundles binaries of
  Apache Log4j 1.2.17,
  which has the following notices:
   * ResolverUtil.java
      Copyright 2005-2006 Tim Fennell
    Dumbster SMTP test server
      Copyright 2004 Jason Paul Kitchen
    TypeUtil.java
      Copyright 2002-2012 Ramnivas Laddad, Juergen Hoeller, Chris Beams

  The binary distribution of this product bundles binaries of
  Java Concurrency in Practice book annotations 1.0,
  which has the following notices:
   * Copyright (c) 2005 Brian Goetz and Tim Peierls Released under the Creative
    Commons Attribution License (http://creativecommons.org/licenses/by/2.5)
    Official home: http://www.jcip.net Any republication or derived work
    distributed in source code form must include this copyright and license
    notice.

  The binary distribution of this product bundles binaries of
  Jetty 6.1.26,
  which has the following notices:
   * ==============================================================
      Jetty Web Container
      Copyright 1995-2016 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./

  The binary distribution of this product bundles binaries of
  Snappy for Java 1.0.4.1,
  which has the following notices:
   * This product includes software developed by Google
      Snappy: http://code.google.com/p/snappy/ (New BSD License)

     This product includes software developed by Apache
      PureJavaCrc32C from apache-hadoop-common http://hadoop.apache.org/
      (Apache 2.0 license)

     This library containd statically linked libstdc++. This inclusion is allowed by
     "GCC RUntime Library Exception"
     http://gcc.gnu.org/onlinedocs/libstdc++/manual/license.html

     == Contributors ==
       * Tatu Saloranta
         * Providing benchmark suite
       * Alec Wysoker
         * Performance and memory usage improvement

---

name: Gson
license_category: binary
module: hadoop-client
license_name: Apache License version 2.0
version: 2.2.4
libraries:
  - com.google.code.gson: gson

---

name: Guava
license_category: binary
module: hadoop-client
license_name: Apache License version 2.0
version: 11.0.2
libraries:
  - com.google.guava: guava

---

name: Nimbus JOSE+JWT
license_category: binary
module: hadoop-client
license_name: Apache License version 2.0
version: 4.41.1
libraries:
  - com.nimbusds: nimbus-jose-jwt

---

name: OkHttp
license_category: binary
module: hadoop-client
license_name: Apache License version 2.0
version: 2.4.0
libraries:
  - com.squareup.okhttp: okhttp

---

name: Okio
license_category: binary
module: hadoop-client
license_name: Apache License version 2.0
version: 1.4.0
libraries:
  - com.squareup.okio: okio

---

name: Apache Commons BeanUtils
license_category: binary
module: hadoop-client
license_name: Apache License version 2.0
version: 1.7.0
libraries:
  - commons-beanutils: commons-beanutils
notices:
  - commons-beanutils: |
      This product includes software developed by
      The Apache Software Foundation (http://www.apache.org/).

---

name: Apache Commons BeanUtils
license_category: binary
module: hadoop-client
license_name: Apache License version 2.0
version: 1.8.0
libraries:
  - commons-beanutils: commons-beanutils-core
notices:
  - common-beanutils-core: |
      Apache Commons BeanUtils
      Copyright 2000-2008 The Apache Software Foundation

---

name: Apache Commons Codec
license_category: binary
module: hadoop-client
license_name: Apache License version 2.0
version: 1.4
libraries:
  - commons-codec: commons-codec
notices:
  - commons-codec: |
      Apache Commons Codec
      Copyright 2002-2009 The Apache Software Foundation

      --------------------------------------------------------------------------------
      Copyright (C) 2002 Kevin Atkinson (kevina@gnu.org). Verbatim copying
      and distribution of this entire article is permitted in any medium,
      provided this notice is preserved.
      --------------------------------------------------------------------------------

---

name: Apache Commons Configuration
license_category: binary
module: hadoop-client
license_name: Apache License version 2.0
version: 1.6
libraries:
  - commons-configuration: commons-configuration
notices:
  - commons-configuration: |
      Apache Commons Configuration
      Copyright 2001-2008 The Apache Software Foundation

---

name: Apache Commons Digester
license_category: binary
module: hadoop-client
license_name: Apache License version 2.0
version: 1.8
libraries:
  - commons-digester: commons-digester
notices:
  - commons-digester: |
      Apache Jakarta Commons Digester
      Copyright 2001-2006 The Apache Software Foundation

---

name: Apache Commons IO
license_category: binary
module: hadoop-client
license_name: Apache License version 2.0
version: 2.4
libraries:
  - commons-io: commons-io
notices:
  - commons-io: |
      Apache Commons IO
      Copyright 2002-2012 The Apache Software Foundation

---

name: Apache Commons Logging
license_category: binary
module: hadoop-client
license_name: Apache License version 2.0
version: 1.1.3
libraries:
  - commons-logging: commons-logging
notices:
  - commons-logging: |
      Apache Commons Logging
      Copyright 2003-2013 The Apache Software Foundation

---

name: Apache Commons Net
license_category: binary
module: hadoop-client
license_name: Apache License version 2.0
version: 3.1
libraries:
  - commons-net: commons-net
notices:
  - commons-net: |
      Apache Commons Net
      Copyright 2001-2012 The Apache Software Foundation

---

name: Apache Commons Compress
license_category: binary
module: hadoop-client
license_name: Apache License version 2.0
version: 1.19
libraries:
  - org.apache.commons: commons-compress
notices:
  - commons-compress: |
      Apache Commons Compress
      Copyright 2002-2012 The Apache Software Foundation

---

name: Apache Commons Math
license_category: binary
module: hadoop-client
license_name: Apache License version 2.0
version: 3.1.1
libraries:
  - org.apache.commons: commons-math3
notices:
  - commons-math3: |
      Apache Commons Math
      Copyright 2001-2012 The Apache Software Foundation

      ===============================================================================

      The BracketFinder (package org.apache.commons.math3.optimization.univariate)
      and PowellOptimizer (package org.apache.commons.math3.optimization.general)
      classes are based on the Python code in module "optimize.py" (version 0.5)
      developed by Travis E. Oliphant for the SciPy library (http://www.scipy.org/)
      Copyright © 2003-2009 SciPy Developers.
      ===============================================================================

      The LinearConstraint, LinearObjectiveFunction, LinearOptimizer,
      SimplexSolver and SimplexTableau classes in package
      org.apache.commons.math3.optimization.linear include software developed by
      Benjamin McCann (http://www.benmccann.com) and distributed with
      the following copyright: Copyright 2009 Google Inc.
      ===============================================================================

      This product includes software developed by the
      University of Chicago, as Operator of Argonne National
      Laboratory.
      The LevenbergMarquardtOptimizer class in package
      org.apache.commons.math3.optimization.general includes software
      translated from the lmder, lmpar and qrsolv Fortran routines
      from the Minpack package
      Minpack Copyright Notice (1999) University of Chicago.  All rights reserved
      ===============================================================================

      The GraggBulirschStoerIntegrator class in package
      org.apache.commons.math3.ode.nonstiff includes software translated
      from the odex Fortran routine developed by E. Hairer and G. Wanner.
      Original source copyright:
      Copyright (c) 2004, Ernst Hairer
      ===============================================================================

      The MersenneTwister class in package org.apache.commons.math3.random
      includes software translated from the 2002-01-26 version of
      the Mersenne-Twister generator written in C by Makoto Matsumoto and Takuji
      Nishimura. Original source copyright:
      Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura,
      All rights reserved
      ===============================================================================

      The HermiteInterpolator class and its corresponding test have been imported from
      the orekit library distributed under the terms of the Apache 2 licence. Original
      source copyright:
      Copyright 2010-2012 CS Systèmes d'Information
      ===============================================================================

      The creation of the package "o.a.c.m.analysis.integration.gauss" was inspired
      by an original code donated by Sébastien Brisard.
      ===============================================================================


      The complete text of licenses and disclaimers associated with the the original
      sources enumerated above at the time of code translation are in the LICENSE.txt
      file.
---

name: Netty
license_category: binary
module: hadoop-client
license_name: Apache License version 2.0
version: 3.6.2.Final
libraries:
  - io.netty: netty
notices:
  - netty: |
      ==
                                  The Netty Project
                                  =================

      Please visit the Netty web site for more information:

        * http://netty.io/

      Copyright 2011 The Netty Project

      The Netty Project licenses this file to you 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.

      Also, please refer to each LICENSE.<component>.txt file, which is located in
      the 'license' directory of the distribution file, for the license terms of the
      components that this product depends on.

      -------------------------------------------------------------------------------
      This product contains the extensions to Java Collections Framework which has
      been derived from the works by JSR-166 EG, Doug Lea, and Jason T. Greene:

        * LICENSE:
          * license/LICENSE.jsr166y.txt (Public Domain)
        * HOMEPAGE:
          * http://gee.cs.oswego.edu/cgi-bin/viewcvs.cgi/jsr166/
          * http://viewvc.jboss.org/cgi-bin/viewvc.cgi/jbosscache/experimental/jsr166/

      This product contains a modified version of Robert Harder's Public Domain
      Base64 Encoder and Decoder, which can be obtained at:

        * LICENSE:
          * license/LICENSE.base64.txt (Public Domain)
        * HOMEPAGE:
          * http://iharder.sourceforge.net/current/java/base64/

      This product contains a modified version of 'JZlib', a re-implementation of
      zlib in pure Java, which can be obtained at:

        * LICENSE:
          * license/LICENSE.jzlib.txt (BSD Style License)
        * HOMEPAGE:
          * http://www.jcraft.com/jzlib/

      This product optionally depends on 'Protocol Buffers', Google's data
      interchange format, which can be obtained at:

        * LICENSE:
          * license/LICENSE.protobuf.txt (New BSD License)
        * HOMEPAGE:
          * http://code.google.com/p/protobuf/

      This product optionally depends on 'SLF4J', a simple logging facade for Java,
      which can be obtained at:

        * LICENSE:
          * license/LICENSE.slf4j.txt (MIT License)
        * HOMEPAGE:
          * http://www.slf4j.org/

      This product optionally depends on 'Apache Commons Logging', a logging
      framework, which can be obtained at:

        * LICENSE:
          * license/LICENSE.commons-logging.txt (Apache License 2.0)
        * HOMEPAGE:
          * http://commons.apache.org/logging/

      This product optionally depends on 'Apache Log4J', a logging framework,
      which can be obtained at:

        * LICENSE:
          * license/LICENSE.log4j.txt (Apache License 2.0)
        * HOMEPAGE:
          * http://logging.apache.org/log4j/

      This product optionally depends on 'JBoss Logging', a logging framework,
      which can be obtained at:

        * LICENSE:
          * license/LICENSE.jboss-logging.txt (GNU LGPL 2.1)
        * HOMEPAGE:
          * http://anonsvn.jboss.org/repos/common/common-logging-spi/

      This product optionally depends on 'Apache Felix', an open source OSGi
      framework implementation, which can be obtained at:

        * LICENSE:
          * license/LICENSE.felix.txt (Apache License 2.0)
        * HOMEPAGE:
          * http://felix.apache.org/

      This product optionally depends on 'Webbit', a Java event based
      WebSocket and HTTP server:

        * LICENSE:
          * license/LICENSE.webbit.txt (BSD License)
        * HOMEPAGE:
          * https://github.com/joewalnes/webbit

---

name: Apache Log4j
license_category: binary
module: hadoop-client
license_name: Apache License version 2.0
version: 1.2.17
libraries:
  - log4j: log4j
notices:
  - log4j: |
      Apache log4j
      Copyright 2007 The Apache Software Foundation
---

name: JSON Small and Fast Parser
license_category: binary
module: hadoop-client
license_name: Apache License version 2.0
version: 1.1.1
libraries:
  - net.minidev: json-smart

---

name: Apache Avro
license_category: binary
module: hadoop-client
license_name: Apache License version 2.0
version: 1.7.4
libraries:
  - org.apache.avro: avro
notices:
  - avro: |
      Apache Avro
      Copyright 2009-2013 The Apache Software Foundation
---

name: Apache Directory
license_category: binary
module: hadoop-client
license_name: Apache License version 2.0
version: 1.0.0-M20
libraries:
  - org.apache.directory.api: api-asn1-api

---

name: Apache Directory
license_category: binary
module: hadoop-client
license_name: Apache License version 2.0
version: 1.0.3
libraries:
  - org.apache.directory.api: api-util
notices:
  - api-util: |
      Apache Directory LDAP API Utilities
      Copyright 2003-2013 The Apache Software Foundation

---

name: Apache Directory Server
license_category: binary
module: hadoop-client
license_name: Apache License version 2.0
version: 2.0.0-M15
libraries:
  - org.apache.directory.server: apacheds-i18n
  - org.apache.directory.server: apacheds-kerberos-codec
notices:
  - apacheds-i18n: |
      ApacheDS I18n
      Copyright 2003-2013 The Apache Software Foundation
  - apacheds-kerberos-codec: |
      ApacheDS Protocol Kerberos Codec
      Copyright 2003-2013 The Apache Software Foundation

---

name: Apache HTrace
license_category: binary
module: hadoop-client
license_name: Apache License version 2.0
version: 4.0.1-incubating
libraries:
  - org.apache.htrace: htrace-core4
notices:
  - htrace-core4: |
      htrace-core4
      Copyright 2015 The Apache Software Foundation

---

name: Apache Zookeeper
license_category: binary
module: hadoop-client
license_name: Apache License version 2.0
version: 3.4.6
libraries:
  - org.apache.zookeeper: zookeeper
notices:
  - zookeeper: |
      Apache ZooKeeper
      Copyright 2009-2012 The Apache Software Foundation

---

name: Apache Curator
license_category: binary
module: hadoop-client
license_name: Apache License version 2.0
version: 2.7.1
libraries:
  - org.apache.curator: curator-client
  - org.apache.curator: curator-framework
  - org.apache.curator: curator-recipes
notices:
  - curator-client: |
      Curator Client
      Copyright 2011-2015 The Apache Software Foundation
  - curator-framework: |
      Curator Framework
      Copyright 2011-2015 The Apache Software Foundation
  - curator-recipes: |
      Curator Recipes
      Copyright 2011-2015 The Apache Software Foundation

---

name: components from Jackson
license_category: binary
module: hadoop-client
license_name: Apache License version 2.0
version: 1.9.13
libraries:
  - org.codehaus.jackson: jackson-jaxrs
  - org.codehaus.jackson: jackson-xc
notice: |
  This product currently only contains code developed by authors
  of specific components, as identified by the source code files;
  if such notes are missing files have been created by
  Tatu Saloranta.

  For additional credits (generally to people who reported problems)
  see CREDITS file.

---

name: Jetty
license_category: binary
module: hadoop-client
license_name: Apache License version 2.0
version: 6.1.26
libraries:
  - org.mortbay.jetty: jetty-sslengine
  - org.mortbay.jetty: jetty-util
notice: |
  ==============================================================
   Jetty Web Container
   Copyright 1995-2009 Mort Bay Consulting Pty Ltd
  ==============================================================

  The Jetty Web Container is Copyright Mort Bay Consulting Pty Ltd
  unless otherwise noted. It is dual licensed under the apache 2.0
  license and eclipse 1.0 license. Jetty may be distributed under
  either license.

  The javax.servlet package used was sourced from the Apache
  Software Foundation and is distributed under the apache 2.0
  license.

---

name: snappy-java
license_category: binary
module: hadoop-client
license_name: Apache License version 2.0
version: 1.0.4.1
libraries:
  - org.xerial.snappy: snappy-java
notices:
  - snappy-java: |
      This product includes software developed by Google
       Snappy: http://code.google.com/p/snappy/ (New BSD License)


      This library containd statically linked libstdc++. This inclusion is allowed by
      "GCC RUntime Library Exception"
      http://gcc.gnu.org/onlinedocs/libstdc++/manual/license.html

      == Contributors ==
        * Tatu Saloranta
          * Providing benchmark suite
        * Alec Wysoker
          * Performance and memory usage improvement

---

name: Kafka Schema Registry Client
version: 5.5.1
license_category: binary
module: extensions/druid-avro-extensions
license_name: Apache License version 2.0
libraries:
  - io.confluent: kafka-schema-registry-client
  - io.confluent: common-config
  - io.confluent: common-utils

---

name: Kafka Client
version: 5.5.1-ccs
license_category: binary
module: extensions/druid-avro-extensions
license_name: Apache License version 2.0
libraries:
  - org.apache.kafka: kafka-clients

---

name: swagger-annotations
version: 1.6.0
license_category: binary
module: extensions/druid-avro-extensions
license_name: Apache License version 2.0
libraries:
  - io.swagger: swagger-annotations

---

name: jersey-common
version: '2.30'
license_category: binary
module: extensions/druid-avro-extensions
license_name: Apache License version 2.0
libraries:
  - org.glassfish.jersey.core: jersey-common

---

name: osgi-resource-locator
version: 1.0.3
license_category: binary
module: extensions/druid-avro-extensions
license_name: Eclipse Public License 2.0
libraries:
  - org.glassfish.hk2: osgi-resource-locator
  
---

name: jakarta.inject
version: 2.6.1
license_category: binary
module: extensions/druid-avro-extensions
license_name: Eclipse Public License 2.0
libraries:
  - org.glassfish.hk2.external: jakarta.inject
  
---

name: jakarta.annotation
version: 1.3.5
license_category: binary
module: extensions/druid-avro-extensions
license_name: Eclipse Public License 2.0
libraries:
  - jakarta.annotation: jakarta.annotation-api
    
---

name: javax.ws.rs-api
version: 2.1.1
license_category: binary
module: extensions/druid-avro-extensions
license_name: Eclipse Public License 2.0
libraries:
  - javax.ws.rs: javax.ws.rs-api
  
---

name: jakarta.ws.rs-api
version: 2.1.6
license_category: binary
module: extensions/druid-avro-extensions
license_name: Eclipse Public License 2.0
libraries:
  - jakarta.ws.rs: jakarta.ws.rs-api
        
---

name: Kafka Schema Registry Client 6.0.1
version: 6.0.1
license_category: binary
module: extensions/druid-protobuf-extensions
license_name: Apache License version 2.0
libraries:
  - io.confluent: kafka-schema-registry-client
  - io.confluent: common-utils

---

name: Confluent Kafka Client
version: 6.0.1-ccs
license_category: binary
module: extensions/druid-protobuf-extensions
license_name: Apache License version 2.0
libraries:
  - org.apache.kafka: kafka-clients

---

name: Apache Velocity Engine
version: 2.2
license_category: binary
module: extensions/druid-avro-extensions
license_name: Apache License version 2.0
libraries:
  - org.apache.velocity: velocity-engine-core
notices:
  - velocity-engine-core: |
      Apache Velocity

      Copyright (C) 2000-2007 The Apache Software Foundation

---

name: Apache Avro
license_category: binary
module: extensions/druid-avro-extensions
license_name: Apache License version 2.0
version: 1.9.2
libraries:
  - org.apache.avro: avro
  - org.apache.avro: avro-mapred
  - org.apache.avro: avro-ipc
  - org.apache.avro: avro-ipc-jetty
notices:
  - avro: |
      Apache Avro
      Copyright 2010-2019 The Apache Software Foundation
  - avro-ipc: |
      Apache Avro IPC
      Copyright 2010-2019 The Apache Software Foundation
  - avro-ipc-jetty: |
      Apache Avro IPC Jetty
      Copyright 2009-2019 The Apache Software Foundation
  - avro-mapred: |
      Apache Avro
      Copyright 2010-2019 The Apache Software Foundation

      Based upon the representations of upstream licensors, it is understood that
      portions of the mapreduce API included in the Java implementation are licensed
      from various contributors under one or more contributor license agreements to
      Odiago, Inc. and were then contributed by Odiago to Apache Avro, which has now
      made them available under the Apache 2.0 license. The original file header text
      is:

      | Licensed to Odiago, Inc. under one or more contributor license
      | agreements.  See the NOTICE file distributed with this work for
      | additional information regarding copyright ownership.  Odiago, Inc.
      | licenses this file to you 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.

      The Odiago NOTICE at the time of the contribution:

      | This product includes software developed by Odiago, Inc.
      | (http://www.wibidata.com).

---

name: Javax Annotation API
license_category: binary
module: extensions/druid-avro-extensions
license_name: CDDL 1.1
version: 1.3.2
copyright: Oracle and/or its affiliates
license_file_path: licenses/bin/javax.annotation-api.CDDL11
libraries:
  - javax.annotation: javax.annotation-api

---

name: Schema Repository
license_category: binary
module: extensions/druid-avro-extensions
license_name: Apache License version 2.0
version: 0.1.3
libraries:
  - org.schemarepo: schema-repo-api
  - org.schemarepo: schema-repo-avro
  - org.schemarepo: schema-repo-client
  - org.schemarepo: schema-repo-common

---

name: Gson
license_category: binary
module: extensions/druid-avro-extensions
license_name: Apache License version 2.0
version: 2.3.1
libraries:
  - com.google.code.gson: gson

---

name: Apache Hive
license_category: binary
module: extensions/druid-bloom-filter
license_name: Apache License version 2.0
version: 2.7.1
libraries:
  - org.apache.hive: hive-storage-api
notices:
  - hive-storage-api: |
      Hive Storage API
      Copyright 2018 The Apache Software Foundation

---

name: DataSketches
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 2.0.0
libraries:
  - org.apache.datasketches: datasketches-java

---

name: DataSketches
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 1.3.0
libraries:
  - org.apache.datasketches: datasketches-memory

---

name: Jackson
license_category: binary
module: extensions/druid-hdfs-storage
license_name: Apache License version 2.0
version: 1.9.2
libraries:
  - org.codehaus.jackson: jackson-jaxrs
  - org.codehaus.jackson: jackson-xc

---

name: xmlenc
license_category: binary
module: extensions/druid-hdfs-storage
license_name: BSD-3-Clause License
version: 0.52
copyright: Ernst de Haan
license_file_path: licenses/bin/xmlenc.BSD3
libraries:
  - xmlenc: xmlenc

---

name: Apache Kafka
version: 2.8.0
license_category: binary
module: extensions/druid-kafka-indexing-service
license_name: Apache License version 2.0
libraries:
  - org.apache.kafka: kafka-clients
notices:
  - kafka-clients: |
      Apache Kafka
      Copyright 2020 The Apache Software Foundation.

      This distribution has a binary dependency on jersey, which is available under the CDDL
      License. The source code of jersey can be found at https://github.com/jersey/jersey/.

---

name: snappy-java
license_category: binary
module: extensions/druid-kafka-indexing-service
license_name: Apache License version 2.0
version: 1.1.2.6
libraries:
  - org.xerial.snappy: snappy-java

---


name: AWS SDK for Java
license_category: binary
module: extensions/druid-kinesis-indexing-service
license_name: Apache License version 2.0
version: 1.11.884
libraries:
  - com.amazonaws: aws-java-sdk-kinesis
  - com.amazonaws: aws-java-sdk-sts
  - com.amazonaws: jmespath-java

---

name: Apache Parquet
license_category: binary
module: extensions/druid-parquet-extensions
license_name: Apache License version 2.0
version: 1.11.1
libraries:
  - org.apache.parquet: parquet-avro
  - org.apache.parquet: parquet-column
  - org.apache.parquet: parquet-common
  - org.apache.parquet: parquet-encoding
  - org.apache.parquet: parquet-hadoop
  - org.apache.parquet: parquet-jackson
  - org.apache.parquet: parquet-format-structures
notices:
  - parquet-avro: |
      Apache Parquet MR
      Copyright 2014 The Apache Software Foundation


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

      This product includes code from Apache Avro, which includes the following in
      its NOTICE file:

        Apache Avro
        Copyright 2010-2015 The Apache Software Foundation
  - parquet-jackson: |
      This product currently only contains code developed by authors
      of specific components, as identified by the source code files;
      if such notes are missing files have been created by
      Tatu Saloranta.

      For additional credits (generally to people who reported problems)
      see CREDITS file.

---

name: Apache Parquet Format
license_category: binary
module: extensions/druid-parquet-extensions
license_name: Apache License version 2.0
version: 2.4.0
libraries:
  - org.apache.parquet: parquet-format
notices:
  - parquet-format: |
      Apache Parquet Format
      Copyright 2017 The Apache Software Foundation

---

name: Protocol Buffers Dynamic Schema
license_category: binary
module: extensions/protobuf-extensions
license_name: Apache License version 2.0
version: 0.9.3
libraries:
  - com.github.os72: protobuf-dynamic

---

name: Gson
license_category: binary
module: extensions/protobuf-extensions
license_name: Apache License version 2.0
version: 2.8.6
libraries:
  - com.google.code.gson: gson

---

name: Checker Qual
license_category: binary
module: java-core
license_name: MIT License
version: 2.5.7
copyright: the Checker Framework developers
license_file_path: licenses/bin/checker-qual.MIT
libraries:
  - org.checkerframework: checker-qual

---

name: JCodings
license_category: binary
module: java-core
license_name: MIT License
version: 1.0.43
copyright: JRuby Team
license_file_path: licenses/bin/jcodings.MIT
libraries:
  - org.jruby.jcodings: jcodings

---

name: Joni
license_category: binary
module: java-core
license_name: MIT License
version: 2.1.27
copyright: JRuby Team
license_file_path: licenses/bin/joni.MIT
libraries:
  - org.jruby.joni: joni

---

name: JCL 1.2 Implemented Over SLF4J
license_category: binary
module: java-core
license_name: MIT License
version: 1.7.12
copyright: QOS.ch
license_file_path: licenses/bin/jcl-over-slf4j.MIT
libraries:
  - org.slf4j: jcl-over-slf4j

---

name: SLF4J API
license_category: binary
module: java-core
license_name: MIT License
version: 1.7.25
copyright: QOS.ch
license_file_path: licenses/bin/slf4j.MIT
libraries:
  - org.slf4j: slf4j-api

---

name: SLF4J API
version: 1.7.10
license_category: binary
module: hadoop-client
license_name: MIT License
copyright: QOS.ch
license_file_path: licenses/bin/slf4j.MIT
libraries:
  - org.slf4j: slf4j-api
  - org.slf4j: slf4j-log4j12

---

name: JNI binding for Zstd
license_category: binary
module: java-core
license_name: BSD-2-Clause License
version: 1.3.3-1
copyright: Luben Karavelov
license_file_path: licenses/bin/zstd-jni.BSD2
libraries:
  - com.github.luben: zstd-jni

---

name: Zstandard
license_category: binary
module: java-core
license_name: BSD-3-Clause License
version: 1.3.3
copyright: Facebook, Inc.
license_file_path: licenses/bin/zstandard.BSD3

---

name: FindBugs JSR305
license_category: binary
module: java-core
license_name: BSD-3-Clause License
version: 2.0.1
copyright: FindBugs
license_file_path: licenses/bin/jsr305.BSD3
libraries:
  - com.google.code.findbugs: jsr305
skip_dependency_report_check: true

---

name: Protocol Buffers
license_category: binary
module: java-core
license_name: BSD-3-Clause License
version: 3.11.0
copyright: Google, Inc.
license_file_path:
  - licenses/bin/protobuf-java.BSD3
  - licenses/bin/protobuf-java-redhat.BSD3
  - licenses/bin/protobuf-java-bloomberg.BSD3
libraries:
  - com.google.protobuf: protobuf-java
additional_license_statement: except src/google/protobuf/stubs/atomicops_internals_generic_gcc.h and src/google/protobuf/stubs/atomicops_internals_power.h files which are copyrighted by Red Hat Inc and Bloomberg Finance LP, respectively, and available under a BSD-3-Clause

---

name: JLine
license_category: binary
module: java-core
license_name: BSD-3-Clause License
version: 0.9.94
copyright: Marc Prud'hommeaux
license_file_path: licenses/bin/jline.BSD3
libraries:
  - jline: jline

---

name: ANTLR 4 Runtime
license_category: binary
module: java-core
license_name: BSD-3-Clause License
version: 4.5.1
copyright: The ANTLR Project
license_file_path: licenses/bin/antlr4-runtime.BSD3
libraries:
  - org.antlr: antlr4-runtime

---

name: Janino and Commons Compiler
license_category: binary
module: java-core
license_name: BSD-3-Clause License
version: 3.0.11
copyright: Arno Unkrig and TIBCO Software Inc.
license_file_path: licenses/bin/janino.BSD3
libraries:
  - org.codehaus.janino: janino
  - org.codehaus.janino: commons-compiler

---

name: ASM
license_category: binary
module: java-core
license_name: BSD-3-Clause License
version: 7.1
copyright: INRIA, France Telecom
license_file_path: licenses/bin/asm.BSD3
libraries:
  - org.ow2.asm: asm
  - org.ow2.asm: asm-commons
  - org.ow2.asm: asm-tree
  - org.ow2.asm: asm-analysis

---

name: FindBugs JSR305
license_category: binary
module: hadoop-client
license_name: BSD-3-Clause License
version: 3.0.0
copyright: FindBugs
license_file_path: licenses/bin/jsr305.BSD3
libraries:
  - com.google.code.findbugs: jsr305
skip_dependency_report_check: true

---

name: Protocol Buffers
license_category: binary
module: hadoop-client
license_name: BSD-3-Clause License
version: 2.5.0
copyright: Google, Inc.
license_file_path: licenses/bin/protobuf-java.BSD3
libraries:
  - com.google.protobuf: protobuf-java

---

name: Paranamer
license_category: binary
module: hadoop-client
license_name: BSD-3-Clause License
version: 2.3
copyright: Paul Hammant & ThoughtWorks Inc
license_file_path: licenses/bin/paranamer.BSD3
libraries:
  - com.thoughtworks.paranamer: paranamer

---

name: LevelDB JNI
license_category: binary
module: hadoop-client
license_name: BSD-3-Clause License
version: 1.8
copyright: FuseSource Corp.
license_file_path: licenses/bin/leveldb-jni.BSD3
libraries:
  - org.fusesource.leveldbjni: leveldbjni-all

---

name: Paranamer
license_category: binary
module: extensions/druid-avro-extensions
license_name: BSD-3-Clause License
version: 2.7
copyright: Paul Hammant & ThoughtWorks Inc
license_file_path: licenses/bin/paranamer.BSD3
libraries:
  - com.thoughtworks.paranamer: paranamer

---

name: StringTemplate
license_category: binary
module: extensions/druid-lookups-cached-single
license_name: BSD-3-Clause License
version: 3.2
copyright: Terrence Parr
license_file_path: licenses/bin/antlr-stringtemplate.BSD3
libraries:
  - org.antlr: stringtemplate

---

name: ANTLR
license_category: binary
module: extensions/druid-lookups-cached-single
license_name: BSD-3-Clause License
version: 2.7.7
copyright: The ANTLR Project
license_file_path: licenses/bin/antlr.BSD3
libraries:
  - antlr: antlr

---

name: PostgreSQL JDBC Driver
license_category: binary
module: extensions/druid-lookups-cached-single
license_name: BSD-2-Clause License
version: 42.2.14
copyright: PostgreSQL Global Development Group
license_file_path: licenses/bin/postgresql.BSD2
libraries:
  - org.postgresql: postgresql

---

name: PostgreSQL JDBC Driver
license_category: binary
module: extensions/druid-lookups-cached-global
license_name: BSD-2-Clause License
version: 42.2.14
copyright: PostgreSQL Global Development Group
license_file_path: licenses/bin/postgresql.BSD2
libraries:
  - org.postgresql: postgresql

---

name: PostgreSQL JDBC Driver
license_category: binary
module: extensions/postgresql-metadata-storage
license_name: BSD-2-Clause License
version: 42.2.14
copyright: PostgreSQL Global Development Group
license_file_path: licenses/bin/postgresql.BSD2
libraries:
  - org.postgresql: postgresql

---

name: Protocol Buffers
license_category: binary
module: extensions/druid-protobuf-extensions
license_name: BSD-3-Clause License
version: 3.11.0
copyright: Google, Inc.
license_file_path: licenses/bin/protobuf-java.BSD3
libraries:
  - com.google.protobuf: protobuf-java
  - com.google.protobuf: protobuf-java-util

---

name: ICU4J
license_category: binary
module: java-core
license_name: ICU License
version: 55.1
copyright: International Business Machines Corporation and others
license_file_path: licenses/bin/icu4j.ICU
libraries:
  - com.ibm.icu: icu4j

---

name: JavaBeans Activation Framework
license_category: binary
module: java-core
license_name: CDDL 1.1
version: 1.2.0
copyright: Oracle and/or its affiliates.
license_file_path: licenses/bin/javax.activation.CDDL11
libraries:
  - com.sun.activation: javax.activation

---

name: Jersey
license_category: binary
module: java-core
license_name: CDDL 1.1
version: 1.19.3
copyright: Oracle and/or its affiliates.
license_file_path: licenses/bin/jersey.CDDL11
libraries:
  - com.sun.jersey: jersey-core
  - com.sun.jersey: jersey-server
  - com.sun.jersey: jersey-servlet
  - com.sun.jersey: contribs
  - com.sun.jersey.contribs: jersey-guice

---

name: Expression Language 3.0 API
license_category: binary
module: java-core
license_name: CDDL 1.1
version: 3.0.0
copyright: Oracle and/or its affiliates.
license_file_path: licenses/bin/javax.CDDL11
libraries:
  - javax.el: javax.el-api

---

name: Java Servlet API
license_category: binary
module: java-core
license_name: CDDL 1.1
version: 3.1.0
copyright: Oracle and/or its affiliates.
license_file_path: licenses/bin/javax.CDDL11
libraries:
  - javax.servlet: javax.servlet-api

---

name: JSR311 API
license_category: binary
module: java-core
license_name: CDDL 1.1
version: 1.1.1
copyright: Oracle and/or its affiliates.
license_file_path: licenses/bin/jsr311-api.CDDL11
libraries:
  - javax.ws.rs: jsr311-api

---

name: Expression Language 3.0
license_category: binary
module: java-core
license_name: CDDL 1.1
version: 3.0.0
copyright: Oracle and/or its affiliates.
license_file_path: licenses/bin/javax.CDDL11
libraries:
  - org.glassfish: javax.el

---

name: JAXB Runtime
license_category: binary
module: java-core
license_name: CDDL 1.1
version: 2.3.1
copyright: Oracle and/or its affiliates.
license_file_path: licenses/bin/jaxb-runtime.CDDL11
libraries:
  - org.glassfish.jaxb: jaxb-runtime

---

name: TXW2 Runtime
license_category: binary
module: java-core
license_name: CDDL 1.1
version: 2.3.1
copyright: Oracle and/or its affiliates.
license_file_path: licenses/bin/jaxb-runtime.CDDL11
libraries:
  - org.glassfish.jaxb: txw2

---

name: Extended StAX API
license_category: binary
module: java-core
license_name: CDDL 1.1
version: 1.8
copyright: Oracle and/or its affiliates
license_file_path: licenses/bin/jaxb-runtime.CDDL11
libraries:
  - org.jvnet.staxex: stax-ex

---

name: Istack Common Utility Code Runtime
license_category: binary
module: java-core
license_name: CDDL 1.1
version: 3.0.7
copyright: Oracle and/or its affiliates
license_file_path: licenses/bin/jaxb-runtime.CDDL11
libraries:
  - com.sun.istack: istack-commons-runtime

---

name: FastInfoset
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 1.2.15
libraries:
  - com.sun.xml.fastinfoset: FastInfoset

---
name: Jersey
license_category: binary
module: hadoop-client
license_name: CDDL 1.1
version: 1.9
copyright: Oracle and/or its affiliates.
license_file_path: licenses/bin/jersey.CDDL11
libraries:
  - com.sun.jersey: jersey-client
  - com.sun.jersey: jersey-core

---

name: JavaBeans Activation Framework
license_category: binary
module: hadoop-client
license_name: CDDL 1.1
version: 1.1
copyright: Oracle and/or its affiliates.
license_file_path: licenses/bin/javax.CDDL11
libraries:
  - javax.activation: activation

---

name: Java Servlet API
license_category: binary
module: hadoop-client
license_name: CDDL 1.1
version: 2.5
copyright: Oracle and/or its affiliates.
license_file_path: licenses/bin/javax.CDDL11
libraries:
  - javax.servlet: javax.servlet-api

---

name: JAXB
license_category: binary
module: hadoop-client
license_name: CDDL 1.1
version: 2.2.2
copyright: Oracle and/or its affiliates.
license_file_path: licenses/bin/javax.CDDL11
libraries:
  - javax.xml.bind: jaxb-api

---

name: JAXB
license_category: binary
module: java-core
license_name: CDDL 1.1
version: 2.3.1
copyright: Oracle and/or its affiliates.
license_file_path: licenses/bin/javax.CDDL11
libraries:
  - javax.xml.bind: jaxb-api

---

name: stax-api
license_category: binary
module: hadoop-client
license_name: CDDL 1.1
version: 1.0-2
copyright: Oracle and/or its affiliates.
license_file_path: licenses/bin/javax.CDDL11
libraries:
  - javax.xml.stream: stax-api

---

name: jsp-api
license_category: binary
module: hadoop-client
license_name: CDDL 1.1
version: 2.1
copyright: Oracle and/or its affiliates.
license_file_path: licenses/bin/javax.CDDL11
libraries:
  - javax.servlet.jsp: jsp-api

---

name: Jersey
license_category: binary
module: extensions/druid-avro-extensions
license_name: CDDL 1.1
version: 1.19.3
copyright: Oracle and/or its affiliates.
license_file_path: licenses/bin/jersey.CDDL11
libraries:
  - com.sun.jersey: jersey-client

---

name: OkHttp Aether Connector
license_category: binary
module: java-core
license_name: Eclipse Public License 1.0
version: 0.0.9
copyright: to original author or authors
license_file_path: licenses/bin/aether-connector-okhttp.EPL1
libraries:
  - io.tesla.aether: aether-connector-okhttp

---

name: Tesla Aether
license_category: binary
module: java-core
license_name: Eclipse Public License 1.0
version: 0.0.5
copyright: to original author or authors
license_file_path: licenses/bin/tesla-aether.EPL1
libraries:
  - io.tesla.aether: tesla-aether

---

name: Eclipse Aether libraries
license_category: binary
module: java-core
license_name: Eclipse Public License 1.0
version: 0.9.0.M2
copyright: Sonatype, Inc.
license_file_path: licenses/bin/aether-core.EPL1
libraries:
  - org.eclipse.aether: aether-api
  - org.eclipse.aether: aether-connector-file
  - org.eclipse.aether: aether-impl
  - org.eclipse.aether: aether-spi
  - org.eclipse.aether: aether-util

---

name: Rhino
license_category: binary
module: java-core
license_name: Mozilla Public License Version 2.0
version: 1.7.11
copyright: Mozilla and individual contributors.
license_file_path: licenses/bin/rhino.MPL2
libraries:
  - org.mozilla: rhino

---

name: JCIP Annotations Under Apache License
license_category: binary
module: extensions/druid-hdfs-storage
license_name: Apache License version 2.0
version: 1.0-1
libraries:
  - com.github.stephenc.jcip: jcip-annotations

---

name: Reactive Streams
license_category: binary
module: java-core
license_name: Creative Commons CC0
version: 1.0.2
license_file_path: licenses/bin/reactive-streams.CC0
libraries:
  - org.reactivestreams: reactive-streams

---

name: a smear function adapted from MurmurHash3
license_category: source
module: java-core
license_name: Public Domain
copyright: Austin Appleby who has placed MurmurHash3 in the public domain (https://github.com/aappleby/smhasher/blob/master/src/MurmurHash3.cpp)
source_paths:
  - processing/src/main/java/org/apache/druid/query/groupby/epinephelinae/Groupers.java

---

name: example data collected from the Wikipedia edit stream API (this content is NOT part of the source code and is only used for example and tutorial purposes)
license_category: source
module: java-core
license_name: Creative Commons Attribution-ShareAlike 3.0 Unported License
copyright: Wikipedia editors and contributors for the text content
license_file_path: licenses/src/CC-BY-SA.txt
source_paths:
  - examples/quickstart/tutorial/wikiticker-2015-09-12-sampled.json.gz

---

name: AOP Alliance
license_category: binary
module: java-core
license_name: Public Domain
version: 1.0
libraries:
  - aopalliance: aopalliance

---

name: XZ
license_category: binary
module: java-core
license_name: Public Domain
version: 1.8
libraries:
  - org.tukaani: xz

---

name: XZ
license_category: binary
module: hadoop-client
license_name: Public Domain
version: 1.0
libraries:
  - org.tukaani: xz

---

name: Apache ORC libraries
license_category: binary
module: extensions/druid-orc-extensions
license_name: Apache License version 2.0
version: 1.5.10
libraries:
  - org.apache.orc: orc-mapreduce
  - org.apache.orc: orc-core
  - org.apache.orc: orc-shims
notices:
  - orc-mapreduce: |
      ORC MapReduce
      Copyright 2013-2019 The Apache Software Foundation
  - orc-core: |
      ORC Core
      Copyright 2013-2019 The Apache Software Foundation
  - orc-shims: |
      ORC Shims
      Copyright 2013-2019 The Apache Software Foundation

---

name: ThreeTen
license_category: binary
module: extensions/druid-orc-extensions
license_name: BSD-3-Clause License
version: 1.5.0
libraries:
  - org.threeten: threeten-extra
notices:
  - threeten-extra: |
      ThreeTen-Extra
      Copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos.

---

name: aircompressor
license_category: binary
module: extensions/druid-orc-extensions
license_name: Apache License version 2.0
version: "0.10"
libraries:
  - io.airlift: aircompressor

---

name: Hive storage API
license_category: binary
module: extensions/druid-orc-extensions
license_name: Apache License version 2.0
version: 2.7.1
libraries:
  - org.apache.hive: hive-storage-api
notices:
  - hive-storage-api: |
      Hive Storage API
      Copyright 2018 The Apache Software Foundation

---

name: Google Cloud Storage JSON API
license_category: binary
module: extensions/druid-google-extensions
license_name: Apache License version 2.0
version: v1-rev20190523-1.26.0
libraries:
  - com.google.apis: google-api-services-storage

---

name: Google Compute Engine API
license_category: binary
module: extensions/gce-extensions
license_name: Apache License version 2.0
version: v1-rev20190607-1.26.0
libraries:
  - com.google.apis: google-api-services-compute

---

name: Google APIs Client Library For Java
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 1.26.0
libraries:
  - com.google.api-client: google-api-client

---

name: Google HTTP Client Library For Java
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 1.26.0
libraries:
  - com.google.http-client: google-http-client
  - com.google.http-client: google-http-client-jackson2

---

name: Google OAuth Client Library For Java
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 1.22.0
libraries:
  - com.google.oauth-client: google-oauth-client

---

name: JavaBeans Activation Framework API
license_category: binary
module: java-core
license_name: CDDL 1.1
version: 1.2.0
copyright: Oracle and/or its affiliates
license_file_path: licenses/bin/javax.activation-api.CDDL11
libraries:
  - javax.activation: javax.activation-api

---

name: Apache Kafka
license_category: binary
module: extensions/kafka-extraction-namespace
license_name: Apache License version 2.0
version: 2.8.0
libraries:
  - org.apache.kafka: kafka-clients
notices:
  - kafka-clients:
      Apache Kafka
      Copyright 2020 The Apache Software Foundation.

      This distribution has a binary dependency on jersey, which is available under the CDDL
      License. The source code of jersey can be found at https://github.com/jersey/jersey/.

---

name: Metrics Core Library
license_category: binary
module: extensions/kafka-extraction-namespace
license_name: Apache License version 2.0
version: 2.2.0
libraries:
  - com.yammer.metrics: metrics-core
notices:
  - metrics-core: |
      Metrics
      Copyright 2010-2013 Coda Hale and Yammer, Inc., 2014-2017 Dropwizard Team

      This product includes software developed by Coda Hale and Yammer, Inc.
---

name: JOpt Simple
license_category: binary
module: extensions/kafka-extraction-namespace
license_name: MIT License
copyright: Paul R. Holser, Jr.
version: 3.2
license_file_path: licenses/bin/jopt-simple.MIT
libraries:
  - net.sf.jopt-simple: jopt-simple

---

name: Scala Library
license_category: binary
module: extensions/kafka-extraction-namespace
license_name: Apache License version 2.0
copyright: LAMP/EPFL and Lightbend, Inc.
version: 2.12.7
libraries:
  - org.scala-lang: scala-library

---

name: Microsoft Azure SDK For Key Vault Core
license_category: binary
module: extensions/druid-azure-extensions
license_name: MIT License
copyright: Microsoft
version: 1.0.0
libraries:
  - com.microsoft.azure: azure-keyvault-core

---

name: Microsoft Azure Storage Client SDK
license_category: binary
module: extensions/druid-azure-extensions
license_name: Apache License version 2.0
copyright: Microsoft
version: 8.6.0
libraries:
  - com.microsoft.azure: azure-storage

---

name: org.apache.ranger ranger-plugins-audit
license_category: binary
version: 2.0.0
module: druid-ranger-security
license_name: Apache License version 2.0
libraries:
  - org.apache.ranger: ranger-plugins-audit

---

name: org.apache.ranger ranger-plugins-common
license_category: binary
version: 2.0.0
module: druid-ranger-security
license_name: Apache License version 2.0
libraries:
  - org.apache.ranger: ranger-plugins-common

---

name: com.101tec zkclient
license_category: binary
version: '0.10'
module: druid-ranger-security
license_name: Apache License version 2.0
libraries:
  - com.101tec: zkclient

---

name: com.kstruct gethostname4j
license_category: binary
version: 0.0.2
module: druid-ranger-security
license_name: MIT License
libraries:
  - com.kstruct: gethostname4j

---

name: com.sun.jersey jersey-bundle
license_category: binary
version: 1.19.3
module: druid-ranger-security
license_name: CDDL 1.1
libraries:
  - com.sun.jersey: jersey-bundle

---

name: net.java.dev.jna jna-platform
license_category: binary
version: 5.2.0
module: druid-ranger-security
license_name: Apache License version 2.0
libraries:
  - net.java.dev.jna: jna-platform

---

name: JOpt Simple
license_category: binary
version: 5.0.4
module: druid-ranger-security
license_name: MIT License
libraries:
  - net.sf.jopt-simple: jopt-simple
copyright: Paul R. Holser, Jr.

---

name: org.apache.httpcomponents httpmime
license_category: binary
version: 4.5.3
module: druid-ranger-security
license_name: Apache License version 2.0
libraries:
  - org.apache.httpcomponents: httpmime

---

name: Apache Kafka
license_category: binary
version: 2.0.0
module: druid-ranger-security
license_name: Apache License version 2.0
libraries:
  - org.apache.kafka: kafka-clients
notices:
  - kafka-clients: 'Apache Kafka Copyright 2019 The Apache Software Foundation.

This distribution has a binary dependency on jersey, which is available under
the CDDL License. The source code of jersey can be found at https://github.com/jersey/jersey/.'

---

name: org.apache.kafka kafka_2.11
license_category: binary
version: 2.0.0
module: druid-ranger-security
license_name: Apache License version 2.0
libraries:
  - org.apache.kafka: kafka_2.11

---

name: org.apache.ranger ranger-plugins-cred
license_category: binary
version: 2.0.0
module: druid-ranger-security
license_name: Apache License version 2.0
libraries:
  - org.apache.ranger: ranger-plugins-cred

---

name: org.apache.solr solr-solrj
license_category: binary
version: 7.7.1
module: druid-ranger-security
license_name: Apache License version 2.0
libraries:
  - org.apache.solr: solr-solrj

---

name: org.codehaus.woodstox stax2-api
license_category: binary
version: 3.1.4
module: druid-ranger-security
license_name: BSD-3-Clause License
libraries:
  - org.codehaus.woodstox: stax2-api

---

name: org.codehaus.woodstox woodstox-core-asl
license_category: binary
version: 4.4.1
module: druid-ranger-security
license_name: Apache License version 2.0
libraries:
  - org.codehaus.woodstox: woodstox-core-asl

---

name: org.eclipse.persistence commonj.sdo
license_category: binary
version: 2.1.1
module: druid-ranger-security
license_name: Eclipse Distribution License 1.0
libraries:
  - org.eclipse.persistence: commonj.sdo

---

name: org.eclipse.persistence eclipselink
license_category: binary
version: 2.5.2
module: druid-ranger-security
license_name: Eclipse Distribution License 1.0
libraries:
  - org.eclipse.persistence: eclipselink

---

name: org.eclipse.persistence javax.persistence
license_category: binary
version: 2.1.0
module: druid-ranger-security
license_name: Eclipse Distribution License 1.0
libraries:
  - org.eclipse.persistence: javax.persistence

---

name: org.noggit noggit
license_category: binary
version: '0.8'
module: druid-ranger-security
license_name: Apache License version 2.0
libraries:
  - org.noggit: noggit

---

name: Scala Library
license_category: binary
version: 2.11.12
module: druid-ranger-security
license_name: BSD-3-Clause License
libraries:
  - org.scala-lang: scala-library
copyright: LAMP/EPFL and Lightbend, Inc.

---

name: org.scala-lang scala-reflect
license_category: binary
version: 2.11.12
module: druid-ranger-security
license_name: BSD-3-Clause License
libraries:
  - org.scala-lang: scala-reflect

---

name: snappy-java
license_category: binary
version: 1.1.7.1
module: druid-ranger-security
license_name: Apache License version 2.0
libraries:
  - org.xerial.snappy: snappy-java
notices:
  - snappy-java: |
      This product includes software developed by Google
       Snappy: http://code.google.com/p/snappy/ (New BSD License)


      This library containd statically linked libstdc++. This inclusion is allowed by
      "GCC RUntime Library Exception"
      http://gcc.gnu.org/onlinedocs/libstdc++/manual/license.html

      == Contributors ==
        * Tatu Saloranta
          * Providing benchmark suite
        * Alec Wysoker
          * Performance and memory usage improvement

---

# Web console modules start
name: "@babel/runtime"
license_category: binary
module: web-console
license_name: MIT License
copyright: Sebastian McKenzie
version: 7.5.5
license_file_path: licenses/bin/@babel-runtime.MIT

---

name: "@blueprintjs/core"
license_category: binary
module: web-console
license_name: Apache License version 2.0
copyright: Palantir Technologies
version: 3.45.0

---

name: "@blueprintjs/datetime"
license_category: binary
module: web-console
license_name: Apache License version 2.0
copyright: Palantir Technologies
version: 3.23.4

---

name: "@blueprintjs/icons"
license_category: binary
module: web-console
license_name: Apache License version 2.0
copyright: Palantir Technologies
version: 3.26.1

---

name: "@blueprintjs/popover2"
license_category: binary
module: web-console
license_name: Apache License version 2.0
copyright: Palantir Technologies
version: 0.10.1

---

name: "@hypnosphi/create-react-context"
license_category: binary
module: web-console
license_name: MIT License
copyright: James Kyle
version: 0.3.1
license_file_path: licenses/bin/@hypnosphi-create-react-context.MIT

---

name: "@popperjs/core"
license_category: binary
module: web-console
license_name: MIT License
copyright: Federico Zivolo
version: 2.9.2
license_file_path: licenses/bin/@popperjs-core.MIT

---

name: "@types/dom4"
license_category: binary
module: web-console
license_name: MIT License
copyright: Microsoft Corporation.
version: 2.0.1
license_file_path: licenses/bin/@types-dom4.MIT

---

name: "axios"
license_category: binary
module: web-console
license_name: MIT License
copyright: Matt Zabriskie
version: 0.21.1
license_file_path: licenses/bin/axios.MIT

---

name: "brace"
license_category: binary
module: web-console
license_name: MIT License
copyright: Thorsten Lorenz
version: 0.11.1
license_file_path: licenses/bin/brace.MIT

---

name: "classnames"
license_category: binary
module: web-console
license_name: MIT License
copyright: Jed Watson
version: 2.2.6
license_file_path: licenses/bin/classnames.MIT

---

name: "copy-to-clipboard"
license_category: binary
module: web-console
license_name: MIT License
copyright: sudodoki
version: 3.2.0
license_file_path: licenses/bin/copy-to-clipboard.MIT

---

name: "core-js"
license_category: binary
module: web-console
license_name: MIT License
copyright: Denis Pushkarev
version: 3.10.1
license_file_path: licenses/bin/core-js.MIT

---

name: "d3-array"
license_category: binary
module: web-console
license_name: BSD-3-Clause License
copyright: Mike Bostock
version: 2.3.3
license_file_path: licenses/bin/d3-array.BSD3

---

name: "d3-axis"
license_category: binary
module: web-console
license_name: BSD-3-Clause License
copyright: Mike Bostock
version: 1.0.12
license_file_path: licenses/bin/d3-axis.BSD3

---

name: "d3-color"
license_category: binary
module: web-console
license_name: BSD-3-Clause License
copyright: Mike Bostock
version: 1.4.0
license_file_path: licenses/bin/d3-color.BSD3

---

name: "d3-format"
license_category: binary
module: web-console
license_name: BSD-3-Clause License
copyright: Mike Bostock
version: 1.4.1
license_file_path: licenses/bin/d3-format.BSD3

---

name: "d3-interpolate"
license_category: binary
module: web-console
license_name: BSD-3-Clause License
copyright: Mike Bostock
version: 1.3.2
license_file_path: licenses/bin/d3-interpolate.BSD3

---

name: "d3-scale"
license_category: binary
module: web-console
license_name: BSD-3-Clause License
copyright: Mike Bostock
version: 3.2.0
license_file_path: licenses/bin/d3-scale.BSD3

---

name: "d3-selection"
license_category: binary
module: web-console
license_name: BSD-3-Clause License
copyright: Mike Bostock
version: 1.4.0
license_file_path: licenses/bin/d3-selection.BSD3

---

name: "d3-time-format"
license_category: binary
module: web-console
license_name: BSD-3-Clause License
copyright: Mike Bostock
version: 2.2.1
license_file_path: licenses/bin/d3-time-format.BSD3

---

name: "d3-time"
license_category: binary
module: web-console
license_name: BSD-3-Clause License
copyright: Mike Bostock
version: 1.1.0
license_file_path: licenses/bin/d3-time.BSD3

---

name: "deep-equal"
license_category: binary
module: web-console
license_name: MIT License
copyright: James Halliday
version: 1.1.1
license_file_path: licenses/bin/deep-equal.MIT

---

name: "define-properties"
license_category: binary
module: web-console
license_name: MIT License
copyright: Jordan Harband
version: 1.1.3
license_file_path: licenses/bin/define-properties.MIT

---

name: "diff-match-patch"
license_category: binary
module: web-console
license_name: Apache License version 2.0
copyright: Google
version: 1.0.4

---

name: "dom-helpers"
license_category: binary
module: web-console
license_name: MIT License
copyright: Jason Quense
version: 3.4.0
license_file_path: licenses/bin/dom-helpers.MIT

---

name: "dom4"
license_category: binary
module: web-console
license_name: MIT License
copyright: Andrea Giammarchi
version: 2.1.6
license_file_path: licenses/bin/dom4.MIT

---

name: "druid-query-toolkit"
license_category: binary
module: web-console
license_name: Apache License version 2.0
copyright: Imply Data
version: 0.11.10

---

name: "file-saver"
license_category: binary
module: web-console
license_name: MIT License
copyright: Eli Grey
version: 2.0.2
license_file_path: licenses/bin/file-saver.MIT

---

name: "follow-redirects"
license_category: binary
module: web-console
license_name: MIT License
copyright: Ruben Verborgh
version: 1.13.3
license_file_path: licenses/bin/follow-redirects.MIT

---

name: "fontsource-open-sans"
license_category: binary
module: web-console
license_name: MIT License
copyright: Lotus
version: 3.0.9
license_file_path: licenses/bin/fontsource-open-sans.MIT

---

name: "function-bind"
license_category: binary
module: web-console
license_name: MIT License
copyright: Raynos
version: 1.1.1
license_file_path: licenses/bin/function-bind.MIT

---

name: "gud"
license_category: binary
module: web-console
license_name: MIT License
copyright: Jamie Kyle
version: 1.0.0
license_file_path: licenses/bin/gud.MIT

---

name: "has-own-prop"
license_category: binary
module: web-console
license_name: MIT License
copyright: Sindre Sorhus
version: 2.0.0
license_file_path: licenses/bin/has-own-prop.MIT

---

name: "has"
license_category: binary
module: web-console
license_name: MIT License
copyright: Thiago de Arruda
version: 1.0.3
license_file_path: licenses/bin/has.MIT

---

name: "history"
license_category: binary
module: web-console
license_name: MIT License
copyright: Michael Jackson
version: 4.10.1
license_file_path: licenses/bin/history.MIT

---

name: "hjson"
license_category: binary
module: web-console
license_name: MIT License
copyright: Christian Zangl
version: 3.2.1
license_file_path: licenses/bin/hjson.MIT

---

name: "hoist-non-react-statics"
license_category: binary
module: web-console
license_name: BSD-3-Clause License
copyright: Michael Ridgway
version: 3.3.0
license_file_path: licenses/bin/hoist-non-react-statics.BSD3

---

name: "is-arguments"
license_category: binary
module: web-console
license_name: MIT License
copyright: Jordan Harband
version: 1.0.4
license_file_path: licenses/bin/is-arguments.MIT

---

name: "is-date-object"
license_category: binary
module: web-console
license_name: MIT License
copyright: Jordan Harband
version: 1.0.1
license_file_path: licenses/bin/is-date-object.MIT

---

name: "is-regex"
license_category: binary
module: web-console
license_name: MIT License
copyright: Jordan Harband
version: 1.0.4
license_file_path: licenses/bin/is-regex.MIT

---

name: "isarray"
license_category: binary
module: web-console
license_name: MIT License
copyright: Julian Gruber
version: 0.0.1
license_file_path: licenses/bin/isarray.MIT

---

name: "js-tokens"
license_category: binary
module: web-console
license_name: MIT License
copyright: Simon Lydell
version: 4.0.0
license_file_path: licenses/bin/js-tokens.MIT

---

name: "json-bigint-native"
license_category: binary
module: web-console
license_name: MIT License
copyright: Vadim Ogievetsky, Andrey Sidorov
version: 1.1.0
license_file_path: licenses/bin/json-bigint-native.MIT

---

name: "lodash.debounce"
license_category: binary
module: web-console
license_name: MIT License
copyright: John-David Dalton
version: 4.0.8
license_file_path: licenses/bin/lodash.debounce.MIT

---

name: "lodash.escape"
license_category: binary
module: web-console
license_name: MIT License
copyright: John-David Dalton
version: 4.0.1
license_file_path: licenses/bin/lodash.escape.MIT

---

name: "lodash.get"
license_category: binary
module: web-console
license_name: MIT License
copyright: John-David Dalton
version: 4.4.2
license_file_path: licenses/bin/lodash.get.MIT

---

name: "lodash.isequal"
license_category: binary
module: web-console
license_name: MIT License
copyright: John-David Dalton
version: 4.5.0
license_file_path: licenses/bin/lodash.isequal.MIT

---

name: "loose-envify"
license_category: binary
module: web-console
license_name: MIT License
copyright: Andres Suarez
version: 1.4.0
license_file_path: licenses/bin/loose-envify.MIT

---

name: "memoize-one"
license_category: binary
module: web-console
license_name: MIT License
copyright: Alex Reardon
version: 5.1.1
license_file_path: licenses/bin/memoize-one.MIT

---

name: "mini-create-react-context"
license_category: binary
module: web-console
license_name: MIT License
copyright: StringEpsilon
version: 0.3.2
license_file_path: licenses/bin/mini-create-react-context.MIT

---

name: "normalize.css"
license_category: binary
module: web-console
license_name: MIT License
copyright: Nicolas Gallagher and Jonathan Neal
version: 8.0.1
license_file_path: licenses/bin/normalize.css.MIT

---

name: "numeral"
license_category: binary
module: web-console
license_name: MIT License
copyright: Adam Draper
version: 2.0.6
license_file_path: licenses/bin/numeral.MIT

---

name: "object-assign"
license_category: binary
module: web-console
license_name: MIT License
copyright: Sindre Sorhus
version: 4.1.1
license_file_path: licenses/bin/object-assign.MIT

---

name: "object-is"
license_category: binary
module: web-console
license_name: MIT License
copyright: Jordan Harband
version: 1.0.1
license_file_path: licenses/bin/object-is.MIT

---

name: "object-keys"
license_category: binary
module: web-console
license_name: MIT License
copyright: Jordan Harband
version: 1.1.1
license_file_path: licenses/bin/object-keys.MIT

---

name: "opensans"
license_category: binary
module: web-console
license_name: Apache License version 2.0
copyright: Google
version: 1.101.0

---

name: "path-to-regexp"
license_category: binary
module: web-console
license_name: MIT License
copyright: Blake Embrey (hello@blakeembrey.com)
version: 1.7.0
license_file_path: licenses/bin/path-to-regexp.MIT

---

name: "popper.js"
license_category: binary
module: web-console
license_name: MIT License
copyright: Federico Zivolo
version: 1.16.1
license_file_path: licenses/bin/popper.js.MIT

---

name: "prop-types"
license_category: binary
module: web-console
license_name: MIT License
copyright: Facebook, Inc.
version: 15.7.2
license_file_path: licenses/bin/prop-types.MIT

---

name: "react-ace"
license_category: binary
module: web-console
license_name: MIT License
copyright: James Hrisho
version: 7.0.5
license_file_path: licenses/bin/react-ace.MIT

---

name: "react-day-picker"
license_category: binary
module: web-console
license_name: MIT License
copyright: Giampaolo Bellavite
version: 7.4.9
license_file_path: licenses/bin/react-day-picker.MIT

---

name: "react-dom"
license_category: binary
module: web-console
license_name: MIT License
copyright: Facebook, Inc. and its affiliates.
version: 16.14.0
license_file_path: licenses/bin/react-dom.MIT

---

name: "react-fast-compare"
license_category: binary
module: web-console
license_name: MIT License
copyright: Chris Bolin
version: 3.2.0
license_file_path: licenses/bin/react-fast-compare.MIT

---

name: "react-is"
license_category: binary
module: web-console
license_name: MIT License
copyright: Facebook, Inc. and its affiliates.
version: 16.8.6
license_file_path: licenses/bin/react-is.MIT

---

name: "react-lifecycles-compat"
license_category: binary
module: web-console
license_name: MIT License
copyright: Facebook, Inc.
version: 3.0.4
license_file_path: licenses/bin/react-lifecycles-compat.MIT

---

name: "react-popper"
license_category: binary
module: web-console
license_name: MIT License
copyright: Travis Arnold
version: 1.3.11
license_file_path: licenses/bin/react-popper.MIT

---

name: "react-router-dom"
license_category: binary
module: web-console
license_name: MIT License
copyright: React Training
version: 5.1.2
license_file_path: licenses/bin/react-router-dom.MIT

---

name: "react-router"
license_category: binary
module: web-console
license_name: MIT License
copyright: React Training
version: 5.1.2
license_file_path: licenses/bin/react-router.MIT

---

name: "react-splitter-layout"
license_category: binary
module: web-console
license_name: MIT License
copyright: Yang Liu
version: 4.0.0
license_file_path: licenses/bin/react-splitter-layout.MIT

---

name: "react-table"
license_category: binary
module: web-console
license_name: MIT License
copyright: Tanner Linsley
version: 6.10.3
license_file_path: licenses/bin/react-table.MIT

---

name: "react-transition-group"
license_category: binary
module: web-console
license_name: BSD-3-Clause License
copyright: React Community
version: 2.9.0
license_file_path: licenses/bin/react-transition-group.BSD3

---

name: "react"
license_category: binary
module: web-console
license_name: MIT License
copyright: Facebook, Inc. and its affiliates.
version: 16.14.0
license_file_path: licenses/bin/react.MIT

---

name: "regenerator-runtime"
license_category: binary
module: web-console
license_name: MIT License
copyright: Ben Newman
version: 0.13.7
license_file_path: licenses/bin/regenerator-runtime.MIT

---

name: "regexp.prototype.flags"
license_category: binary
module: web-console
license_name: MIT License
copyright: Jordan Harband
version: 1.2.0
license_file_path: licenses/bin/regexp.prototype.flags.MIT

---

name: "resize-observer-polyfill"
license_category: binary
module: web-console
license_name: MIT License
copyright: Denis Rul
version: 1.5.1
license_file_path: licenses/bin/resize-observer-polyfill.MIT

---

name: "resolve-pathname"
license_category: binary
module: web-console
license_name: MIT License
copyright: Michael Jackson
version: 3.0.0
license_file_path: licenses/bin/resolve-pathname.MIT

---

name: "scheduler"
license_category: binary
module: web-console
license_name: MIT License
copyright: Facebook, Inc. and its affiliates.
version: 0.19.1
license_file_path: licenses/bin/scheduler.MIT

---

name: "tiny-invariant"
license_category: binary
module: web-console
license_name: MIT License
copyright: Alex Reardon
version: 1.0.6
license_file_path: licenses/bin/tiny-invariant.MIT

---

name: "tiny-warning"
license_category: binary
module: web-console
license_name: MIT License
copyright: Alex Reardon
version: 1.0.3
license_file_path: licenses/bin/tiny-warning.MIT

---

name: "toggle-selection"
license_category: binary
module: web-console
license_name: MIT License
copyright: sudodoki
version: 1.0.6
license_file_path: licenses/bin/toggle-selection.MIT

---

name: "tslib"
license_category: binary
module: web-console
license_name: Zero-Clause BSD
copyright: Microsoft Corp.
version: 1.13.0
license_file_path: licenses/bin/tslib.0BSD

---

name: "typed-styles"
license_category: binary
module: web-console
license_name: MIT License
copyright: lttb
version: 0.0.7
license_file_path: licenses/bin/typed-styles.MIT

---

name: "value-equal"
license_category: binary
module: web-console
license_name: MIT License
copyright: Michael Jackson
version: 1.0.1
license_file_path: licenses/bin/value-equal.MIT

---

name: "warning"
license_category: binary
module: web-console
license_name: MIT License
copyright: Berkeley Martinez
version: 4.0.3
license_file_path: licenses/bin/warning.MIT
# Web console modules end

---

name: Apache Spark
license_category: binary
module: spark
license_name: Apache License version 2.0
version: 2.4.7
libraries:
  - org.apache.spark: spark-core_2.12
  - org.apache.spark: spark-sql_2.12
notice: |
  Apache Spark
  Copyright 2014 and onwards The Apache Software Foundation.

  This product includes software developed at
  The Apache Software Foundation (http://www.apache.org/).


  Export Control Notice
  ---------------------

  This distribution includes cryptographic software. The country in which you currently reside may have
  restrictions on the import, possession, use, and/or re-export to another country, of encryption software.
  BEFORE using any encryption software, please check your country's laws, regulations and policies concerning
  the import, possession, or use, and re-export of encryption software, to see if this is permitted. See
  <http://www.wassenaar.org/> for more information.

  The U.S. Government Department of Commerce, Bureau of Industry and Security (BIS), has classified this
  software as Export Commodity Control Number (ECCN) 5D002.C.1, which includes information security software
  using or performing cryptographic functions with asymmetric algorithms. The form and manner of this Apache
  Software Foundation distribution makes it eligible for export under the License Exception ENC Technology
  Software Unrestricted (TSU) exception (see the BIS Export Administration Regulations, Section 740.13) for
  both object code and source code.

  The following provides more details on the included cryptographic software:

  This software uses Apache Commons Crypto (https://commons.apache.org/proper/commons-crypto/) to
  support authentication, and encryption and decryption of data sent across the network between
  services.

---

name: Scala Library
license_category: binary
module: spark
license_name: Apache License version 2.0
version: 2.12.12
libraries:
  - org.scala-lang: scala-library
  - org.scala-lang: scala-reflect
  - org.scala-lang: scalap

---

# Not sure why check-license finds these as well (they're not in mvn dependency:tree for the spark module)
name: Paranamer
license_category: binary
module: spark
license_name: BSD-3-Clause License
version: 2.8
copyright: Paul Hammant & ThoughtWorks Inc
license_file_path: licenses/bin/paranamer.BSD3
libraries:
  - com.thoughtworks.paranamer: paranamer

---

name: Jackson Paranamer
license_category: binary
module: spark
license_name: Apache License version 2.0
version: 2.10.5
libraries:
  - com.fasterxml.jackson.module: jackson-module-paranamer
