diff --git a/asterix-installer/src/main/appended-resources/META-INF/LICENSE b/asterix-installer/src/main/appended-resources/META-INF/LICENSE
deleted file mode 100644
index 9c25c1c..0000000
--- a/asterix-installer/src/main/appended-resources/META-INF/LICENSE
+++ /dev/null
@@ -1,17 +0,0 @@
------------------------------------------------------------------------
-
-ASTERIXDB COMPONENTS:
-
-AsterixDB includes a number of subcomponents with separate copyright
-notices and license terms. Your use of the source code for these
-subcomponents is subject to the terms and condition of the following
-licenses.
-
-
------------------------------------------------------------------------
- Apache Software License 2.0
------------------------------------------------------------------------
-
- - Apache Hadoop (hadoop-0.20.2/bin/hadoop, hadoop-0.20.2/bin/hadoop-config.sh,
-                  hadoop-0.20.2/bin/hadoop-config.she, hadoop-0.20.2/conf/hadoop-env.sh)
-
diff --git a/asterix-installer/src/main/licenses/LICENSE b/asterix-installer/src/main/licenses/LICENSE
index 943fd82..5af0060 100644
--- a/asterix-installer/src/main/licenses/LICENSE
+++ b/asterix-installer/src/main/licenses/LICENSE
@@ -209,252 +209,6 @@
    subcomponents is subject to the terms and condition of the following
    licenses.
 
-   Components under Apache License 2.0 are as follows:
-
-     - Apache Derby Database Engine and Embedded JDBC Driver (http://db.apache.org/derby/derby/)
-       repo/derby-10.10.1.1.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - JDO API (http://db.apache.org/jdo)
-       repo/jdo-api-3.0.1.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Rome HTTP Fetcher
-       repo/rome-fetcher-1.0.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - An open source Java toolkit for Amazon S3 (http://jets3t.s3.amazonaws.com/index.html)
-       repo/jets3t-0.6.1 in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - The Netty Project (http://www.jboss.org/netty/)
-       repo/netty-3.2.2.Final.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - The Netty Project (http://netty.io/)
-       repo/netty-3.6.2.Final.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - HttpClient (http://jakarta.apache.org/commons/httpclient/)
-       repo/commons-httpclient-3.0.1.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - HttpClient (http://hc.apache.org/httpcomponents-client)
-       repo/httpclient-4.3.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - HttpCore (http://hc.apache.org/httpcomponents-core-ga)
-       repo/httpcore-4.3.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - twitter4j-core (http://twitter4j.org/)
-       repo/twitter4j-core-4.0.3.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - twitter4j-stream (http://twitter4j.org/)
-       repo/twitter4j-stream-4.0.3.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Jetty :: Continuation (http://www.eclipse.org/jetty/jetty-continuation)
-       repo/jetty-continuation-8.0.0.RC0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Jetty :: Http Utility (http://www.eclipse.org/jetty/jetty-http)
-       repo/jetty-http-8.0.0.RC0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Jetty :: IO Utility (http://www.eclipse.org/jetty/jetty-io)
-       repo/jetty-io-8.0.0.RC0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Jetty :: Security (http://www.eclipse.org/jetty/jetty-security)
-       repo/jetty-security-8.0.0.RC0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Jetty :: Server Core (http://www.eclipse.org/jetty)
-       repo/jetty-server-8.0.0.RC0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Jetty :: Servlet Handling (http://www.eclipse.org/jetty/jetty-servlet)
-       repo/jetty-servlet-8.0.0.RC0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Jetty :: Utilities (http://www.eclipse.org/jetty/jetty-util)
-       repo/jetty-util-8.0.0.RC0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Jetty :: Webapp Application Support (http://www.eclipse.org/jetty/jetty-webapp)
-       repo/jetty-webapp-8.0.0.RC0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Jetty :: XML utilities (http://www.eclipse.org/jetty/jetty-xml)
-       repo/jetty-xml-8.0.0.RC0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Servlet API (http://www.eclipse.org/jetty/jetty-parent/servlet-api)
-       repo/servlet-api-3.0.20100224.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - BoneCP :: Core Library (http://jolbox.com/bonecp)
-       repo/bonecp-0.8.0.RELEASE.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - FindBugs-jsr305 (http://findbugs.sourceforge.net/)
-       repo/jsr305-1.3.9.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Guava: Google Core Libraries for Java (http://code.google.com/p/guava-libraries/guava)
-       repo/guava-18.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - JSON.simple (http://code.google.com/p/json-simple/)
-       repo/json-simple-1.1.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Microsoft Windows Azure Client API (https://github.com/WindowsAzure/azure-sdk-for-java)
-       repo/microsoft-windowsazure-api-0.4.4.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - javax.inject (http://code.google.com/p/atinject/)
-       repo/javax.inject-1.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Apache Thrift (http://thrift.apache.org)
-       repo/libfb303-0.9.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Apache Thrift (http://thrift.apache.org)
-       repo/libthrift-0.9.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - DataNucleus JDO API plugin (http://www.datanucleus.org)
-       repo/datanucleus-api-jdo-3.2.6.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - DataNucleus Core (http://www.datanucleus.org)
-       repo/datanucleus-core-3.2.10.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - DataNucleus RDBMS (http://www.datanucleus.org)
-       repo/datanucleus-rdbms-3.2.9.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - JAXB2 CommonsValue Constructor Plugin (http://java.net/projects/jaxb2-commons/pages/value-constructor)
-       repo/jaxb2-value-constructor-3.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - StAX API (http://stax.codehaus.org/)
-       repo/stax-api-1.0.1.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - StAX
-       repo/stax-1.1.1-dev.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Wicket Core (http://wicket.apache.org/wicket-core/wicket-core)
-       repo/wicket-core-1.5.2.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Wicket Request (http://maven.apache.org)
-       repo/wicket-request-1.5.2.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Wicket Util (http://maven.apache.org)
-       repo/wicket-util-1.5.2.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Apache Hadoop Annotations
-       repo/hadoop-annotations-2.2.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Apache Hadoop Auth
-       repo/hadoop-auth-2.2.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Apache Hadoop Client
-       repo/hadoop-client-2.2.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Apache Hadoop Common
-       repo/hadoop-common-2.2.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Apache Hadoop Common (tests)
-       repo/hadoop-common-2.2.0-tests.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Apache Hadoop HDFS
-       repo/hadoop-hdfs-2.2.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Apache Hadoop HDFS
-       repo/hadoop-hdfs-2.2.0-tests.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - hadoop-mapreduce-client-app
-       repo/hadoop-mapreduce-client-app-2.2.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - hadoop-mapreduce-client-common
-       repo/hadoop-mapreduce-client-common-2.2.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - hadoop-mapreduce-client-core
-       repo/hadoop-mapreduce-client-core-2.2.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - hadoop-mapreduce-client-hs
-       repo/hadoop-mapreduce-client-hs-2.2.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - hadoop-mapreduce-client-jobclient
-       repo/hadoop-mapreduce-client-jobclient-2.2.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - hadoop-mapreduce-client-jobclient
-       repo/hadoop-mapreduce-client-jobclient-2.2.0-tests.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - hadoop-mapreduce-client-shuffle
-       repo/hadoop-mapreduce-client-shuffle-2.2.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Apache Hadoop Mini-Cluster
-       repo/hadoop-minicluster-2.2.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - zookeeper
-       repo/zookeeper-3.4.5.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-       and
-       lib/zookeeper-3.4.5.jar
-       and
-       .installer/zookeeper/lib/zookeeper-3.4.5.jar
-     - hadoop-yarn-api
-       repo/hadoop-yarn-api-2.2.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - hadoop-yarn-client
-       repo/hadoop-yarn-client-2.2.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - hadoop-yarn-common
-       repo/hadoop-yarn-common-2.2.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - hadoop-yarn-server-common
-       repo/hadoop-yarn-server-common-2.2.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - hadoop-yarn-server-nodemanager
-       repo/hadoop-yarn-server-nodemanager-2.2.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - hadoop-yarn-server-resourcemanager
-       repo/hadoop-yarn-server-resourcemanager-2.2.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - hadoop-yarn-server-tests
-       repo/hadoop-yarn-server-tests-2.2.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - hadoop-yarn-server-web-proxy
-       repo/hadoop-yarn-server-web-proxy-2.2.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Plexus Common Utilities (http://plexus.codehaus.org/plexus-utils)
-       repo/plexus-utils-3.0.7.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Jettison
-       repo/jettison-1.1.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Jackson (http://jackson.codehaus.org)
-       repo/jackson-core-asl-1.8.8.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - JAX-RS provider for JSON content type (http://jackson.codehaus.org)
-       repo/jackson-jaxrs-1.8.3.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Data Mapper for Jackson (http://jackson.codehaus.org)
-       repo/jackson-mapper-asl-1.9.12.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Xml Compatibility extensions for Jackson (http://jackson.codehaus.org)
-       repo/jackson-mapper-xc-1.8.3.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Jackson-core (http://wiki.fasterxml.com/JacksonHome)
-       repo/jackson-core-2.2.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Google GuiceCore Library (http://code.google.com/p/google-guice/guice/)
-       repo/guice-3.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Google GuiceExtensionsServlet (http://code.google.com/p/google-guice/extensions-parent/guice-servlet/)
-       repo/guice-servlet-3.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Jetty Server (http://jetty.mortbay.org/)
-       repo/jetty-6.1.26.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Jetty Utilities (http://jetty.mortbay.org/)
-       repo/jetty-util-6.1.26.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Commons Configuration (http://commons.apache.org/${pom.artifactId.substring(8)}/)
-       repo/commons-configuration-1.6.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Digester (http://jakarta.apache.org/commons/digester/)
-       repo/commons-digester-1.8.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - EL (http://jakarta.apache.org/commons/el/)
-       repo/commons-el-1.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Apache Commons BeanUtils
-       repo/commons-beanutils-1.7.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Commons BeanUtils Core (http://commons.apache.org/beanutils/)
-       repo/commons-beanutils-core-1.8.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Commons CLI (http://commons.apache.org/cli/)
-       repo/commons-cli-1.2.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-       and
-       .installer/hadoop-0.20.2/lib/commons-cli-1.2.jar
-     - Apache Commons Codec (http://commons.apache.org/codec/commons-codec)
-       repo/commons-codec-1.4.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Apache Commons Collections (http://commons.apache.org/collections/commons-collections)
-       commons-daemon:commons-daemon:jar:1.0.13
-     - Commons Daemon (http://commons.apache.org/daemon/)
-       repo/commons-daemon-1.0.13.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Commons IO (http://commons.apache.org/io/)
-       repo/commons-io-2.4.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-       and
-       lib/commons-io-2.4.jar
-     - Commons Lang (http://commons.apache.org/lang/)
-       repo/commons-lang-2.5.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Apache Commons Logging (http://commons.apache.org/logging)
-       repo/commons-logging-1.0.5.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-       and
-       .installer/hadoop-0.20.2/lib/commons-logging-1.1.1.jar
-     - Apache Commons Logging Api (http://commons.apache.org/logging)
-       repo/commons-logging-api-1.0.4.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Commons Net (http://commons.apache.org/net/)
-       repo/commons-net-3.1.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Log4j (http://logging.apache.org:80/log4j/1.2/log4j)
-       repo/log4j-1.2.17.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-       and
-       lib/log4j-1.2.17.jar
-       and
-       .installer/zookeeper/lib/log4j-1.2.17.jar
-     - Apache Ant Core (http://ant.apache.org/)
-       repo/ant-1.9.1.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Apache Ant Launcher (http://ant.apache.org/)
-       repo/ant-launcher-1.9.1.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Apache Avro (http://avro.apache.org)
-       repo/avro-1.7.5.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Commons Compress (http://commons.apache.org/compress/)
-       repo/commons-compress-1.4.1.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Commons Lang (http://commons.apache.org/lang/)
-       repo/commons-lang3-3.1.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Commons Math (http://commons.apache.org/math/)
-       repo/commons-math-2.1.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Hive Ant Utilities (http://hive.apache.org/hive-ant)
-       repo/hive-ant-0.13.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Hive Common (http://hive.apache.org/hive-common)
-       repo/hive-common-0.13.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Hive Query Language (http://hive.apache.org/hive-exec)
-       repo/hive-exec-0.13.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Hive Metastore (http://hive.apache.org/hive-metastore)
-       repo/hive-metastore-0.13.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Hive Serde (http://hive.apache.org/hive-serde)
-       repo/hive-serde-0.13.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Hive Shims (http://hive.apache.org/hive-shims)
-       repo/hive-shims-0.13.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Hive Shims 0.20 (http://hive.apache.org/hive-shims-0.20)
-       repo/hive-shims-0.20-0.13.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Hive Shims 0.20S (http://hive.apache.org/hive-shims-0.20S)
-       repo/hive-shims-0.20S-0.13.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Hive Shims 0.23 (http://hive.apache.org/hive-shims-0.23)
-       repo/hive-shims-0.23-0.13.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Hive Shims Common (http://hive.apache.org/hive-shims-common)
-       repo/hive-shims-common-0.13.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Hive Shims Secure Common (http://hive.apache.org/hive-shims-common-secure)
-       repo/hive-shims-secure-common-0.13.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Apache Velocity (http://velocity.apache.org/engine/releases/velocity-1.5/)
-       repo/velocity-1.5.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Jakarta ORO
-       repo/oro-2.0.8.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - ROME
-       repo/rome-1.0.1-modified-01.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - jasper-compiler (http://tomcat.apache.org/jasper-compiler)
-       repo/jasper-compiler-5.5.23.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - jasper-runtime (http://tomcat.apache.org/jasper-runtime)
-       repo/jasper-runtime-5.5.23.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Xerces2 Java Parser (http://xerces.apache.org/xerces2-j)
-       repo/xercesImpl-2.9.1.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - XML APIs (http://xml.apache.org/commons/components/external/xml-apis)
-       repo/xml-apis-1.3.04.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Groovy (http://groovy.codehaus.org/)
-       repo/groovy-all-2.1.6.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Snappy for Java (http://github.com/xerial/snappy-java/)
-       repo/snappy-java-1.0.4.1.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-   ===
 
    Component(s):
    - Java Servlet API (http://servlet-spec.java.n)
diff --git a/asterix-installer/src/main/licenses/NOTICE b/asterix-installer/src/main/licenses/NOTICE
index 7c12f0c..a047a44 100644
--- a/asterix-installer/src/main/licenses/NOTICE
+++ b/asterix-installer/src/main/licenses/NOTICE
@@ -1,4 +1,4 @@
-Apache AsterixDB
+Apache AsterixDB Managix Installer
 Copyright 2016 The Apache Software Foundation
 
 This product includes software developed at
@@ -6,339 +6,135 @@
 
 AsterixDB utilizes many libraries, which come with the following applicable NOTICE(s):
 
- - repo/algebricks-common-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-algebricks-common
-Copyright 2016 The Apache Software Foundation
-
- - repo/algebricks-compiler-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-algebricks-compiler
-Copyright 2016 The Apache Software Foundation
-
- - repo/algebricks-core-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-algebricks-core
-Copyright 2016 The Apache Software Foundation
-
- - repo/algebricks-data-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-algebricks-data
-Copyright 2016 The Apache Software Foundation
-
- - repo/algebricks-rewriter-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-algebricks-rewriter
-Copyright 2016 The Apache Software Foundation
-
- - repo/algebricks-runtime-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-algebricks-runtime
-Copyright 2016 The Apache Software Foundation
-
- - repo/asterix-algebra-0.8.8-SNAPSHOT.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-asterix-algebra
-Copyright 2016 The Apache Software Foundation
-
- - repo/asterix-app-0.8.8-SNAPSHOT.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-asterix-app
-Copyright 2016 The Apache Software Foundation
-
- - repo/asterix-aql-0.8.8-SNAPSHOT.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-asterix-aql
-Copyright 2016 The Apache Software Foundation
-
- - repo/asterix-common-0.8.8-SNAPSHOT.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-asterix-common
-Copyright 2016 The Apache Software Foundation
-
- - repo/asterix-events-0.8.8-SNAPSHOT.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-asterix-events
-Copyright 2016 The Apache Software Foundation
-
- - repo/asterix-external-data-0.8.8-SNAPSHOT.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-asterix-external-data
-Copyright 2016 The Apache Software Foundation
-
- - repo/asterix-fuzzyjoin-0.8.8-SNAPSHOT.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-asterix-fuzzyjoin
-Copyright 2016 The Apache Software Foundation
-
- - repo/asterix-metadata-0.8.8-SNAPSHOT.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-asterix-metadata
-Copyright 2016 The Apache Software Foundation
-
- - repo/asterix-om-0.8.8-SNAPSHOT.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-asterix-om
-Copyright 2016 The Apache Software Foundation
-
- - repo/asterix-runtime-0.8.8-SNAPSHOT.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-asterix-runtime
-Copyright 2016 The Apache Software Foundation
-
- - repo/asterix-server-0.8.8-SNAPSHOT.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-asterix-server
-Copyright 2016 The Apache Software Foundation
-
- - repo/asterix-tools-0.8.8-SNAPSHOT.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-asterix-tools
-Copyright 2016 The Apache Software Foundation
-
- - repo/asterix-transactions-0.8.8-SNAPSHOT.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-asterix-transactions
-Copyright 2016 The Apache Software Foundation
-
  - repo/avro-1.7.4.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
 
-Apache Avro
-Copyright 2009-2013 The Apache Software Foundation
+    Apache Avro
+    Copyright 2009-2013 The Apache Software Foundation
 
  - repo/commons-logging-1.1.1.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
 
-Commons Logging
-Copyright 2001-2007 The Apache Software Foundation
+    Commons Logging
+    Copyright 2001-2007 The Apache Software Foundation
 
  - repo/derby-10.10.1.1.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
 
-Apache Derby
-Copyright 2004-2013 The Apache Software Foundation
+    Apache Derby
+    Copyright 2004-2013 The Apache Software Foundation
 
-=========================================================================
+    =========================================================================
 
-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.
+    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 1997,2004 International Business Machines Corporation.  All rights reserved.
 
-(C) Copyright IBM Corp. 2003. 
+    (C) Copyright IBM Corp. 2003. 
 
 
-=========================================================================
+    =========================================================================
 
 
-The JDBC apis for small devices and JDBC3 (under java/stubs/jsr169 and
-java/stubs/jdbc3) were produced by trimming sources supplied by the
-Apache Harmony project. In addition, the Harmony SerialBlob and
-SerialClob implementations are used. The following notice covers the Harmony sources:
+    The JDBC apis for small devices and JDBC3 (under java/stubs/jsr169 and
+    java/stubs/jdbc3) were produced by trimming sources supplied by the
+    Apache Harmony project. In addition, the Harmony SerialBlob and
+    SerialClob implementations are used. The following notice covers the Harmony sources:
 
-Portions of Harmony were originally developed by
-Intel Corporation and are licensed to the Apache Software
-Foundation under the "Software Grant and Corporate Contribution
-License Agreement", informally known as the "Intel Harmony CLA".
+    Portions of Harmony were originally developed by
+    Intel Corporation and are licensed to the Apache Software
+    Foundation under the "Software Grant and Corporate Contribution
+    License Agreement", informally known as the "Intel Harmony CLA".
 
 
  - repo/guice-3.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
 
-Google Guice - Core Library
-Copyright 2006-2011 Google, Inc.
+    Google Guice - Core Library
+    Copyright 2006-2011 Google, Inc.
 
  - repo/guice-servlet-3.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
 
-Google Guice - Extensions - Servlet
-Copyright 2006-2011 Google, Inc.
+    Google Guice - Extensions - Servlet
+    Copyright 2006-2011 Google, Inc.
 
  - repo/hive-ant-0.13.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
 
-Hive Ant Utilities
-Copyright 2014 The Apache Software Foundation
+    Hive Ant Utilities
+    Copyright 2014 The Apache Software Foundation
 
  - repo/hive-common-0.13.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
 
-Hive Common
-Copyright 2014 The Apache Software Foundation
+    Hive Common
+    Copyright 2014 The Apache Software Foundation
 
  - repo/hive-exec-0.13.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
 
-Hive Query Language
-Copyright 2014 The Apache Software Foundation
+    Hive Query Language
+    Copyright 2014 The Apache Software Foundation
 
  - repo/hive-metastore-0.13.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
 
-Hive Metastore
-Copyright 2014 The Apache Software Foundation
+    Hive Metastore
+    Copyright 2014 The Apache Software Foundation
 
  - repo/hive-serde-0.13.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
 
-Hive Serde
-Copyright 2014 The Apache Software Foundation
+    Hive Serde
+    Copyright 2014 The Apache Software Foundation
 
  - repo/hive-shims-0.13.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
 
-Hive Shims
-Copyright 2014 The Apache Software Foundation
+    Hive Shims
+    Copyright 2014 The Apache Software Foundation
 
  - repo/hive-shims-0.20-0.13.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
 
-Hive Shims 0.20
-Copyright 2014 The Apache Software Foundation
+    Hive Shims 0.20
+    Copyright 2014 The Apache Software Foundation
 
  - repo/hive-shims-0.20S-0.13.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
 
-Hive Shims 0.20S
-Copyright 2014 The Apache Software Foundation
+    Hive Shims 0.20S
+    Copyright 2014 The Apache Software Foundation
 
  - repo/hive-shims-0.23-0.13.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
 
-Hive Shims 0.23
-Copyright 2014 The Apache Software Foundation
+    Hive Shims 0.23
+    Copyright 2014 The Apache Software Foundation
 
  - repo/hive-shims-common-0.13.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
 
-Hive Shims Common
-Copyright 2014 The Apache Software Foundation
+    Hive Shims Common
+    Copyright 2014 The Apache Software Foundation
 
  - repo/hive-shims-common-secure-0.13.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
 
-Hive Shims Secure Common
-Copyright 2014 The Apache Software Foundation
-
- - repo/hyracks-api-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-hyracks-api
-Copyright 2016 The Apache Software Foundation
-
- - repo/hyracks-client-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-hyracks-client
-Copyright 2016 The Apache Software Foundation
-
- - repo/hyracks-comm-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-hyracks-comm
-Copyright 2016 The Apache Software Foundation
-
- - repo/hyracks-control-cc-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-hyracks-control-cc
-Copyright 2016 The Apache Software Foundation
-
- - repo/hyracks-control-common-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-hyracks-control-common
-Copyright 2016 The Apache Software Foundation
-
- - repo/hyracks-control-nc-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-hyracks-control-nc
-Copyright 2016 The Apache Software Foundation
-
- - repo/hyracks-dataflow-common-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-hyracks-dataflow-common
-Copyright 2016 The Apache Software Foundation
-
- - repo/hyracks-dataflow-std-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-hyracks-dataflow-std
-Copyright 2016 The Apache Software Foundation
-
- - repo/hyracks-data-std-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-hyracks-data-std
-Copyright 2016 The Apache Software Foundation
-
- - repo/hyracks-hdfs-2.x-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-hyracks-hdfs-2.x
-Copyright 2016 The Apache Software Foundation
-
- - repo/hyracks-hdfs-core-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-hyracks-hdfs-core
-Copyright 2016 The Apache Software Foundation
-
- - repo/hyracks-ipc-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-hyracks-ipc
-Copyright 2016 The Apache Software Foundation
-
- - repo/hyracks-net-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-hyracks-net
-Copyright 2016 The Apache Software Foundation
-
- - repo/hyracks-storage-am-bloomfilter-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-hyracks-storage-am-bloomfilter
-Copyright 2016 The Apache Software Foundation
-
- - repo/hyracks-storage-am-btree-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-hyracks-storage-am-btree
-Copyright 2016 The Apache Software Foundation
-
- - repo/hyracks-storage-am-common-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-hyracks-storage-am-common
-Copyright 2016 The Apache Software Foundation
-
- - repo/hyracks-storage-am-lsm-btree-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-hyracks-storage-am-lsm-btree
-Copyright 2016 The Apache Software Foundation
-
- - repo/hyracks-storage-am-lsm-common-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-hyracks-storage-am-lsm-common
-Copyright 2016 The Apache Software Foundation
-
- - repo/hyracks-storage-am-lsm-invertedindex-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-hyracks-storage-am-lsm-invertedindex
-Copyright 2016 The Apache Software Foundation
-
- - repo/hyracks-storage-am-lsm-rtree-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-hyracks-storage-am-lsm-rtree
-Copyright 2016 The Apache Software Foundation
-
- - repo/hyracks-storage-am-rtree-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-hyracks-storage-am-rtree
-Copyright 2016 The Apache Software Foundation
-
- - repo/hyracks-storage-common-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-hyracks-storage-common
-Copyright 2016 The Apache Software Foundation
+    Hive Shims Secure Common
+    Copyright 2014 The Apache Software Foundation
 
  - repo/plexus-utils-3.0.7.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
 
-This product includes software developed by the Indiana University 
-  Extreme! Lab (http://www.extreme.indiana.edu/)
+    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
+    ThoughtWorks (http://www.thoughtworks.com).
 
-This product includes software developed by
-javolution (http://javolution.org/).
+    This product includes software developed by
+    javolution (http://javolution.org/).
 
-This product includes software developed by
-Rome (https://rome.dev.java.net/).
+    This product includes software developed by
+    Rome (https://rome.dev.java.net/).
 
 - repo/velocity-1.5.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-Apache Velocity
 
-Copyright (C) 2000-2007 The Apache Software Foundation
+    Apache Velocity
+
+    Copyright (C) 2000-2007 The Apache Software Foundation
 
  - repo/wicket-core-1.5.2.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
    Apache Wicket
@@ -371,13 +167,13 @@
    [1]: http://the-stickman.com/web-development/javascript/upload-multiple-files-with-a-single-file-element/
  - repo/wicket-request-1.5.2.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
 
-Wicket Request
-Copyright 2006-2011 Apache Software Foundation
+    Wicket Request
+    Copyright 2006-2011 Apache Software Foundation
 
  - repo/wicket-util-1.5.2.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
 
-Wicket Util
-Copyright 2006-2011 Apache Software Foundation
+    Wicket Util
+    Copyright 2006-2011 Apache Software Foundation
 
  - repo/xercesImpl-2.9.1.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
 
@@ -401,3 +197,526 @@
      - software copyright (c) 1999, IBM Corporation., http://www.ibm.com.
      - software copyright (c) 1999, Sun Microsystems., http://www.sun.com.
      - software copyright (c) 2000 World Wide Web Consortium, http://www.w3.org
+
+ - repo/httpclient-4.2.2.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+    Apache HttpComponents HttpClient
+    Copyright 1999-2012 The Apache Software Foundation
+
+    This product includes software developed by
+    The Apache Software Foundation (http://www.apache.org/).
+
+ - repo/httpcore-4.2.2.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+    Apache HttpComponents HttpCore
+    Copyright 2005-2012 The Apache Software Foundation
+
+    This product includes software developed by
+    The Apache Software Foundation (http://www.apache.org/).
+
+    This project contains annotations derived from JCIP-ANNOTATIONS
+    Copyright (c) 2005 Brian Goetz and Tim Peierls. See http://www.jcip.net
+
+- repo/ant-1.9.1.jar in asterix/asterix-server-0.8.8-incubating-binary-assembly.zip
+
+   Apache Ant
+   Copyright 1999-2013 The Apache Software Foundation
+
+   The <sync> task is based on code Copyright (c) 2002, Landmark
+   Graphics Corp that has been kindly donated to the Apache Software
+   Foundation.
+ - repo/ant-launcher-1.9.1.jar in asterix/asterix-server-0.8.8-incubating-binary-assembly.zip
+
+   Apache Ant
+   Copyright 1999-2013 The Apache Software Foundation
+
+   The <sync> task is based on code Copyright (c) 2002, Landmark
+   Graphics Corp that has been kindly donated to the Apache Software
+   Foundation.
+ - repo/commons-beanutils-1.7.0.jar in asterix/asterix-server-0.8.8-incubating-binary-assembly.zip
+
+    This product includes software developed by
+    The Apache Software Foundation (http://www.apache.org/).
+
+ - repo/commons-beanutils-core-1.8.0.jar in asterix/asterix-server-0.8.8-incubating-binary-assembly.zip
+    Apache Commons BeanUtils
+
+    Copyright 2000-2008 The Apache Software Foundation
+
+
+    This product includes software developed by
+
+    The Apache Software Foundation (http://www.apache.org/).
+
+ - repo/commons-cli-1.2.jar in asterix/asterix-server-0.8.8-incubating-binary-assembly.zip
+   and .installer/hadoop-0.20.2/lib/commons-cli-1.2.jar
+
+    Apache Commons CLI
+    Copyright 2001-2009 The Apache Software Foundation
+
+    This product includes software developed by
+    The Apache Software Foundation (http://www.apache.org/).
+
+ - repo/commons-codec-1.4.jar in asterix/asterix-server-0.8.8-incubating-binary-assembly.zip
+
+    Apache Commons Codec
+
+    Copyright 2002-2009 The Apache Software Foundation
+
+
+
+    This product includes software developed by
+
+    The Apache Software Foundation (http://www.apache.org/).
+
+
+ - repo/commons-collections-3.2.1.jar in asterix/asterix-server-0.8.8-incubating-binary-assembly.zip
+
+    Apache Commons Collections
+
+    Copyright 2001-2008 The Apache Software Foundation
+
+
+
+    This product includes software developed by
+
+    The Apache Software Foundation (http://www.apache.org/).
+
+ - repo/commons-compress-1.4.1.jar in asterix/asterix-server-0.8.8-incubating-binary-assembly.zip
+
+    Apache Commons Compress
+    Copyright 2002-2012 The Apache Software Foundation
+
+    This product includes software developed by
+    The Apache Software Foundation (http://www.apache.org/).
+     - repo/commons-configuration-1.6.jar in asterix/asterix-server-0.8.8-incubating-binary-assembly.zip
+    Apache Commons Configuration
+
+    Copyright 2001-2008 The Apache Software Foundation
+
+
+
+    This product includes software developed by
+
+    The Apache Software Foundation (http://www.apache.org/).
+
+ - repo/commons-daemon-1.0.13.jar in asterix/asterix-server-0.8.8-incubating-binary-assembly.zip
+
+    Apache Commons Daemon
+    Copyright 1999-2013 The Apache Software Foundation
+
+    This product includes software developed by
+    The Apache Software Foundation (http://www.apache.org/).
+     - repo/commons-digester-1.8.jar in asterix/asterix-server-0.8.8-incubating-binary-assembly.zip
+    Apache Jakarta Commons Digester
+
+    Copyright 2001-2006 The Apache Software Foundation
+
+
+
+    This product includes software developed by
+
+    The Apache Software Foundation (http://www.apache.org/).
+
+ - repo/commons-io-2.4.jar in asterix/asterix-server-0.8.8-incubating-binary-assembly.zip
+   and lib/commons-io-2.4.jar
+
+    Apache Commons IO
+
+    Copyright 2002-2012 The Apache Software Foundation
+
+
+
+    This product includes software developed by
+
+    The Apache Software Foundation (http://www.apache.org/).
+
+
+
+ - repo/commons-lang-2.5.jar in asterix/asterix-server-0.8.8-incubating-binary-assembly.zip
+
+    Apache Commons Lang
+
+    Copyright 2001-2010 The Apache Software Foundation
+
+
+
+    This product includes software developed by
+
+    The Apache Software Foundation (http://www.apache.org/).
+
+ - repo/commons-lang3-3.1.jar in asterix/asterix-server-0.8.8-incubating-binary-assembly.zip
+
+    Apache Commons Lang
+    Copyright 2001-2011 The Apache Software Foundation
+
+    This product includes software developed by
+    The Apache Software Foundation (http://www.apache.org/).
+
+    This product includes software from the Spring Framework,
+    under the Apache License 2.0 (see: StringUtils.containsWhitespace())
+
+ - repo/commons-logging-api-1.0.4.jar in asterix/asterix-server-0.8.8-incubating-binary-assembly.zip
+
+    This product includes software developed by
+    The Apache Software Foundation (http://www.apache.org/).
+
+ - .installer/hadoop-0.20.2/lib/commons-logging--1.0.4.jar
+
+    This product includes software developed by
+    The Apache Software Foundation (http://www.apache.org/).
+
+ - repo/commons-math-2.1.jar in asterix/asterix-server-0.8.8-incubating-binary-assembly.zip
+
+    Apache Commons Math
+    Copyright 2001-2010 The Apache Software Foundation
+
+    This product includes software developed by
+    The Apache Software Foundation (http://www.apache.org/).
+
+    ===============================================================================
+    The LinearConstraint, LinearObjectiveFunction, LinearOptimizer,
+    RelationShip, SimplexSolver and SimplexTableau classes in package
+    org.apache.commons.math.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.math.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.math.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 EigenDecompositionImpl class in package
+    org.apache.commons.math.linear includes software translated
+    from some LAPACK Fortran routines.  Original source copyright:
+    Copyright (c) 1992-2008 The University of Tennessee.  All rights reserved.
+    ===============================================================================
+
+    The MersenneTwister class in package org.apache.commons.math.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 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.
+
+ - repo/commons-net-3.1.jar in asterix/asterix-server-0.8.8-incubating-binary-assembly.zip
+
+    Apache Commons Net
+
+    Copyright 2001-2012 The Apache Software Foundation
+
+
+
+    This product includes software developed by
+
+    The Apache Software Foundation (http://www.apache.org/).
+
+
+
+ - repo/datanucleus-api-jdo-3.2.6.jar in asterix/asterix-server-0.8.8-incubating-binary-assembly.zip
+
+    =========================================================================
+    ==  NOTICE file corresponding to section 4(d) of the Apache License,   ==
+    ==  Version 2.0, in this case for the DataNucleus distribution.        ==
+    =========================================================================
+
+    ===================================================================
+    This product includes software developed by many individuals,
+    including the following:
+    ===================================================================
+    Erik Bengtson
+    Andy Jefferson
+
+
+    ===================================================================
+    This product has included contributions from some individuals,
+    including the following:
+    ===================================================================
+
+ - repo/datanucleus-core-3.2.10.jar in asterix/asterix-server-0.8.8-incubating-binary-assembly.zip
+
+    =========================================================================
+    ==  NOTICE file corresponding to section 4(d) of the Apache License,   ==
+    ==  Version 2.0, in this case for the DataNucleus distribution.        ==
+    =========================================================================
+
+    ===================================================================
+    This product includes software developed by many individuals,
+    including the following:
+    ===================================================================
+    Erik Bengtson
+    Andy Jefferson
+
+
+    ===================================================================
+    This product has included contributions from some individuals,
+    including the following:
+    ===================================================================
+    Joerg von Frantzius
+    Thomas Marti
+    Barry Haddow
+    Marco Schulze
+    Ralph Ullrich
+    David Ezzio
+    Brendan de Beer
+    David Eaves
+    Martin Taal
+    Tony Lai
+    Roland Szabo
+    Marcus Mennemeier
+    Xuan Baldauf
+    Eric Sultan
+
+
+    ===================================================================
+    This product also includes software developed by the TJDO project
+    (http://tjdo.sourceforge.net/).
+    ===================================================================
+
+ - repo/datanucleus-rdbms-3.2.9.jar in asterix/asterix-server-0.8.8-incubating-binary-assembly.zip
+    =========================================================================
+    ==  NOTICE file corresponding to section 4(d) of the Apache License,   ==
+    ==  Version 2.0, in this case for the DataNucleus distribution.        ==
+    =========================================================================
+
+    ===================================================================
+    This product includes software developed by many individuals,
+    including the following:
+    ===================================================================
+    Andy Jefferson
+    Erik Bengtson
+    Joerg von Frantzius
+    Marco Schulze
+
+
+    ===================================================================
+    This product has included contributions from some individuals,
+    including the following:
+    ===================================================================
+    Barry Haddow
+    Ralph Ullrich
+    David Ezzio
+    Brendan de Beer
+    David Eaves
+    Martin Taal
+    Tony Lai
+    Roland Szabo
+    Anton Troshin (Timesten)
+
+
+    ===================================================================
+    This product also includes software developed by the TJDO project
+    (http://tjdo.sourceforge.net/).
+    ===================================================================
+
+    ===================================================================
+    This product also includes software developed by the Apache Commons project
+    (http://commons.apache.org/).
+    ===================================================================
+
+ - repo/groovy-all-2.1.6.jar in asterix/asterix-server-0.8.8-incubating-binary-assembly.zip
+
+    Apache Commons CLI
+    Copyright 2001-2009 The Apache Software Foundation
+
+    This product includes software developed by
+    The Apache Software Foundation (http://www.apache.org/).
+
+ - repo/hive-exec-0.13.0.jar in asterix/asterix-server-0.8.8-incubating-binary-assembly.zip
+
+    Apache Thrift
+    Copyright 2006-2010 The Apache Software Foundation.
+
+    This product includes software developed at
+    The Apache Software Foundation (http://www.apache.org/). 
+
+ - repo/httpclient-4.2.2.jar in asterix/asterix-server-0.8.8-incubating-binary-assembly.zip
+
+    Apache HttpComponents HttpClient
+
+    Copyright 1999-2012 The Apache Software Foundation
+
+
+
+    This product includes software developed by
+
+    The Apache Software Foundation (http://www.apache.org/).
+
+
+ - repo/httpcore-4.2.2.jar in asterix/asterix-server-0.8.8-incubating-binary-assembly.zip
+
+    Apache HttpComponents HttpCore
+
+    Copyright 2005-2012 The Apache Software Foundation
+
+
+
+    This product includes software developed by
+
+    The Apache Software Foundation (http://www.apache.org/).
+
+
+
+    This project contains annotations derived from JCIP-ANNOTATIONS
+
+    Copyright (c) 2005 Brian Goetz and Tim Peierls. See http://www.jcip.net
+
+ - repo/jdo2-api-2.3-20090302111651.jar in asterix/asterix-server-0.8.8-incubating-binary-assembly.zip
+
+    Apache Java Data Objects (JDO)
+    Copyright 2005-2006 The Apache Software Foundation
+
+    This product includes software developed at
+    The Apache Software Foundation (http://www.apache.org/).
+
+ - repo/jdo-api-3.0.1.jar in asterix/asterix-server-0.8.8-incubating-binary-assembly.zip
+
+    Apache Java Data Objects (JDO)
+
+    Copyright 2005-2006 The Apache Software Foundation
+
+
+
+    This product includes software developed at
+
+    The Apache Software Foundation (http://www.apache.org/).
+
+ - repo/libthrift-0.9.0.jar in asterix/asterix-server-0.8.8-incubating-binary-assembly.zip
+
+    Apache Thrift
+    Copyright 2006-2010 The Apache Software Foundation.
+
+    This product includes software developed at
+    The Apache Software Foundation (http://www.apache.org/).
+
+ - repo/netty-3.2.2.Final.jar in asterix/asterix-server-0.8.8-incubating-binary-assembly.zip
+
+                                The Netty Project
+                                =================
+
+    Please visit the Netty web site for more information:
+
+      * http://www.jboss.org/netty/
+
+    Copyright 2009 Red Hat, Inc.
+
+    Red Hat licenses this product to you under the Apache License, version 2.0 (the
+    "License"); you may not use this product 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.jsr177y.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/
+
+ - repo/netty-3.6.2.Final.jar in asterix/asterix-server-0.8.8-incubating-binary-assembly.zip
+
+                                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/
+
+- lib/log4j-1.2.15.jar
+
+    Apache log4j
+    Copyright 2007 The Apache Software Foundation
+
+    This product includes software developed at
+    The Apache Software Foundation (http://www.apache.org/).
+
